PyPI omboridagi Python paketlarining 46% potentsial xavfli kodni o'z ichiga oladi

Turku universiteti (Finlyandiya) tadqiqotchilari guruhi zaifliklarga olib kelishi mumkin bo‘lgan potentsial xavfli konstruksiyalardan foydalanish bo‘yicha PyPI omboridagi paketlar tahlili natijalarini e’lon qildi. 197 ming paketni tahlil qilish davomida 749 ming potentsial xavfsizlik muammosi aniqlandi. 46% paketlarda kamida bitta shunday muammo bor. Eng ko'p uchraydigan muammolar qatoriga istisnolardan foydalanish va kodni almashtirish imkonini beruvchi xususiyatlardan foydalanish bilan bog'liq kamchiliklar mavjud.

Aniqlangan 749 ming muammoning 442 mingtasi (41%) kichik, 227 mingtasi (30%) oʻrtacha va 80 mingtasi (11%) xavfli deb belgilandi. Ba'zi paketlar olomondan ajralib turadi va minglab muammolarni o'z ichiga oladi: masalan, PyGGI to'plami 2589 muammoni aniqladi, bu asosan "try-except-pass" konstruktsiyasidan foydalanish bilan bog'liq va appengine-sdk to'plami 2356 muammoni aniqladi. Genie.libs.ops, pbcore va genie.libs.parser paketlarida ham ko'p sonli muammolar mavjud.

Shuni ta'kidlash kerakki, natijalar ma'lum tuzilmalarni qo'llash kontekstini hisobga olmaydigan avtomatlashtirilgan statik tahlil asosida olingan. Kodni skanerlashda foydalanilgan bandit asboblar to'plamini ishlab chiquvchisi, noto'g'ri pozitivlarning juda ko'pligi sababli, har bir masalani qo'shimcha ravishda qo'lda ko'rib chiqmasdan turib, skanerlash natijalarini bevosita zaiflik deb hisoblash mumkin emas degan fikrni bildirdi.

Masalan, analizator ishonchsiz tasodifiy sonlar generatorlari va MD5 kabi xeshlash algoritmlaridan foydalanishni xavfsizlik muammosi deb hisoblaydi, kodda esa bunday algoritmlar xavfsizlikka ta'sir qilmaydigan maqsadlarda qo'llanilishi mumkin. Analizator shuningdek, pikle, yaml.load, subprocess va eval kabi xavfli funktsiyalarda tashqi ma'lumotlarni qayta ishlashni muammo deb hisoblaydi, ammo bu foydalanish zaiflikni o'z ichiga olmaydi va aslida bu funksiyalardan foydalanish xavfsizlikka tahdidsiz amalga oshirilishi mumkin. .

Tadqiqotda qo'llaniladigan testlar orasida:

  • Exec, mktemp, eval, mark_safe va boshqalar xavfli bo'lishi mumkin bo'lgan funktsiyalardan foydalanish.
  • Fayllarga kirish huquqlarining xavfsiz o'rnatilishi.
  • Tarmoq soketini barcha tarmoq interfeyslariga ulash.
  • Kodda qat'iy belgilangan parol va kalitlardan foydalanish.
  • Oldindan belgilangan vaqtinchalik katalogdan foydalanish.
  • catch-all-uslubidagi istisno ishlovchilarida pass va davom ettirishdan foydalanish;
  • Nosozliklarni tuzatish rejimi yoqilgan Flask veb-ramka asosida veb-ilovalarni ishga tushirish.
  • Xavfli ma'lumotlarni seriyadan chiqarish usullaridan foydalanish.
  • MD2, MD4, MD5 va SHA1 xesh funksiyalaridan foydalanadi.
  • Xavfsiz DES shifrlari va shifrlash rejimlaridan foydalanish.
  • Pythonning ba'zi versiyalarida xavfsiz bo'lmagan HTTPSConnection ilovasidan foydalanish.
  • Urlopen faylida // sxemasini ko'rsatish.
  • Kriptografik vazifalarni bajarishda psevdor tasodifiy raqamlar generatorlaridan foydalanish.
  • Telnet protokolidan foydalanish.
  • Ishonchsiz XML tahlilchilaridan foydalanish.

Bundan tashqari, PyPI katalogida 8 ta zararli paket aniqlanganligini ta'kidlash mumkin. O'chirishdan oldin muammoli paketlar 30 ming martadan ko'proq yuklab olingan. Paketlardagi oddiy statik analizatorlardan zararli harakatlarni yashirish va ogohlantirishlarni chetlab o'tish uchun kod bloklari Base64 yordamida kodlangan va baholash qo'ng'irog'i yordamida dekodlangandan so'ng bajarilgan.

Noblesse, genesisbot, noblesse2 va noblessev2 paketlarida Chrome va Edge brauzerlarida saqlangan kredit karta raqamlari va parollarini ushlab qolish, shuningdek, Discord ilovasidan hisob tokenlarini o‘tkazish va tizim ma’lumotlarini, jumladan, ekran mazmuni skrinshotlarini yuborish uchun kod mavjud. Pytagora va pytagora2 paketlari uchinchi tomon bajariladigan kodlarini yuklash va bajarish qobiliyatini o'z ichiga olgan.

Manba: opennet.ru

a Izoh qo'shish