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

باحثون من جامعة توركو (فنلندا) معروفة مؤخرا نتائج التحليل فعلوا للحزم في المستودع بواسطة PyPI لاستخدام الإنشاءات التي يحتمل أن تكون خطرة والتي يمكن أن تولد نقاط ضعف. في التحليل أن تم تنفيذ حوالي 197.000 طرد وتم تحديد 749.000 مشكلة أمنية محتملة.

بعبارة أخرى ، 46٪ من الحزم بها واحدة على الأقل من هذه المشاكل ، ومن بين المشاكل الأكثر شيوعًا تلك المتعلقة بمعالجة الاستثناءات واستخدام إمكانيات استبدال الكود.

من بين 749 ألف مشكلة تم تحديدها 442 ألف (41٪) تم تصنيفهم على أنهم قاصرون، 227 ألف (30٪) متوسطة الخطورة و 80 ألفا (11٪) خطيرة.

تستند مجموعة البيانات إلى لقطة لجميع الحزم المخزنة في Python Package Index (PyPI) ...

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

بعض الحزم خارجة عن المألوف وتحتوي على آلاف المشاكل: على سبيل المثال ، تم العثور على 2589 مشكلة في حزمة PyGGI ، تتعلق بشكل أساسي باستخدام بنية "try-except-pass" ، وتم العثور على 2356 مشكلة في حزمة appengine-sdk. هناك أيضًا الكثير من المشكلات في حزم genie.libs.ops و pbcore و genie.libs.parser.

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

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

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

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

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

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

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

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

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.