Dasturiy ta’minot zanjiriga hujum — bu sizning tizimingizni emas, unga o‘rnatadigan narsangizni buzish: ochiq kutubxonalar, yig‘ish skriptlari, dasturchilarning hisob yozuvlari. Himoya uchta tamoyilga tayanadi: ilovalaringiz tarkibini bilish (SBOM), shubhali paketlarni yig‘ishga kiritmaslik (repozitoriy darajasidagi siyosatlar va karantin) va dasturchilar hamda CI/CD sirlarini asrash.
Ta’minot zanjiriga hujum nima
Zamonaviy ilovaning katta qismi begona koddan iborat. Dasturchi bitta bog‘liqlik qo‘shadi va u bilan birga o‘nlab tranzitiv bog‘liqliklarni oladi. Ularning har biri — potensial kirish nuqtasi: agar tajovuzkor paketni almashtirsa yoki unga kod kiritsa, zararli qism bog‘liqliklarni oddiy o‘rnatishda sizga avtomatik tushadi.
Asosiy stsenariylar:
- Noldan zararli paket. Tajovuzkor jozibali nomli paket e’lon qiladi va uni kimdir o‘rnatadi.
- Taypskvotting va nomlarni almashtirish. Paket mashhur paketga deyarli o‘xshash nomlanadi, xato yozish yoki e’tiborsizlikka hisob qilinadi. Qarindosh usul — nomlar maydonini almashtirish (namespace confusion).
- Maintainer akkauntini egallash. Haqiqiy mashhur paket qonuniy muallif nomidan zararli versiya oladi.
- Ishonch orqali kiritish. Tajovuzkor yillar davomida loyihada qatnashadi, maintainer huquqlarini oladi va yashirin kod qo‘shadi.
- Bog‘liqlik-qurt. Zararli kod dasturchi tokenlarini o‘g‘irlaydi va boshqa paketlarning zararlangan versiyalarini o‘zi e’lon qiladi.
Muammo miqyosi
Sonatype'ning «2026 State of the Software Supply Chain» hisobotiga ko‘ra, 2025 yilda 454 648 ta yangi zararli paket qayd etilgan. Shu yil davomida dasturchilar Maven Central, PyPI, npm va NuGet'dan komponentlarni 9,8 trillion marta yuklab olgan. Sonatype tahdidlar spamdan «barqaror, sanoatlashgan kampaniyalar»ga siljiganini, ular orasida davlatlar tomonidan qo‘llab-quvvatlanadiganlari ham borligini ta’kidlaydi. Zararli paketlar ko‘pincha ko‘p bosqichli hujumning birinchi qadami bo‘lib xizmat qiladi: sirlarni o‘g‘irlash, yuklovchilar, bekdorlar.
Hisobotda yashirish usullari ham qayd etilgan: taypskvotting, nomlar maydoni chalkashligi, yig‘ish vositalariga taqlid, shuningdek zararli yukni AI modellari, konteyner obrazlari va yordamchi binar fayllarga joylashtirish. Alohida xavf — AI-assistentlar: ular paketlarning kelib chiqishini tekshirmasdan o‘rnatishni taklif qilishi mumkin.
Real insidentlar
ua-parser-js (2021 yil oktyabr): akkauntni egallash
2021 yil 22 oktyabrda tajovuzkorlar user-agent qatori bo‘yicha brauzer va OT'ni aniqlaydigan mashhur npm-kutubxona ua-parser-js dasturchisining hisob yozuviga kirish huquqini oldi va uchta zararli versiyani e’lon qildi: 0.7.29, 0.8.0 va 1.0.0. CERT-EU ma’lumotlariga ko‘ra, preinstall skripti operatsion tizimni tekshirgan. Linux'da XMRig mayner yuklab olingan, Windows'da — mayner va FTP-mijozlar, pochta, messenjerlar va brauzerlardan parollarni o‘g‘irlash uchun DLL. Qiziq tafsilot: Linux'da zararli kod Rossiya, Ukraina, Belarus va Qozog‘istonda ishga tushmagan. Tuzatilgan versiyalar — 0.7.30, 0.8.1 va 1.0.1.
Saboq: zararli kod o‘rnatish bosqichida, ilova ishga tushirilishidan oldin ham bajarildi, paket esa qonuniy va mashhur edi.
XZ Utils (2024 yil mart): ishonch orqali yashirin kod
2024 yil mart oyida dasturchi Andres Freund Debian test versiyasida SSH ulanishlarining sekinlashuvini tahlil qilar ekan, xz/liblzma siqish kutubxonasida bekdor topdi. Zaiflik CVE-2024-3094 identifikatorini va CVSS 10.0 maksimal bahosini oldi; 5.6.0 va 5.6.1 versiyalari ta’sirlangan. Ommaviy oshkor etilishi — 2024 yil 29 mart.
Bu holatning xususiyati — uzoq tayyorgarlik. Wikipedia tavsifiga ko‘ra, «Jia Tan» nomli foydalanuvchi 2021 yildan boshlab ikki yildan ortiq kampaniya olib borgan, soxta akkauntlar esa asl maintainer huquqlarni topshirguncha unga bosim o‘tkazgan. Zararli qism reliz arxivlarida bo‘lgan, Git repozitoriysining o‘zida emas, shuning uchun GitHub'dagi manba kodini ko‘rish uni ko‘rsatmagan. Kampaniya tasodifan payqalgan.
Saboq: kod review va repozitoriyni skanerlash yetarli emas; amalda yig‘ishga tushayotgan narsani ham tekshirish va reliz artefaktlarini manba kodlari bilan solishtirish kerak.
Shai-Hulud (2025 yil sentyabr): npm'dagi qurt
2025 yil 23 sentyabrda AQSh agentligi CISA npm ekotizimining keng ko‘lamli buzilishi haqida ogohlantirish chiqardi. O‘z-o‘zini ko‘paytiruvchi Shai-Hulud qurti 500 dan ortiq paketni zararladi. Dasturchi muhitiga tushgach, u hisob ma’lumotlarini, jumladan GitHub tokenlari va AWS, Google Cloud va Azure API kalitlarini qidirgan, ularni tajovuzkorlar serveriga yuborgan va ommaviy repozitoriyga joylagan. So‘ng qurt npm'da dasturchi nomidan autentifikatsiyadan o‘tib, uning boshqa paketlarining zararlangan versiyalarini e’lon qilgan. Shunday qilib u keyin ham tarqalgan.
CISA tavsiyalari: bloklash fayllarini (package-lock.json, yarn.lock) ta’sirlangan paketlar, shu jumladan ichma-ich joylashganlari bo‘yicha tekshirish; artefaktlar repozitoriylarida keshlangan nusxalarni topish; 2025 yil 16 sentyabrgacha chiqarilgan versiyalarni qotirish; dasturchilarning barcha hisob ma’lumotlarini almashtirish; GitHub va npm uchun fishingga chidamli MFA'ni yoqish; chiquvchi ulanishlarni cheklash.
Saboq: dasturchining sizib chiqqan tokeni tarqalish kanaliga aylanadi. Bu yerda sirlar va ta’minot zanjiri — bir va o‘sha muammo (sirlarni boshqarishga qarang).
Bu nima uchun Markaziy Osiyodagi kompaniyalarga ham taalluqli
Mintaqa banklari va moliya kompaniyalari ilovalarni butun dunyo kabi o‘sha npm, PyPI, Maven va NuGet'da ishlab chiqadi. Mintaqaviy geografiyaning o‘zi himoya qilmaydi: CERT-EU'ning ua-parser-js tavsifida Qozog‘iston mayner Linux-varianti ishga tushmagan mamlakatlar qatorida tilga olingan, parollarni o‘g‘irlaydigan Windows-tarmog‘i uchun bunday istisno ko‘rsatilmagan. Bundan tashqari, dasturchilar ko‘pincha internetga proksi orqali chiqadigan yopiq konturlardan ishlaydi, u yerda paketlarni to‘g‘ridan-to‘g‘ri o‘rnatishning bitta nazoratsiz kanali himoyani yo‘qqa chiqaradi.
Qanday himoyalanish kerak: amaliy choralar
1. Sizda nima borligini biling
Inventarsiz «biz ta’sirlanganmizmi?» degan savolga tez javob berib bo‘lmaydi. Har bir yig‘ishda SBOM shakllantiring va uni relizi bilan birga saqlang. Batafsil — «SBOM nima» maqolasida. Sonatype Lifecycle kabi SCA vositalari zaif va zararli komponentlarni topadi va ular qaysi ilovalarda ishlatilishini ko‘rsatadi.
2. Internet va yig‘ish o‘rtasiga shlyuz qo‘ying
Barcha bog‘liqliklar ichki artefaktlar menejeri orqali o‘tishi kerak, yig‘uvchi agentlarning npmjs.com va PyPI'ga to‘g‘ridan-to‘g‘ri kirishini yopish kerak. Bu nazorat nuqtasini beradi. Sonatype Repository Firewall zararli va zaif paketlarni yuklab olish paytida bloklaydi, shubhali komponentlarni karantinga joylaydi va xavfsiz deb topilganlarini avtomatik chiqaradi. Siyosatlarni paket yoshi, xavf darajasi va litsenziya bo‘yicha qurish mumkin. Mahsulot Nexus Repository uchun mo‘ljallangan, boshqa repozitoriy-menejerlar uchun Sonatype'da Firewall Pro bor. Tanlov haqida batafsil — Nexus Repository vs Artifactory.
3. Versiyalarni qotiring va yangilanishlarni tekshiring
- Lock-fayllardan foydalaning va diapazonlarni emas, versiyalarni qayd eting.
- «Yangilik karantini»ni joriy qiling: yaqinda e’lon qilingan versiyani, u tekshirilmaguncha, yig‘ishga qabul qilmang. Ko‘plab hujumlar dastlabki soatlarda yoki kunlarda aniqlanadi.
- O‘rnatish skriptlaridagi (preinstall, postinstall) shubhali o‘zgarishlarni kuzating.
4. Hisob yozuvlari va sirlarni himoya qiling
- GitHub, npm va PyPI'da fishingga chidamli MFA'ni yoqing.
- Tokenlarni dasturchilarning muhit o‘zgaruvchilarida va repozitoriylarda ochiq ko‘rinishda saqlamang. Sirlar ombori va qisqa muddatli hisob ma’lumotlaridan foydalaning.
- Ommaviy rotatsiya tartibini tayyorlang: Shai-Hulud kabi insidentdan keyin hammasini almashtirishga to‘g‘ri keladi.
5. O‘z kodingiz va yig‘ishni tekshiring
Yashirin kod sizning pudratchingiz orqali ham, ichki paket orqali ham tushishi mumkin. SAST va binar tahlil o‘z kodingizda va uchinchi tomon yig‘malarida deklaratsiya qilinmagan imkoniyatlarni topishga yordam beradi. Vositalar sinflari haqida — SAST, DAST, SCA va MAST maqolasida.
6. Javob berishga tayyorlaning
Oldindan belgilang: paketni bloklash haqida qarorni kim qabul qiladi, komponent bor barcha ilovalarni qanchalik tez topa olasiz, zararlangan versiyani qanday almashtirasiz va zararli kod yig‘ish serverlarida hamda dasturchilar mashinalarida bajarilmaganini qanday tekshirasiz.
Nimadan boshlash kerak
- Yig‘ishning tashqi reyestrlarga to‘g‘ridan-to‘g‘ri kirishini yoping va uni artefaktlar menejeri orqali yo‘naltiring.
- Kritik ilovalar uchun tarkibni skanerlash va SBOM shakllantirishni yoqing.
- Zararli paketlarni bloklash va yangi versiyalarni karantinga olish siyosatlarini sozlang.
- Tokenlar revizyasini o‘tkazing va dasturchilar uchun MFA'ni yoqing.
- «Zararli paket topildi» stsenariysini mashq qiling.
Ko‘p so‘raladigan savollar
Zararli paket zaif paketdan nimasi bilan farq qiladi?
CI'da bog‘liqliklarni shunchaki skanerlash yetarlimi?
Zararlangan paketni o‘rnatib qo‘ysak nima qilish kerak?
SBOM hujumning oldini olishga yordam beradimi?
Yig‘ishlaringizga nima tushayotganini tekshirib, zararli paketlarga kirishni yopmoqchimisiz? AST Cyber Lab Qozog‘iston va Markaziy Osiyodagi Sonatype distribyutori sifatida loyihalaringizda Repository Firewall va Lifecycle pilotini o‘tkazadi.
Manbalar
- Infosecurity Magazine: Sonatype 2026 State of the Software Supply Chain hisoboti sharhi
- CERT-EU: Security Advisory 2021-057 (ua-parser-js)
- Wikipedia: XZ Utils backdoor
- CISA: Widespread Supply Chain Compromise Impacting npm Ecosystem
- Sonatype: Repository Firewall