ماذا حدث
رصد باحثو شركة Obsidian Security سلسلة من ثلاث ثغرات أمنية في بوابة الذكاء الاصطناعي المفتوحة المصدر LiteLLM، تمكّن مستخدماً يحمل صلاحيات عادية من الوصول إلى صلاحيات المدير الكاملة وتنفيذ أوامر اختيارية على الخادم المضيف. حصلت السلسلة المتكاملة على تقييم 9.9 وفق معيار CVSS، وهو ما يضعها في النطاق الحرج. أصدر المطوّر BerriAI الإصلاح الكامل ضمن الإصدار v1.83.14-stable الذي طرحه على GitHub في الثاني من مايو 2026.
التفاصيل
تعمل LiteLLM بوصفها بوابة موحّدة متوافقة مع واجهة OpenAI، تتوسط الاتصالات مع أكثر من 100 مزوّد نماذج ذكاء اصطناعي. هذا الموقع المحوري هو ما يجعل استغلالها بالغ الأثر.
### الثغرة الأولى: تجاوز التفويض (CVE-2026-47101)
تكمن الحلقة الأولى في تجاوز التفويض (Authorization Bypass)؛ إذ يستطيع المستخدم العادي عند إنشائه مفتاح API افتراضياً تمرير الحقل `allowed_routes` دون أن يخضع للتحقق من صلاحيات دوره. يُفترض بهذا الحقل تضييق نطاق ما يمكن للمفتاح فعله، غير أن البوابة تتعامل معه أيضاً بوصفه منحاً احتياطياً، فيكفي تمرير `allowed_routes: ["/*"]` للوصول إلى جميع المسارات بما فيها المخصصة للمدير.
### الثغرة الثانية: رفع الصلاحيات (CVE-2026-47102)
بعد تجاوز بوابة المسار، يصبح الوصول إلى نقطة `/user/update` ممكناً. هذه النقطة تسمح للمستخدم بتعديل سجل حسابه دون تقييد الحقول القابلة للكتابة، ما يعني أن إرسال `user_role: "proxy_admin"` يُقبل ويُحفظ، ويترقّى المستخدم على الفور إلى مدير كامل الصلاحيات. قيّمت VulnCheck هذه الثغرة بـ 8.8 وفق CVSS 3.1.
### الثغرة الثالثة: الهروب من البيئة المعزولة (CVE-2026-40217)
تتمحور الثغرة الثالثة حول الهروب من البيئة المعزولة (Sandbox Escape) في ميزة Custom Code Guardrail التي تُصرِّف وتُنفِّذ كود Python. كانت نقاط الإنتاج تمرّر الكود عبر `exec()` دون فلترة، وحين يُستدعى `exec()` بقاموس globals خالٍ من `__builtins__`، تُدرج Python تلقائياً وحدة builtins الكاملة، مما يتيح استخدام `__import__` و`open` وغيرهما. وقد أثبت الباحثون أن استدعاءً بسيطاً لـ `os.system` كافٍ للحصول على reverse shell. كما رصدت شركة X41 D-Sec بشكل مستقل مساراً بديلاً عبر نقطة اختبار `/guardrails/test_custom_code` يتحايل على قائمة رفض regex من خلال إعادة كتابة bytecode أثناء التشغيل.
### الاستغلال التوضيحي ضد Claude Code
ما يُعمّق الخطورة أن Obsidian أثبتت إمكانية استغلال البوابة المخترقة لتزوير ردود النموذج في الوقت الفعلي عبر آلية callback المدمجة في LiteLLM، وهي آلية لا تظهر في واجهة الإدارة. في التجربة التوضيحية، كتب المطوّر كلمة واحدة للنموذج، فاعترض المهاجم الرد، واستبدله باستدعاء أداة مزوّر أدى إلى تنفيذ reverse shell على جهاز المطوّر. هذا ليس هجوم حقن موجّه (Prompt Injection)، بل سيطرة مباشرة على طبقة البنية التحتية.
### سياق أشمل
تُشير الأبحاث إلى أن LiteLLM مرّت بسلسلة حوادث أمنية خلال 2026: في مارس تعرّضت إصدارتان على PyPI لاختراق سلسلة التوريد (Supply-Chain Compromise)، وفي أبريل استُغلّت ثغرة حقن SQL حرجة خلال 36 ساعة من الكشف عنها. فضلاً عن ذلك، أُدرجت ثغرة منفصلة (CVE-2026-42271) في قاموس الثغرات المستغلة التابع لوكالة CISA الأمريكية بعد استغلالها فعلياً.
لماذا يهمّك
تقع LiteLLM في نقطة تقاطع حرجة بين التطبيقات ونماذج الذكاء الاصطناعي، لذا فإن اختراقها لا يعني مجرد تسريب بيانات. يحصل المهاجم على المفتاح الرئيسي (Master Key)، ومفتاح التشفير (Salt Key)، وبيانات اعتماد قاعدة البيانات، وجميع مفاتيح المزوّدين كـ OpenAI وAnthropic وGemini وAzure وBedrock وسواها. كما يطّلع على كل ما يمر عبر البوابة من مطالبات وردود قد تحتوي على بيانات شخصية وكود مصدري وأسرار تجارية. والأخطر أنه يملك القدرة على تحريف ما تُقرره وكلاء الذكاء الاصطناعي بناءً على ردود مزوّرة.
توصيات
- **الترقية الفورية** إلى الإصدار v1.83.14-stable أو أحدث للحصول على الإصلاح الكامل للثغرات الثلاث.
- **مراجعة الحسابات**: التحقق من كل حساب يحمل صلاحية `proxy_admin` ومعاملة هذا الدور بوصفه وصولاً كاملاً على مستوى الخادم.
- **فحص Guardrails المخصصة**: مراجعة كل Custom Code Guardrail مُفعَّل على البوابة.
- **تدقيق الإجراءات الخلفية (Callbacks)**: فحص الـ callbacks المحمّلة عبر ملف config.yaml تحت `litellm_settings.callbacks`، إذ لا تظهر في واجهة الإدارة وهي المكان المفضّل لإخفاء الأدوات الخبيثة بعد الاختراق.
- **التحقق من سلامة الكود المنشور** وليس الاكتفاء بمراجعة الإعدادات.
- **تدوير بيانات الاعتماد**: في حال الاشتباه بأي اختراق، يجب استبدال مفاتيح المزوّدين وبيانات اعتماد قاعدة البيانات وأي رموز MCP مخزّنة فوراً.




