كشف باحثون في مجال الأمن السيبراني عن ثغرة أمنية محتملة في حزم بايثون قديمة، مما يفتح الباب أمام اختراق سلاسل التوريد لـ PyPI عبر الاستيلاء على النطاق. هذه الثغرة، التي تم اكتشافها في ملفات التمهيد (bootstrap files) لأداة zc.buildout، تمثل تحدياً جديداً لأمن المطورين.
تتعلق المشكلة الرئيسية بوجود سكريبت تمهيدي قديم (“bootstrap.py”) كان يُستخدم مع أداة zc.buildout لإعداد بيئة البناء. كان هذا السكريبت يدعم أيضاً تثبيت أداة إدارة الحزم “Distribute” التي كانت بديلاً مؤقتاً لـ Setuptools، وذلك من خلال جلبها من الموقع python-distribute[.]org.
ثغرة الاستيلاء على النطاق في حزم بايثون القديمة
يشرح الباحثون أن سكريبتات التمهيد تعمل على أتمتة عملية تنزيل وبناء وتثبيت المكتبات والأدوات المطلوبة. عند تشغيل سكريبت التمهيد، يقوم بجلب وتنفيذ سكريبت لتثبيت حزمة Distribute من دومين python-distribute[.]org.
هذا الدومين، الذي تم طرحه للبيع منذ عام 2014، أصبح متاحاً الآن. ويكمن الخطر في أن العديد من حزم PyPI لا تزال تتضمن سكريبت التمهيد هذا.
تفاصيل الثغرة الأمنية
كانت حزمة Distribute قد ظهرت في وقت كان فيه مشروع Setuptools يعاني من قلة التحديثات. ومع ذلك، تم دمج الميزات الجديدة لـ Distribute مرة أخرى في Setuptools عام 2013، مما جعل Distribute غير ضرورية.
تتمثل المشكلة التي رصدتها ReversingLabs في استمرار العديد من الحزم في شحن سكريبت التمهيد الذي يحاول تثبيت Distribute افتراضياً، أو عند تحديد خيار معين في سطر الأوامر. هذا، بالإضافة إلى إمكانية الاستيلاء على الدومين، يعرّض المستخدمين لخطر camouflaging.
عندما يتم تشغيل سكريبت التمهيد عن غير قصد، يمكن للمهاجم استغلال هذا الوضع لتقديم رموز خبيثة، مما قد يؤدي إلى سرقة بيانات حساسة.
الحزم المتأثرة والإجراءات المتخذة
من بين الحزم المتأثرة نذكر tornado، pypiserver، slapos.core، roman، xlutils، و testfixtures. في حين اتخذت بعض الحزم خطوات لإزالة سكريبت التمهيد، لا تزال حزمة slapos.core تتضمن الرمز الضعيف، وكذلك في إصدارات التطوير والصيانة من Tornado.
من المهم الإشارة إلى أن سكريبت التمهيد لا يتم تشغيله تلقائياً عند تثبيت الحزمة. كما أنه مكتوب بلغة Python 2، مما يعني أنه لا يمكن تشغيله باستخدام Python 3 دون تعديلات. ومع ذلك، فإن مجرد وجود الملف يمثل “سطح هجوم غير ضروري” يمكن للمهاجمين استغلاله إذا تم خداع المطورين لتشغيل كود يؤدي إلى تنفيذ سكريبت التمهيد.
السوابق والتهديدات المستمرة
تهديد الاستيلاء على النطاق ليس نظرياً. ففي عام 2023، وردت أنباء عن اختراق الحزمة npm fsevents. تمكن مهاجم من السيطرة على مورد سحابي غير مطالب به لدفع ملفات تنفيذية خبيثة للمستخدمين الذين يقومون بتثبيت نسخ معينة من الحزمة (CVE-2023-45311، درجة CVSS: 9.8).
وصرح الباحث الأمني فلاديمير بيزو أن المشكلة تكمن في نمط البرمجة الذي يتضمن جلب وتنفيذ حمولة من دومين ثابت، وهو نمط شائع في البرامج الضارة التي تعمل كـ “downloader”. فشل إلغاء الحزمة Distribute بشكل رسمي سمح لبقاء سكريبتات التمهيد الضعيفة، مما ترك عدداً غير معروف من المشاريع معرضة لخطر محتمل.
يأتي هذا الكشف في الوقت الذي اكتشفت فيه HelixGuard حزمة ضارة في PyPI باسم “spellcheckers”، تدعي أنها أداة للتحقق من الأخطاء الإملائية باستخدام OpenAI Vision، لكنها تحتوي على رمز خبيث مصمم للاتصال بخادم خارجي وتنزيل حمولة مرحلية ثانية، والتي تقوم بتنفيذ حصان طروادة وصول عن بعد (RAT).
تم تحميل الحزمة، التي تم تحميلها لأول مرة على PyPI في 15 نوفمبر 2025، 955 مرة، ولم تعد متاحة للتنزيل. يمكن لهذا RAT تلقي أوامر عن بعد وتنفيذ كود بايثون يتحكم فيه المهاجم عبر exec()، مما يتيح التحكم الكامل عن بعد في جهاز الضحية.

