CVE-2026-44827 ایک حملہ آور کو اس وقت اپنی مرضی کا کوڈ (arbitrary code) چلانے کی اجازت دیتا ہے جب Hugging Face Diffusers ماڈل لوڈ کیا جاتا ہے، چاہے trust_remote_code کا فلیگ بند ہی کیوں نہ ہو۔ محققین نے اس خامی کو “FaceHugger” کا نام دیا ہے اور اس کا سراغ لائبریری کے دو مرحلہ وار ماڈل لوڈنگ عمل میں موجود ریس کنڈیشن (race condition) سے لگایا ہے۔ کوئی بھی پائپ لائن جو ہب سے ماڈلز حاصل کرتی ہے، اس سے متاثر ہو سکتی ہے۔
یہ کمزوری کیوں اہم ہے
Diffusers، ٹیکسٹ-ٹو-امیج (text-to-image) اور دیگر ڈیفیوژن ماڈلز کو طاقت فراہم کرتا ہے۔ جولائی 2026 میں اس کے 8.1 ملین ڈاؤن لوڈز ریکارڈ کیے گئے، اس لیے بے شمار CI/CD جابز، کنٹینر امیجز اور انٹرپرائز انفرنس سروسز اس پر انحصار کرتی ہیں۔ یہ بگ اس بنیادی حفاظتی میکانزم (trust_remote_code) کو ناکارہ بنا دیتا ہے جسے ڈویلپرز ماڈل کے ساتھ آنے والے غیر قابل اعتماد Python کوڈ کو روکنے کے لیے استعمال کرتے ہیں۔
بائی پاس (bypass) کیسے کام کرتا ہے
- دو مرحلہ وار لوڈنگ (Two-phase loading): Diffusers پہلے ماڈل کنفیگریشن حاصل کرتا ہے، پھر دوسری درخواست ماڈل کے ویٹس (weights) اور اس سے متعلقہ کوڈ کو کھینچتی ہے۔
- ریس کنڈیشن (Race condition): وہ سیکیورٹی چیک جو پہلی درخواست کا معائنہ کرتا ہے، دوسری درخواست تک محدود نہیں ہے۔
- پے لوڈ کی شمولیت (Payload insertion): ایک حملہ آور جو دوسری درخواست کو کنٹرول کرتا ہے، وہ نقصان دہ کوڈ داخل کر دیتا ہے جسے لائبریری بعد میں چلا دیتی ہے، جس سے ٹرسٹ گیٹ (trust gate) مکمل طور پر بائی پاس ہو جاتا ہے۔
چونکہ چیک صرف ابتدائی درخواست کو دیکھتا ہے، اس لیے trust_remote_code کو غیر فعال کرنا تحفظ کا ایک غلط احساس دلاتا ہے۔
ڈویلپرز کے لیے فوری اقدامات
- Diffusers کے ورژن کو پن (Pin) کریں:
requirements.txtیا اپنی لاک فائل میں Diffusers کے ورژن کو مخصوص کریں تاکہ کسی بھی کمزور ورژن پر حادثاتی اپ گریڈ کو روکا جا سکے۔ - پروڈکشن میں آن دی فلائی (on-the-fly) ماڈل پلز سے گریز کریں: ماڈلز کو کسی قابل اعتماد آرٹفیکٹ اسٹور (مثلاً، ایک انٹرنل S3 bucket) میں ڈاؤن لوڈ کریں اور وہاں سے انہیں لوڈ کریں۔
- ماڈل ریپوزٹریز کا آڈٹ کریں: استعمال سے پہلے ماڈل ریپوزٹریز کا معائنہ کریں۔ اس بات کی تصدیق کریں کہ ماڈل کی کوڈ فائلیں مطلوبہ ہیشز (hashes) سے مطابقت رکھتی ہیں یا کسی مستند ذریعے سے آئی ہیں۔
- نیٹ ورک ایگریس (egress) کنٹرولز نافذ کریں: تاکہ بلڈ ایجنٹس اور انفرنس سرورز پبلک Hugging Face ہب تک نہ پہنچ سکیں جب تک کہ آپ اس کی اجازت نہ دیں۔
- ماڈل لوڈنگ کو الگ تھلگ کنٹینرز یا سینڈ باکسز (sandboxes) کے اندر چلائیں: کم سے کم اختیارات (privileges) کے ساتھ ماڈل لوڈنگ کریں تاکہ غیر متعلقہ کوڈ کے چلنے کے اثرات کو محدود کیا جا سکے۔
خلاصہ:
FaceHugger بگ ظاہر کرتا ہے کہ trust_remote_code کو بند کرنا کافی نہیں ہے۔ جب تک آپ Diffusers کو اپ ڈیٹ نہیں کرتے اور اپنے ماڈل انجیشن پائپ لائن (model ingestion pipeline) کو مضبوط نہیں کرتے، ہر ریموٹ ماڈل پل نقصان دہ کوڈ کے لیے ایک ممکنہ راستہ بنا رہے گا۔
