حزمة تسمى torchtriton تم تحميله إلى مستودع كود Python Package Index (PyPI)، بنفس اسم الحزمة المشحونة على مؤشر الحزمة الليلية PyTorch. نظرًا للطريقة التي يتعامل بها pip (نظام إدارة الحزم لـ Python) مع تثبيت الحزمة، تم تثبيت الإصدار الضار افتراضيًا، بدلاً من الإصدار الشرعي من المستودع الرسمي. وهذا يعني أن أي شخص قام بتنزيل الإصدار الليلي في الفترة ما بين 25 ديسمبر 2022 و30 ديسمبر 2022 قد أصاب جهازه. يُنصح فرق الأمان بالبحث عن الموارد الملوثة وتدوير أي مفاتيح تم اكتشافها.
منشئ الحزمة المنسوخة لديه ذكر لم يكن لديهم أي نية خبيثة وقاموا منذ ذلك الحين بحذف جميع البيانات التي تم جمعها. نظرًا لعدم التحقق من هذا الادعاء، لا يزال يوصى بشدة بإلغاء تثبيت الحزمة إذا تم تثبيت الإصدار الليلي خلال الفترة ذات الصلة وإلغاء أي أسرار تم تخزينها على الموارد المتأثرة.
النسخة الضارة من torchtriton تمت إزالته في النهاية من PyPi واستبداله بحزمة العنصر النائب المسماة pytorch-triton.
ارتباك التبعية هو أسلوب يستخدم لاستغلال سلسلة توريد البرامج عن طريق حقن تعليمات برمجية غير مرغوب فيها ومن المحتمل أن تكون ضارة عبر مديري الحزم ومستودعات التعليمات البرمجية الضعيفة.
يمكن أن تكون المشاريع مفتوحة المصدر عرضة لهجمات ارتباك التبعية نتيجة التكوينات الخاطئة، لا سيما إذا أدرجت إصداراتها الداخلية من الحزم كتبعيات ولكنها لا تطالب بإصدارات وهمية أو مساحات أسماء في المستودعات العامة. على سبيل المثال، تم حذف حزمتي npm التي كانت تستخدمها AWS سابقًا وتم حذفها لاحقًا تم استعادتها من قبل المهاجمين واستبدالها بإصدارات مزيفة تحقن تعليمات برمجية ضارة لتصفية معلومات المستخدم.
في هذه الحالة، حزمة تسمى torchtriton تم تحميله إلى مستودع PyPi بنفس اسم الحزمة المشحونة على فهرس الحزمة الليلية PyTorch. استغل المهاجم سلوك النقطة، والذي يعطي الأولوية للحزم المدرجة في PyPi على الإصدارات الأخرى المتاحة عند استخدام extra-index-url دعوى.
تم تنزيل الحزمة 3000 مرة قبل أن تتم إزالته، في حين أن حزمة PyTorch الرئيسية torch الذي يفتقر إلى التعليمات البرمجية الضارة تم تنزيله تقريبًا 1.5 مليون مرة خلال نفس الفترة.
ال torchtriton تختلف الحزمة التي تم تحميلها إلى مستودع PyPI عن الإصدار الشرعي من حيث أنها تحتوي على برنامج ثنائي ضار يسمى triton الذي تم تثبيته في المسار PYTHON_SITE_PACKAGES/triton/runtime/triton.
يبدو أن البرنامج الثنائي الضار مصمم لجمع المعلومات من الأنظمة المستهدفة، بما في ذلك ما يلي:
-
خوادم الأسماء من
/etc/resolv.conf -
اسم المضيف من
gethostname() -
اسم المستخدم الحالي من
getlogin() -
اسم دليل العمل الحالي من
getcwd() -
متغيرات البيئة
بالإضافة إلى ذلك، يقوم بنسخ المعلومات من الملفات التالية:
تقوم البرامج الضارة بعد ذلك بتحميل كل هذه المعلومات، بما في ذلك محتويات الملف، عبر نفق DNS إلى المجال .h4ck[.]cfd باستخدام خادم DNS wheezy[.]io.
-
تجزئة SHA256 للحزمة الضارة –
2385b29489cd9e35f92c072780f903ae2e517ed422eae67246ae50a5cc738a0e -
تجزئة SHA1 للحزمة الضارة –
9c89731a94dd4f2a594a22c1b171cb6c20f55e41
تم تثبيت PyTorch ليلاً على نظام Linux عبر نقطة في الفترة ما بين 25 ديسمبر 2022 و30 ديسمبر 2022.
لا يتأثر مستخدمو حزم PyTorch المستقرة بهذه المشكلة.
أوصى مطورو PyTorch باستخدام الأمر التالي للتحقق مما إذا كان الملف الثنائي الضار قد تم تضمينه في ملف torchtriton الحزمة في بيئة بايثون الحالية الخاصة بك:
python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton'); affected=any(x.name == 'triton' for x in (pathlib.Path(s.submodule_search_locations[0] if s is not None else "https://www.wiz.io/" ) / 'runtime').glob('*'));print('You are {}affected'.format('' if affected else 'not '))
لاحظ أن البرنامج الثنائي الضار يتم تنفيذه فقط عند استيراد حزمة triton، الأمر الذي يتطلب تعليمات برمجية صريحة ولا يعكس سلوك PyTorch الافتراضي.
إذا كنت تشك في تأثر بيئتك، فيمكنك تشغيل هذه الأوامر لإزالة تثبيت الحزمة:
$ pip3 uninstall -y torch torchvision torchaudio torchtriton
$ pip3 cache purge
ننصح المنظمات المتأثرة بذلك ابحث عن الأسرار في أي موارد متأثرة وقم بتدوير أي مفاتيح تم اكتشافها.
يمكن لعملاء Wiz استخدام الاستعلام المبني مسبقًا والاستشارات في Wiz Threat Center للبحث عن الحالات المصابة في بيئتهم.
استشارة PyTorch
