حدد الباحثون الأمنيون هجومًا على سلسلة التوريد يستهدف إصدارات النشر لحزمة Ultralytics Python. الإصدارات المخترقة، 8.3.41 و 8.3.42تحتوي على تعليمات برمجية ضارة تنفذ برنامجًا غير مصرح به لتعدين العملات المشفرة (XMRig) على الأجهزة المتضررة. كان هذا التسوية مقتصرًا على إصدارات الحزمة التي تستضيفها PyPI، وتبقى الإصدارات المحلية أو السابقة غير متأثرة. تمت إزالة الإصدارات الضارة منذ ذلك الحين من PyPI لمنع المزيد من الاستغلال. Ultralytics هي مكتبة مشهورة للتنبؤ بصور الذكاء الاصطناعي تضم أكثر من 33 ألف نجم على GitHub وتعتمد على العديد من الحزم، بما في ذلك ملحق ComfyUI Impact Pack الشهير، مما يجعلها عرضة للخطر أيضًا.
لماذا هذا مثير للاهتمام؟
إن تسوية الحزمة المستضافة بواسطة PyPI ليست جديدة. الأمر المثير للاهتمام في هذه الحالة هو الطريقة التي تم بها اختراق الحزمة – عبر سير عمل CI/CD. حتى وقت قريب، تم تنفيذ معظم التنازلات المتعلقة بـ VCS (نظام التحكم في الإصدار) – وCI/CD بواسطة باحثين في مجال الأمن (على سبيل المثال، على عينات شريطية، PyTorch، GitHub Runner Images، وما إلى ذلك).
وحتى اختراق XZ-Utils سيئ السمعة تم تنفيذه بواسطة ما يمكن اعتباره “تهديدًا داخليًا”، وهو شخص كان لديه حق الوصول للكتابة إلى رمز المستودع بالفعل. على النقيض من ذلك، تعد هذه واحدة من أولى الحالات المعروفة علنًا حيث تمكن ممثل خبيث خارجي من تعديل حزمة الإصدار التي وصلت في النهاية إلى نظام PyPI البيئي. ومن الجدير بالملاحظة أيضًا أنه تم التنبيه على اكتشاف الاختراق أولاً على الحزمة التابعة ComfyUI، وليس على الهدف الأصلي المخترق Ultralytics.
ماذا حدث؟
استهدف هجوم سلسلة التوريد Ultralytics، وهي مكتبة مشهورة جدًا ومضمنة في العديد من حزم الذكاء الاصطناعي بما في ذلك ComfyUI Impact Pack. تلاعب المهاجم بإجراءات GitHub من خلال استغلال أسماء الفروع في طلبات السحب لتنفيذ تعليمات برمجية عشوائية، وتجميع عامل التشفير في الحزمة. تم أيضًا اختراق إصدار “تخفيفي” لاحق من Ultralytics، مما أدى إلى تصعيد المخاطر بالنسبة للمستخدمين الذين ربما قاموا بالتحديث إلى الإصدار الجديد وافترضوا أنهم آمنون.
كيف حدث هذا بالضبط؟
تتمتع Ultralytics ببنية أساسية واسعة النطاق لـ CI/CD تضم 11 سير عمل مختلفًا تدير عشرات المهام كل ساعة. ربما ساهم هذا في حقيقة أن التغيير الضار لم يتم ملاحظته على الفور وتم شحن نسختين من حزمة Ultralytics بنجاح وتم نقلهما إلى سجل PyPI.
في 4 ديسمبر 2024، قام مستخدم GitHub بتسمية com.openimbot فتح طلبي سحب مسودة غريبي المظهر. كان الغرض من هذه العلاقات العامة هو استغلال الثغرة الأمنية التي كانت مشابهة لتلك التي تم الإبلاغ عنها سابقًا على أنها تؤثر على سير عمل مختلف في نفس المؤسسة (Ultralytics) ولكن في مستودع مختلف (Ultralytics/actions). في قلب العلاقات العامة الضارة كان هناك سير العمل الضعيف “Publish Docs” الذي يعمل عند كل عملية إنشاء علاقات عامة (من بين مشغلات أخرى):
pull_request:
branches: [main]
على وجه التحديد، من الأفضل رؤية الأسطر الضعيفة من التعليمات البرمجية عند تحليل الإصلاح اللاحق بواسطة مشرفي الحزم:
في هذه الحالة، github.head_ref هو اسم فرع الكود المصدري المفتوح باستخدام PR. عند العلاج github.head_ref كسلسلة وبدون تعقيم الإدخال، استخدم سير العمل اسم الفرع الضار الذي تم توفيره بواسطة com.openimbot في العلاقات العامة المذكورة أعلاه:
تقوم حمولة اسم الفرع هذه، عند تنفيذها بواسطة المهمة، بنقل محتوى file.sh في جلسة باش. الطريقة التي يتم بها إنشاء الحمولة (باستخدام تدوين bash بين قوسين و $IFS متغير الصدفة الخاص) يتم تفسيره بحقيقة أن اسم الفرع، لكي يكون صالحًا، يجب ألا يحتوي على أي مسافات. في الواقع، هذه تقنية شائعة تستخدم لتجاوزات WAF. محتوى file.sh غير متوفر حاليًا، ولكن يمكننا التكهن بأنه يحتوي على تعليمات للتحقق من التغييرات الضارة في الملفين التاليين:
والنتيجة النهائية واضحة في هذه المشكلة التي أثارها مستخدم Ultralytics الذي لاحظ التناقض.
من المفاجئ إلى حد ما رؤية هذه الإجراءات الضارة التي يتم تنفيذها بواسطة حساب GitHub مؤسس له تاريخ طويل من المساهمات. بعد كل شيء، يعد فتح حساب GitHub مؤقتًا أمرًا شائعًا جدًا ويسهل تحقيقه، في حين أن إنشاء شخصية موثوقة والحفاظ عليها على مدى فترة طويلة من الزمن هو أمر أكثر صعوبة قليلاً. ومع ذلك، فمن المحتمل جدًا أن يكون هذا الحساب شرعيًا وقد تم اختراقه بطريقة أو بأخرى من قبل جهة فاعلة ضارة من أجل شن هجمات على سلسلة التوريد مثل هذه.
بيانات Wiz Research: ما المخاطر التي تتعرض لها البيئات السحابية؟
استنادًا إلى بياناتنا، يمكن العثور على Ultralytics نفسها في 10% من البيئات السحابية، مما يدل على سطح الهجوم القيم الذي كان هجوم سلسلة التوريد هذا يهدف إلى استغلاله.
ما هي المنتجات التي تتأثر؟
Ultralytics في الإصدارات 8.3.41 و 8.3.42 تحتوي على تعليمات برمجية ضارة. الإصدارات اللاحقة آمنة للاستخدام.
ما هي الإجراءات التي يجب على فرق الأمن اتخاذها؟
يُنصح بشدة المستخدمين الذين قاموا بتثبيت هذه الإصدارات بإلغاء تثبيت الحزمة على الفور واستعادة الأنظمة المتأثرة إلى حالة نظيفة معروفة مسبقًا، مع مراقبة أي دليل على تعدين العملات المشفرة على الأنظمة المتأثرة.
يمكن لعملاء Wiz استخدام الاستعلام والاستشارات المعدة مسبقًا في Wiz Threat Intel Center للبحث عن المثيلات المتأثرة في بيئتهم:
مراجع
