Bu uchinchi epizod qator maqolalar dasturiy ta'minot ta'minoti zanjiriga eng keng tarqalgan hujumlar haqida: ommaviy reyestrni suiiste'mol qiladiganlar Ochiq manba dasturiy ta'minot komponentlari. Oldingi epizodda tahlil qilgandan so'ng “Zararli paketlarning anatomiyasi: Trendlar qanday?"Yomon shaxslar yangi yoki mavjud nashr etilgan komponentlarga zararli xatti-harakatlarni qanday kiritishi haqida ma'lumot olish uchun biz yong'inga qarshi kurtkalarimizni kiyishga va shu tarzda yetkazib beriladigan zararli dasturlarni qanday qilib muvaffaqiyatli blokirovka qilishimiz mumkinligini yoki noto'g'ri yondashuv tufayli jiddiy kiber-intsident bilan qanday kurashishimiz mumkinligini ko'rib chiqishga tayyormiz."
Xavfsizlikdan xabardor bo'lgan mutaxassislarning aksariyati bu tahdidni qanday hal qilish haqida fikrlarga ega. Biz xavfsizlik menejerlarining ikkilanmasdan shunday deganini eshitganmiz SCA vositalar allaqachon paket versiyasi zararli dastur ekanligini aytadi. Yoki ular taniqli, yuqori baholangan dasturiy ta'minot komponentlariga tayanadi, bu yerda har qanday zararli dastur tezda aniqlanadi va olib tashlanadi. Ular zaifliklarni avtomatik ravishda tuzatish uchun ochiq kichik/yamoq versiyalaridan foydalanadilar va bu ochiq manbali bog'liqliklarga xavfni kamaytirishning to'g'ri, tavsiya etilgan usuli bo'lib, "erta yamoq, tez-tez yamoq”Tamoyili.
Ushbu epizodda biz nima uchun bu g'oyalar noto'g'ri ekanligini va bunday noto'g'ri tushunchalar ushbu hujum mexanizmining mashhurligiga va tashkilotlar duch kelayotgan ulkan xavfga qanday hissa qo'shayotganini ko'rib chiqamiz. Biz nima ishlaydi, qaysi biri sarflangan kuch va resurslar bilan yakunlaymiz.
Umumiy noto'g'ri tushunchalar
Dasturiy ta'minot xavfsizligi bilan bog'liq sayohatimiz davomida biz hujum texnikalarining rivojlanib borayotganini va xavfsizlikka e'tiborli odamlarning turli xil g'oyalarini ko'rdik. Tashkilotlar ko'pincha bu tahdidga qarshi nima ish berishini noto'g'ri tushunishadi, shuning uchun avval biz nima ishlamayotganini ko'rib chiqamiz, quyida to'liq bo'lmagan noto'g'ri tushunchalar ro'yxati keltirilgan.
1-noto'g'ri tushuncha: SCA vositalar allaqachon zararli komponentlar haqida xabar beradi
Haqiqatan ham! Lekin haqiqatdan keyin... Agar element dasturiy ta'minot yaratishda ishlatilgan bo'lsa va yomon aktyorlar allaqachon ishlab chiquvchida o'z o'rnini egallagan bo'lsa, ehtimol juda kech bo'lganda CI/CD xost. Maxfiy ma'lumotlar filtrlangan bo'lishi mumkin, qo'shimcha zararli dasturlar yuklab olingan va o'rnatilgan bo'lishi mumkin va ehtimol dushman yon tomonga siljib, boshqa joyga kirish huquqini qo'lga kiritgan.
Dasturiy ta'minot tarkibini tahlil qilish (SCA) vositalari potentsial ma'lum bo'lgan zaifliklarni aniqlash uchun ishlab chiqilgan. Zamonaviy vositalar signal-shovqin nisbatini oshirish orqali juda yaxshi ish qiladi, zaiflikka haqiqatan ham erishish mumkinmi yoki undan foydalanish mumkinmi, aniqlaydi. Ammo ular yangi zararli dasturlarga qarshi foydasiz. Zararli komponentni nol kunlik zaiflik deb tasavvur qiling: Faqat uning zararli xatti-harakati aniqlangandan keyingina, komponent xolding registriga xabar qilinadi, u xavfsizlik guruhi tomonidan ko'rib chiqilgandan so'ng zararli deb tasdiqlanadi va registrdan olib tashlanadi. [1].
O'sha paytda dunyo (shu jumladan, SCAs) komponentni (yoki mavjud komponentning ba'zi versiyalarini) o'rnatish yoki ulardan foydalanish yaxshi narsa emasligini biladi. Lekin bu komponent registrda mavjud bo'lmaganda sodir bo'ladi.Uchinchi tomon komponentlarida yoki hatto registr tomonidan zararli deb tasniflangan komponentlarda zaifliklarim borligini bilish yaxshi, lekin afsuski SCA yoki umumiy audit vositalari bu holatda yordam bermaydi. Agar bundan mustasno SCA/audit vositasi komponentni tashkilotingizda ishlatishdan oldin zararli ekanligini oldindan bilib olishi mumkin.
Yodingizda bo'lsin, zararli ochiq kodli komponentlarga qarshi har qanday yechim ularni aniqlashi kerak parvozda, komponent reyestrda e'lon qilingan vaqt va komponent (versiya) sizning tashkilotingizda birinchi marta ishlatilgan vaqt oralig'ida. Va bunga o'tish komponentlari ham kiradi.
Noto'g'ri tushuncha #2: O'rnatish skriptlarini yaratish vaqtida boshqarish ochiq kodli komponentlarning zararli xatti-harakatlarining oldini oladi
Turli paket menejerlari skriptlarni ishga tushirish imkoniyatini taklif qiladi (tarball komponentiga kiritilgan) [2]), turli platformalarda kerakli elementlarni kompilyatsiya qilish, kod yaratish yoki testlarni o'tkazish kabi qonuniy sabablarga ko'ra, va barchamiz shuni bilishimiz kerakki, agar tarballga zararli skriptlar kiritilgan bo'lsa yoki tajovuzkor yaxshi skript o'rniga zararli skriptni ishga tushira olsa, ular yomon niyatli shaxslar tomonidan suiiste'mol qilinishi mumkin.
Buni bilib, biz paket menejerini skriptlarni e'tiborsiz qoldirish uchun sozlashimiz mumkin. Masalan, NPM bilan –skriptlarni e'tiborsiz qoldirish bayroq (yoki konfiguratsiya xususiyati .npmrc file) o'rnatish paytida skriptlarni o'tkazib yuboradi. Bu ba'zi muammolarni keltirib chiqarishi mumkin, chunki skriptlarni ishga tushirish ko'plab ekotizimlarda keng tarqalgan: Ba'zi paket menejerlari hatto skript bajarilishini o'chirib qo'yishga ham ruxsat bermaydi (ishora: "Qaysi paket menejerlari o'rnatish skriptlarini bajarishni o'chirib qo'yishga ruxsat bermaydi?"sevimli AI'ingizda). Lekin bu umuman himoya qilmaydi (biz o'tkazib yuborishni o'chirish konfiguratsiyasi hamma joyda bo'lishini ta'minlashimiz kerak).
Zararli xatti-harakatlar o'rnatish skriptlarida emas, balki ish vaqtida bajariladigan dasturiy ta'minotda bo'lsa, bu variantning o'zi bizni himoya qilmaydi.
Noto'g'ri tushuncha #3: Versiyani mahkamlash zararli komponentlarning o'rnatilishini oldini oladi
Yamoqlarni erta qo'yish va ko'pincha qo'llash o'rtasida murosa mavjud ochiq versiyalar (xavfsizlik tuzatishlari mavjud bo'lganda paket menejeriga yangi yangilanishlarni avtomatik ravishda o'rnatishga ruxsat berish) va versiyani mahkamlash (dasturiy ta'minot uchun barcha to'g'ridan-to'g'ri va o'tishga bog'liqliklarni belgilangan versiyada saqlash). Xavfsizlik tamoyillari o'jar va ba'zan qarama-qarshi, xuddi "yamoqni erta, tez-tez yamoq" va "Yangilanishga yengil qaramaslik kerak"Ba'zi paket menejerlari server diapazonlari bilan tavsiya etilgan usulda avtomatik yangilanishlarni amalga oshiradilar. Agar siz zararli yangilanishlarni ham olishni istasangiz, juda yaxshi! Ha, zaifliklarni imkon qadar tezroq yopadigan xavfsizlik tuzatishlarini olish uchun komponentlar yangilanishi kerak, lekin ... paket menejeriga buni avtomatik ravishda qilishiga hech qachon yo'l qo'ymang.
Noto'g'ri tushuncha #4: Ishonchli komponentlardan foydalanish xavfsiz. Har qanday zararli versiya tezda topiladi, oshkor qilinadi va olib tashlanadi.
Nima uchun komponentga ishonch bor? Ehtimol, u juda mashhur bo'lgani uchundir, ko'pchilik zaifliklarni qidiradi, texnik xizmat ko'rsatish uchun ko'plab hissa qo'shadi, barcha komponentlarni sinchkovlik bilan ko'rib chiqadigan bir nechta asosiy texnik xizmat ko'rsatuvchilar mavjud. pull requestsHaqiqat butunlay boshqacha. Ba'zi muhim komponentlar bitta, haq to'lanmaydigan ishlab chiquvchi tomonidan qo'llab-quvvatlanadi. Keng qo'llaniladigan freymvorklar bir nechta doimiy mualliflar, soni tez kamayib borayotgan holda commits har bir texnik xizmat ko'rsatuvchi uchun (ommabop loyihalarda ba'zi haydovchilik tekshiruvlarini bajaradigan uzun hissa qo'shuvchilar mavjud) commit va hech qachon qaytib kelmaydi). Va bitta texnik xizmat ko'rsatuvchiga ega mashhur loyihalar ko'p.
O'zingizni shunday deyayotganingizni tasavvur qiling "Oh, biz Spring Boot / Angular / React / PyTorch / rasmiy Docker bazaviy tasvirlaridan foydalanmoqdamiz, shuning uchun siz aytayotgan xavf juda past." Balki bu rostdir, biz xavfsizlik sotuvchilari doimo qo'rqitish bilan shug'ullanamiz va bahsli xavfni kamaytirish uchun ishlab chiquvchilar guruhlariga aralashish bema'nilikdir. Siz xavfni qabul qilish paragrafiga o'tishga (keyingi bo'limda) va hammasi tayyor bo'lishga moyil bo'lishingiz mumkin. Afsuski, eng mashhur komponentlar yomon aktyorlar uchun nishonlardir va masalan, mashhur PyTorch kutubxonasiga hujum qilindi oldin.
"Darhol topildi, oshkor qilindi va olib tashlandi". Yangi zararli komponentni ommaviy reyestrdan olib tashlash uchun bir necha kun kerak bo'ladi. Reyestrlar komponent versiyasini olib tashlashda ehtiyotkor bo'lishadi, bu yaxshi tomonga. Bizning tajribamiz shuni ko'rsatadiki, biz tomondan xabar berilgandan so'ng, reyestrning zararlangan versiyani olib tashlash uchun o'rtacha vaqti 39 soatni tashkil etadi, bu bir yarim kundan ko'proq vaqtni tashkil qiladi. Ba'zi zararli komponentlar mavjudki, ular olib tashlashdan oldin reyestrda dastlabki hisobotimizdan bir hafta o'tgach paydo bo'ladi. Va ba'zi hollarda, komponent faqat jabrlanuvchi yoki hodisalarga javob berish kompaniyasi komponent bilan bog'liq hodisa haqida xabar berganidan keyin olib tashlanadi.
Zararli komponentlarga qarshi nima ish bermaydi
Har qanday noaniq yondashuv muvaffaqiyatsizlikka uchraydi. Bu aniq, siz ushbu tahdid bilan bog'liq xavfga qarshi samarali choralar ko'rmayapsiz.
an'anaviy SCA vositalar sizga ma'lum bo'lgan zararli dasturlar haqida ma'lumot beradi, ammo katta ta'sir qilish oynasiga ega. Agar ular zararli komponentlarni majburiy blokirovka qilish orqali zararli dasturlarni proaktiv ravishda aniqlashni amalga oshirmasa, ular bu tahdidga qarshi ishlamaydi.
O'rnatish skriptlarini o'chirib qo'yish yordam berishi mumkin, ammo komponent o'rnatilishi kerak bo'lgan hamma joyda qo'llanilishi kerak. Versiyalarni qadash bilan ham xuddi shunday, chunki versiyalarni xavfsiz boshlang'ich holatdan abadiy qadab bo'lmaydi.
Ommabop komponentlar yetarlicha e'tiborga olinadi va ularga ta'minot zanjiri hujumida har qanday zararni oldini olish uchun deyarli bir zumda aniqlanmasdan kutilmagan xatti-harakatlar kiritib bo'lmaydi deb taxmin qilish sodda va xavflidir. Siz chekkada yashashni xohlamaysiz, shunday emasmi?
Agar shu nuqtada to'xtasangiz, unda xavfni qabul qilish siz qila oladigan yagona narsa: bu decisxavfni qabul qilish asoslari va uning potentsial oqibatlarini o'z ichiga olgan holda, tahdid modelingiz/xavfni baholashda hujjatlashtirilishi kerak bo'lgan ion. Bu haqda rahbariyat va boshqa tegishli tomonlarga yetkazish orqali xabardorlikni oshiring. Ba'zilar kutilmagan holat zararli komponent o'rnatilganda yoki dasturiy ta'minotingizga kiritilganda rejalashtirilishi mumkin, ammo bu qiyin, chunki tajovuzkorlar ko'plab yo'llarni bosib o'tishlari kerak. Zararli komponentdan foydalanishga asoslangan ta'minot zanjiri hujumining tafsilotlari hodisaning ommaviy oshkor qilinishini keskin o'zgartiradi, bu sizning tashkilotingizning tartibga solish tizimida majburiydir. Siz shuningdek, murojaat qilishingiz mumkin kompensatsiya boshqaruvlari or o'tkazish xavfi masalan, sug'urta bilan.
Biroq, tahdidni bartaraf etadigan boshqaruv vositalari mavjud va agar siz xavfni qabul qilishdan qoniqmasangiz, ularni ko'rib chiqishingiz kerak. Iltimos, o'qishni davom eting.
Zararli komponentlardan foydalangan holda hujumlarga qarshi nima ishlaydi
Qattiq versiyani boshqarish
Zararli dasturlarni qabul qilmasdan zaifliklarni olib tashlash zaruratini muvozanatlash uchun nazorat ostida va xabardor versiyalar bilan versiyalarni pinlash eng to'g'ri yo'ldir. Lekin 3-noto'g'ri tushunchani yodda tuting: Versiyalarni pinlashning o'zi yangi versiyalardan keladigan zararli kodni blokirovka qilish uchun yetarli emas, chunki kelajakda siz har qanday to'g'ridan-to'g'ri yoki bilvosita bog'liqlikda versiyalarni yangilashingiz kerak bo'ladi. O'sha paytda sizga barcha o'zgartirilgan versiyalarda zararli dastur yo'qligi haqida yetarlicha kuchli dalillar kerak.
Oldindan ogohlantirish
Zararli komponentlar muammosiga yondashuvlardan biri bu erta ogohlantirish tizimidir (bu yerda shunday nomlangan Zararli dasturlar haqida erta ogohlantirish yoki MEW), bu yerda nashr etilgan yangi versiyalar (yangi yoki mavjud komponentlar uchun) aniqlash mexanizmi tomonidan tahlil qilinadi, bu esa yetarli dalillar topilganda yangi versiyani potentsial zararli deb tasniflashi mumkin.
Bu yerda avtomatlashtirish juda muhim, chunki hozirgi nashr qilish tezligida barcha yangi komponentlarni qo'lda ko'rib chiqishning iloji yo'q. Shuning uchun aniqlash mexanizmi turli xil texnikalarni, jumladan, statik, dinamik va imkoniyatlarni tahlil qilish, foydalanuvchi obro'si va komponent metama'lumotlari va tarball tarkibi o'rtasidagi yoki tarball va komponent kelib chiqqan manba ombori o'rtasidagi tafovutlardan kelib chiqadigan dalillarni birlashtirishi kerak.
Bu yerda qorong'u zona nashr qilish vaqti va dvigatel komponent tarkibini tahlil qilgan vaqt oralig'i, lekin u bir necha daqiqadan oshmasligi kerak. Sxemani o'zgartirish mumkin, masalan, yangi komponentlarni o'rnatish va dasturiy ta'minotni yaratishda foydalanishga ruxsat berishdan oldin tahlil qilinishini kutish orqali. pipelines yoki kerak bo'lganda ularni talab bo'yicha tahlil qiling. Berilgan versiyadagi komponent o'zgarmasdir [3], shuning uchun uni faqat bir marta tahlil qilish kerak.
To'liq avtomatlashtirish mumkin emas va potentsial zararli komponentlar uchun xavfsizlik tekshiruvi zarur. Raqamli panacea tarafdorlaridan ehtiyot bo'lingSun'iy intellekt va mashinani o'rganish shubhali komponentda zararli dastur mavjudligini tasdiqlashda oxirgi so'zni aytish uchun yetarlicha rivojlanmagan. Albatta, mashinani o'rganish aniqlash mexanizmida kirish komponentini olingan xom dalillardan tasniflashda muhim rol o'ynaydi, ammo komponent "karantinga olingandan" so'ng, yakuniy so'z zararli komponentlar bo'yicha tajribaga ega xavfsizlik guruhi tomonidan qo'lda ko'rib chiqiladi. Bu har qanday potentsial zararli dasturni tasdiqlaydi yoki uni xavfsiz deb qayta tasniflaydi. Va vaqt oralig'i soat oralig'ida.
Registr zararli versiya/komponent haqida xabar beradi; keyin registr tasdiqlash uchun ko'rib chiqadi va ommaviy oshkor qilish va registrdan olib tashlashga o'tadi. Ba'zi registrlar xavfsizlikni saqlash paketini saqlaydi. Bu yerdagi vaqt oralig'i nashrdan keyingi kunlar yoki haftalardir, bu esa 'vaqt yashang'yoki'ekspozitsiya oynasi'ko'pgina zararli komponentlar uchun.
Komponent versiyasi zararli ekanligini bilish mumkinmi?
Shunday qilib, erta ogohlantirish uchun biz ushbu savolga qoniqarli javob berishimiz kerak: Kutubxona yoki paket zararli (emas) ekanligini qanday bilsam bo'ladi? Zararli xatti-harakatlarning yetarli dalillarini qanday to'plash mumkin? Mumkin, ammo qiyin, chunki dushmanlar aniqlanmaslik uchun juda ko'p ixtirochilikdan foydalanadilar. Turli xil yondashuvlar mavjud, ularning har biri o'zining ijobiy va salbiy tomonlariga ega.
Statik tahlil barcha ijro yo'llarini tekshirib, komponentni ishga tushirmasdan tajovuzkorlar tomonidan qo'llaniladigan texnikalarni tekshirishi va deobfuskatsiya yoki dekodlash kabi oldindan ishlov berish vazifalarini bajarishi mumkin. Tajovuzkorlar o'zlarining zararli dasturlarini yashirishga harakat qilganda, obfuskatsiyaga urinishlar haqiqatan ham zararli dasturlarning dalilidir (lekin shuni yodda tutingki, qonuniy komponentlar intellektual mulkni saqlash uchun kodni noma'lum qiladi va "Ochiq manba"). Kuchli obfuskatsiyaga ega bo'lgan juda murakkab hujumlarning oz qismigina qum qutisiga muhtoj, ammo bunday kuchli obfuskatsiya yovuzlikning aniq belgisidir. Iltimos, an'anaviy ekanligini unutmang. SAST Asboblar orqa eshiklar kabi zararli niyat uchun emas, balki bexosdan zaifliklar uchun mo'ljallangan edi.
Dinamik tahlil komponentni ishga tushiradi va odatda sinov muhitini taqdim etish orqali ish vaqtini instrumentatsiya qilish orqali javobni tekshiradi. Muayyan sharoitlarda qo'zg'atilgan zararli xatti-harakatlar aniqlanmasdan o'tib ketishi mumkin: iltimos, zararli dastur quyidagi kabi qochish usullaridan foydalanishi mumkinligini unutmang. Virtualizatsiya/Sandboxdan qochish faqat tekshirilmaganda faollashtirish uchun, shuningdek, har qanday statik tahlil mexanizmi uchun zararli faoliyatning aniq belgisi.
Imkoniyatlarni tahlil qilish komponent nima qilishini hisobga oladi: u qayerga ulanadi, qaysi fayllarga kiradi, qaysi buyruqlar yoki dasturlar ishga tushiriladi, terminal yoki qurilma kirish/chiqishi amalga oshiriladi yoki qaysi tizim chaqiruvlari chaqiriladi. Xulq-atvorning bu barmoq izi (mavjud komponent uchun) versiyalar bo'yicha taqqoslanishi mumkin, shuning uchun kutilmagan xatti-harakatlar aniqlanganda, bu dalillar yangi versiyada kiritilgan potentsial zararli faoliyatga shubha tug'dirishi mumkin. Ushbu yondashuv xavfsizlik tahlilchilari potentsial zararli dasturlarga duch kelganda bajaradigan saralash bosqichlariga amal qiladi: tekshiruv yordamida. thongs yoki shunga o'xshash vositalar. Ushbu yondashuv qo'zg'atuvchi sharoitlardan qat'i nazar, zararli xatti-harakatlarni aniqlaydi va manba kodi mavjud bo'lmaganda ishlaydi.
Kontekst tahlili Komponent qanday va kim tomonidan nashr etilgani haqida ma'lumot to'playdi. Yomon aktyorlarning kampaniyalari ko'pincha qat'iy tekshirish jarayoniga bo'ysunmaydigan yangi foydalanuvchi hisoblaridan foydalanadi. O'tmishdagi faoliyatni kuzatish asosiy foydalanuvchi haqida ma'lumot berishi mumkin, asosan potentsial murosaga ishora qilishi mumkin bo'lgan anomaliyalar uchun. Obro'ga erishish juda qiyin va yo'qotish juda oson! O'tmishdagi faoliyati bo'lmagan foydalanuvchi neytral, ammo karma yomon niyatli foydalanuvchini ta'qib qiladi. Nashriyot ma'lumotlari o'g'irlangan xakerlar yoki oddiy foydalanuvchilarni diqqat bilan kuzatib borish kerak.
Yana bir kontekstual ma'lumot - bu tarball komponentini yaratish uchun ishlatilgan deb taxmin qilingan manba ombori va tarballning o'zi o'rtasidagi har qanday tafovut. Shuningdek, manba omborida ommaviy registrda e'lon qilingan komponent versiyalariga mos keladigan teglar yoki nashrlarni yaratish kabi yaxshi amaliyotlarga amal qilish. Manba ombori ma'lum bir joyda bo'lganda commit release bilan belgilangan va keyin to'satdan bitta versiya unga amal qilmagan, buning o'zi komponent buzilgan bo'lishi mumkinligi haqida kuchli dalil: yomon aktyor komponentni nashr qilish uchun ishlatilgan akkauntni buzgan bo'lishi mumkin, ammo manba kod omborida yozish huquqiga ega emas). Ko'pgina hujumlar ushbu qoidalar yordamida muntazam ravishda aniqlanadi: masalan, Ledger hujumi shu yo'nalishda osongina aniqlash mumkin edi. Shuning uchun kontekst tahlili nashriyot jarayonidagi bunday anomaliyalarni aniqlaydi.
Bog'liqlik xavfsizlik devori
Boshqacha yondashuv - dasturiy ta'minotingizda ishlatiladigan barcha bog'liqlik grafiklari uchun komponentlarning keng qamrovli oq ro'yxatiga ega bo'lish, shuning uchun har qanday tuzilishda pipeline Tashkilotingizda faqat tasdiqlangan komponent versiyalarini o'rnatish va ulardan foydalanish mumkin.Xavfsizlik devori"ruxsat etilgan komponent versiyalari uchun tarballlar taqdim etiladigan (keshlangan yoki proksi-server orqali uzatiladigan) ichki registr yordamida amalga oshiriladi. Iltimos, unutmangki, biron bir oq ro'yxat ishlamaydi, agar sizda biron bir yangi versiyani oq ro'yxatga qo'shish uchun yetarlicha xavfsiz deb tasniflash texnologiyasi bo'lmasa.
Iltimos, shuni yodda tutingki, erta ogohlantirish (yangi versiya nashr etilgandan so'ng iloji boricha tezroq tezkor aniqlash) ushbu ma'lumotdan proaktiv ravishda foydalanib, tuzilishga ta'sir qiluvchi komponentni blokirovka qilishning biron bir usuli bilan birlashtirilishi kerak. pipelineyoki ishlab chiquvchilarning mashinalari [4]Biz buni "qaramlik xavfsizlik devori": avtomatlashtirilgan tuzilmalarni zararli paketlardan himoya qilish uchun karantin mexanizmi. Ichki paketlar va tasvir registrlari tashkilotlarni tashqi yovuzlikdan izolyatsiya qilish uchun yaxshi, ammo karantinni samarali qilish uchun yetarlicha kuchli dalillar zarur.
Ish vaqti sinov muhiti
Nashr qilish vaqtida aniqlashning muqobil yondashuvi ish vaqtidagi xatti-harakatlarni tahlil qilishdir. G'oya dasturiy ta'minotdan kutilgan xatti-harakatlarni aniqlash va topilgan har qanday anomaliyalarni aniqlash (yoki bloklash)dan iborat. Ushbu harakat yo'nalishi monitoring yoki blokirovka qilish uchun ish vaqtini o'lchash muammosiga ega va bu zararli komponent zararkunandalariga qarshi himoya mexanizmlari arsenaliga qo'shiladigan istiqbolli g'oyadir.
Keng qamrovli strategiyani belgilash
Tavsiya etilgan strategiya dasturiy ta'minotni ishlab chiqish jarayonida turli usullarni birlashtirishi, kiruvchi zararli komponentlarni blokirovka qilish uchun versiya yangilanishlarini nazorat qilishi kerak. Muhim zaifliklarni tuzatish uchun yangilanish versiyalari bilan avtomatik infektsiyalanishning oldini olish uchun versiyalarni pinlashni ta'minlashimiz kerak; versiya yangilanishlari paytida to'g'ridan-to'g'ri va bilvosita bog'liqliklarni tez va samarali baholash, ularning zararli dasturlarga boy emasligiga etarli dalillarga ega bo'lish. Ma'lum zararli komponentlarga bog'liq bo'lgan dasturiy ta'minot tuzilmalari bloklanishi kerak. Va barchasi bajarilishi kerak.
Iloji bo'lsa, versiyalarni pinlashdan foydalaning, chunki bu tuzilmalarni takrorlanishini osonlashtiradi. Nazorat ostidagi, qo'lda tasdiqlangan versiya burmalari bilan versiyani pinlashva yordamchi texnologiya yordamida, yangilanish zararli dasturlarni olib kelishini yoki dasturiy ta'minotni buzishini baholashi va zaifliklarni tuzatish uchun yangilanishlarni zararli dasturlarning yuqishini oldini olish bilan uyg'unlashtirishi kerak. Asboblar bu yerda yordam berishi mumkin, (1) qaysi zaifliklarning haqiqatan ham muhimligini belgilash (kirish mumkin va foydalanish mumkin, tajovuzkorlar tomonidan nishonga olinish xavfi yuqori), (2) joriy komponentlardan foydalanishga mos keladigan va dasturiy ta'minotni buzmaydigan maqsadli versiyalarni tanlash, (3) zararli xatti-harakatlarni o'z ichiga olmaydigan maqsadli versiyalarni tanlash va (4) manifest fayllarida tezda tasdiqlanishi mumkin bo'lgan o'zgarishlarni taklif qilish orqali to'g'ridan-to'g'ri va bilvosita bog'liqliklar uchun versiya yangilanishini tezkor qilish. (3) bosqich zararli komponentlar haqida ularning nashr vaqtiga iloji boricha yaqinroq aniq ma'lumotga muhtoj.
Bog'liqliklarni yangilashning bu jarayoni bo'lishi kerak majburiy va tasdiqlangan barcha joylarda. Jarayon hujjatlashtirilishi kerak va barcha ishtirok etuvchi tomonlar o'qitilishi kerak, chunki ko'pincha dasturiy ta'minotni ishlab chiqish va yaratish/joylashtirish tashqi manbalarga o'tkaziladi. CI/CD pipelines mos ravishda o'zgartirilishi kerak, shuning uchun avtomatlashtirish zararli bilvosita qaramlikning tuzilishga kirishiga yo'l qo'ymaydi: guardrails Agar qaramlikda potentsial zararli dastur mavjudligi haqida yetarli dalillar mavjud bo'lsa, tuzilishni blokirovka qilish tavsiya etiladigan usuldir.
Agar tashkilotingizda ruxsat etilgan komponent versiyalarini saqlash uchun xavfsizlik proksi vazifasini bajaruvchi ichki registr mavjud bo'lsa, so'ralgan komponentni ruxsat etilganlar ro'yxatiga qo'shishdan oldin uni tekshirish uchun zararli komponentlar haqida ma'lumot olishingiz kerak (boshqa mezonlardan tashqari).
Ochiq kodli dasturiy ta'minotdan xavfsiz foydalanish oson emas va zararli dastur omili to'liq hisobga olinishi kerak, zaifliklarni boshqarishga ham shunga o'xshash harakatlar qilinishi kerak.
Bitta so'nggi eslatma: Manba kelib chiqishi, komponentni yaratish vaqtida yaratilgan dasturiy ta'minot attestatsiyalari ko'rinishida, artefaktni (komponent tarballi) uni yaratgan manbalar va yaratish jarayoni bilan kuzatib borishga urinishdagi yana bir muhim qismdir. Shuni e'tiborga olingki, manba surati + yaratish muhiti va tegishli dasturiy ta'minot artefakti (ishonchli yaratish tizimi tomonidan imzolangan) o'rtasidagi bu bog'liqlik komponentda zararli xatti-harakatlar mavjud emasligiga to'sqinlik qilmaydi, balki zararli dasturlarni kiritishni qiyinlashtiradi. Va manbani tasdiqlashni ochiq kodli komponentlarni iste'mol qilish uchun umumiy talabga aylantirish uzoq vaqt talab etadi va faqat yaqinda NPMga qo'shildiIshonchli yig'ish va joylashtirish tizimlarini buzilishdan himoya qilish yoki yig'ilishdagi har qanday buzilishlarni aniqlash imkonini berish - bu boshqa hikoya, bu post doirasidan tashqarida.
yanada o'qish
Keyingi epizod Ochiq kodli zararli paketlar: Xygeni yondashuvi Xygeni’da biz amal qiladigan strategiyani taqdim etadi Zararli dasturlar haqida erta ogohlantirish (MEW) tizimi. Ommaviy paket va tasvir registrlaridagi yangi paket versiyalari skanerlanadi va dalillar statik, dinamik, imkoniyatlar va kontekstual tahlil kombinatsiyasi yordamida olinadi. Dalillar, foydalanuvchi obro'si va manba kodlari omborlaridagi o'zgarishlar tarixi bilan birgalikda, komponentni yuqori xavfli va ehtimol zararli toifalarga to'liq avtomatlashtirilgan tasniflash imkonini beradi. Tizim noto'g'ri ijobiy natijalarni minimallashtirish uchun paketlardan to'plangan o'tmishdagi dalillardan saboq oladi.
Obuna bo'lgan tashkilotlar zararli versiya tasniflanganda, ular foydalanayotgan komponentlar uchun to'g'ridan-to'g'ri yoki bilvosita ogohlantirish xabarnomasini oladilar. Keyin bizning tahlilchilarimiz tomonidan qo'lda tahlil o'tkaziladi, bu tasnifni tasdiqlaydi yoki rad etadi. Tasdiqlangan zararli dastur uchun davlat reyestriga xabar beriladi, shunda u o'z tahlilini amalga oshirishi va odatda zararli versiyani olib tashlashi yoki qo'shimcha choralar ko'rishi mumkin, masalan, foydalanuvchi hisobini bloklash yoki o'chirish.
Biz NPM, PyPI, GitHub va ochiq kodli ekotizimdagi boshqa asosiy infratuzilmalarga yangi zararli komponentning zararli dastur ekanligi tasdiqlanmaguncha va reyestrdan olib tashlanmaguncha faol bo'lib qolish vaqtini qisqartirishda qanday yordam berayotganimizni tushuntirib beramiz. Va tashkilotlar MEW tizimidan ochiq kodli komponentlarni o'z ichiga olgan dasturiy ta'minot ta'minot zanjiri hujumlaridan ancha yaxshi himoyaga ega bo'lishlari uchun qanday foyda olishlari mumkin.
- [1] Qanday bo'lmasin, komponent foydalanuvchilari komponent tarballi keshlanganligini yoki biron bir joyda, masalan, ichki registrda ro'yxatdan o'tganligini tekshirishlari kerak, shunda kasallik yo'q qilinadi.
- [2] Paketlangan komponent tarkibi va metama'lumotlarini, manba yoki kompilyatsiya qilingan kodni, o'rnatish skriptlarini va sinov to'plamlari kabi qo'shimcha elementlarni paketlash formatiga muvofiq va odatda siqilgan shaklda e'lon qiladigan manifestni o'z ichiga oladi. Bu "komponent tarballi" deb ataladi.
- [3] Zararli dasturchi registrning o'zida buzilish tufayli nashr etilgan komponentni o'zgartira olsa ham, oddiy kriptografik dayjest tahlil o'tkazilgandan so'ng tarballdagi har qanday o'zgarishni aniqlay oladi.
- [4] Shuni yodda tutingki, ba'zi zararli komponentlar o'rnatish vaqtida ishlaydi, shuning uchun bu zararli komponent bo'lgan X bilan bilmasdan "npm install X" ni ishga tushiradigan ishlab chiquvchi tugunlariga ta'sir qilishi mumkin.




