تحتوي 46٪ من حزم Python في مستودع PyPI على تعليمات برمجية يحتمل أن تكون غير آمنة

نشرت مجموعة من الباحثين من جامعة توركو (فنلندا) نتائج تحليل الحزم في مستودع PyPI لاستخدام بنيات يحتمل أن تكون خطرة والتي يمكن أن تؤدي إلى ثغرات أمنية. ومن خلال تحليل 197 ألف حزمة، تم تحديد 749 ألف مشكلة أمنية محتملة. 46% من الحزم لديها مشكلة واحدة على الأقل من هذا القبيل. من بين المشاكل الأكثر شيوعًا أوجه القصور المتعلقة بمعالجة الاستثناءات واستخدام الميزات التي تسمح باستبدال التعليمات البرمجية.

ومن بين 749 ألف مشكلة تم تحديدها، تم تصنيف 442 ألفًا (41%) على أنها بسيطة، و227 ألفًا (30%) على أنها مشاكل متوسطة و80 ألفًا (11%) على أنها خطيرة. تبرز بعض الحزم من بين الحشود وتحتوي على آلاف المشكلات: على سبيل المثال، حددت حزمة PyGGI 2589 مشكلة، تتعلق بشكل أساسي باستخدام بنية "try-except-pass"، وعثرت حزمة appengine-sdk على 2356 مشكلة. يوجد أيضًا عدد كبير من المشكلات في حزم genie.libs.ops وpbcore وgenie.libs.parser.

تجدر الإشارة إلى أنه تم الحصول على النتائج بناءً على التحليل الثابت الآلي، والذي لا يأخذ في الاعتبار سياق تطبيق بعض الهياكل. أعرب مطور مجموعة أدوات اللصوص، التي تم استخدامها لمسح الكود، عن رأي مفاده أنه نظرًا للعدد الكبير إلى حد ما من النتائج الإيجابية الخاطئة، لا يمكن اعتبار نتائج المسح نقاط ضعف بشكل مباشر دون مراجعة يدوية إضافية لكل مشكلة.

على سبيل المثال، يعتبر المحلل أن استخدام مولدات الأرقام العشوائية وخوارزميات التجزئة غير الموثوقة، مثل MD5، يمثل مشكلة أمنية، بينما في التعليمات البرمجية يمكن استخدام مثل هذه الخوارزميات لأغراض لا تؤثر على الأمان. يعتبر المحلل أيضًا أي معالجة للبيانات الخارجية في وظائف غير آمنة مثل Pickle وyaml.load والعملية الفرعية والتقييم مشكلة، ولكن هذا الاستخدام لا ينطوي بالضرورة على ثغرة أمنية وفي الواقع يمكن تنفيذ استخدام هذه الوظائف دون تهديد أمني .

ومن الاختبارات المستخدمة في الدراسة:

  • استخدام وظائف من المحتمل أن تكون غير آمنة مثل exec وmktemp وeval وmark_safe وما إلى ذلك.
  • إعداد غير آمن لحقوق الوصول للملفات.
  • توصيل مقبس الشبكة بجميع واجهات الشبكة.
  • استخدام كلمات المرور والمفاتيح المحددة بدقة في الكود.
  • باستخدام دليل مؤقت محدد مسبقًا.
  • استخدام التمرير والمتابعة في معالجات استثناءات نمط الالتقاط؛
  • إطلاق تطبيقات الويب بناءً على إطار عمل الويب Flask مع تمكين وضع التصحيح.
  • استخدام أساليب إلغاء تسلسل البيانات غير الآمنة.
  • يستخدم وظائف التجزئة MD2، MD4، MD5 وSHA1.
  • استخدام شفرات DES وأوضاع التشفير غير الآمنة.
  • استخدام تطبيق HTTPSConnection غير الآمن في بعض إصدارات Python.
  • تحديد الملف:// المخطط في urlopen.
  • استخدام مولدات الأرقام العشوائية الزائفة عند تنفيذ مهام التشفير.
  • باستخدام بروتوكول Telnet.
  • استخدام موزعي XML غير الآمنين.

بالإضافة إلى ذلك، يمكن ملاحظة أنه تم اكتشاف 8 حزم ضارة في دليل PyPI. قبل الإزالة، تم تنزيل الحزم التي بها مشكلات أكثر من 30 ألف مرة. لإخفاء الأنشطة الضارة وتجاوز التحذيرات من المحللين الثابتين البسيطين في الحزم، تم تشفير كتل التعليمات البرمجية باستخدام Base64 وتنفيذها بعد فك التشفير باستخدام استدعاء التقييم.

تحتوي حزم نوبليس وجينيسيسبوت على تعليمات برمجية لاعتراض أرقام بطاقات الائتمان وكلمات المرور المخزنة في متصفحات Chrome وEdge، بالإضافة إلى نقل الرموز المميزة للحساب من تطبيق Discord وإرسال بيانات النظام، بما في ذلك لقطات شاشة لمحتويات الشاشة. تتضمن حزمتي pytagora وpytagora2 القدرة على تحميل وتنفيذ تعليمات برمجية قابلة للتنفيذ من طرف ثالث.

المصدر: opennet.ru

إضافة تعليق