Eskirgan Python kodlari: unutilgan fayllar orqali tizimga zarar yetkazish xavfi

Zamonaviy dasturiy ta’minot ekotizimi tobora murakkablashib borar ekan, eski kodlar, yillar davomida e’tibor qaratilmay kelayotgan skriptlar va unutib qo‘yilgan domenlar ko‘pincha eng katta xavf manbai bo‘lib chiqmoqda. Bugun biz buni Python ekotizimidagi yaqqol misollardan biri orqali yana bir bor ko‘ramiz.

Yaqinda ReversingLabs ekspertlari tomonidan aniqlangan topilma shuni ko‘rsatdiki, Pythonning ayrim eskirgan paketlariga biriktirilgan avtomatlashtirilgan o‘rnatish skriptlari — xususan, zc.buildout vositasiga tegishli bootstrap.py fayllari — ishlab chiquvchilarni keng ko‘lamli ta’minot zanjiri hujumiga olib kelishi mumkin bo‘lgan xavfli xatti-harakatlarga ega.

Muammo qayerdan kelib chiqmoqda?

Ushbu skriptlar bundan o‘n yildan ortiq avval yaratilgan bo‘lib, ularda muhim — bugungi kunda esa xavfli — bir mexanizm mavjud:
distribute paketini yuklab olish uchun ular python-distribute[.]org domeniga murojaat qiladi.

Ammo asosiy muammo shundaki:

  • domen 2014-yildan beri tark etilgan,
  • hozirda bo‘sh turibdi va uni istalgan kishi sotib olishi mumkin,
  • skript esa domen javobini bevosita exec() orqali bajaradi.

Bu nimani anglatadi?
Agar yomon niyatli shaxs domenni qo‘lga kiritsa va u yerga zararli kod joylashtirsa — skriptlar bu kodni avtomatik yuklab olib, hech qanday tekshiruvisiz foydalanuvchi tizimida to‘liq huquqlar bilan ishga tushiradi.

Bu holat ta’minot zanjiri hujumlarining eng xavflilaridan biri bo‘lib, npm’da sodir bo‘lgan fsevents voqeasini eslatadi.

Qaysi paketlar ta’sirlangan?

Tadqiqotchilar ushbu zaiflik bir nechta mashhur paketlar kodida ham saqlanib qolganini aniqladi, jumladan:

  • slapos.core
  • pypiserver
  • tornado (eski versiyalari)

Ko‘pchilik ishlab chiquvchilar zamonaviy standartlarga o‘tgan bo‘lsa-da, eskirgan fayllar repozitoriylarda ko‘p hollarda “unutilgan” tarzda qolib ketadi va aynan mana shunday fayllar katta xavf tug‘diradi.

Ta’kidlash joizki, zaiflik oddiy pip install jarayonida ishga tushmaydi. U ko‘pincha:

  • qo‘lda ishga tushirilganda,
  • Makefile orqali chaqirilganda,
  • CI/CD yoki eski build tizimlari orqali bajarilganda

faollashadi. Shuning uchun ishlab chiquvchi ko‘pincha zaif skriptni ishlatayotganini ham anglamaydi.

Zaiflik qanday ishlaydi?

bootstrap.py avval tizimda distribute paketini qidiradi. Agar u mavjud bo‘lmasa, skript eskirgan domen orqali paketni yuklashga urinishni boshlaydi.

Eng xavfli jihati — domen javobining:

exec(response)

ko‘rinishida darhol bajarilishidir.

Ya’ni:

  • imzo tekshiruvi yo‘q,
  • hash tekshiruvi yo‘q,
  • xavfsizlik filtrlari yo‘q.

ReversingLabs mutaxassislari slapos.core uchun Proof-of-Concept yaratib, buyruqlarni manipulyatsiya qilish orqali zaif yo‘lni majburan ishga tushirganda — skript tashqi domen bilan ulanib, kodni yuklashga uringanini tasdiqladi.

Bu shuni ko‘rsatadiki: agar domen tahdid aktori tomonidan egallansa, u joylashtirgan istalgan zararli kod foydalanuvchi tizimida hech qanday to‘siqsiz bajariladi.

Nega bu bugun ham dolzarb?

Yirik korxonalar va davlat tashkilotlari ko‘plab ichki loyihalarda hali-hanuz eski build tizimlaridan foydalanadi. Bu tizimlardagi skriptlar ko‘pincha:

  • auditdan o‘tmagan,
  • yillar davomida yangilanmagan,
  • xavfsizlik nuqtai nazaridan tekshirilmagan bo‘ladi.

Ta’minot zanjiri hujumlari aynan mana shunday joylardan boshlanadi — bitta domenning qo‘lga olinishi butun korxona infratuzilmasiga zarar yetkazishi mumkin.

Bu holat zamonaviy APT guruhlarining hujum uslubi bilan to‘liq mos keladi, chunki ular ko‘pincha:

  • eskirgan paketlar,
  • yangilanmagan skriptlar,
  • tashlab qo‘yilgan domenlardan

foydalanib kirib kelishadi.

Xulosa va tavsiyalar

Mazkur holat ishlab chiquvchilar uchun muhim saboqlarni ochib beradi:

  • Eskirgan skriptlar, build fayllari va avtomatlashtirilgan jarayonlar muntazam audit qilinishi shart.
  • Repozitoriylarda yillar davomida o‘zgarmay qolgan fayllar jiddiy xavf manbai bo‘lishi mumkin.
  • Domenlarga bog‘langan va exec() orqali kod bajarayotgan skriptlar — eng xavfli nuqtadir.
  • Ta’minot zanjiri xavfsizligi bugungi informatika dunyosining eng muhim bo‘g‘inlaridan biri.
  • CI/CD tizimlarida har bir tashqi manba qat’iy tekshirilishi kerak.

Ushbu zaiflik Python ekotizimi uchun yaqqol signal bo‘ldi:
eski kod hech qachon “zararsiz” emas — u ertaga katta tahdidga aylanishi mumkin.