Bog'liqlik hujumi PayPal, Microsoft, Apple, Netflix, Uber va boshqa 30 kompaniyalarda kod bajarilishiga imkon beradi

Bir necha kun oldin ilovalardagi bog'liqliklarga hujum qilishga imkon beradigan hayratlanarli darajada oddiy usul chiqarildi ichki paketlar omborlari yordamida ishlab chiqilgan. Muammoni aniqlagan tadqiqotchilar ular sizning kodingizni ishlata olishdi PayPal, Microsoft, Apple, Netflix, Uber, Tesla va Shopify kabi 35 kompaniyaning ichki serverlarida.

Hacklar Bug Bounty dasturlari doirasida hujumga uchragan kompaniyalar bilan kelishilgan holda amalga oshirildi va jinoyatchilar zaifliklarni aniqlash uchun 130.000 ming dollar mukofot puli oldilar.

Usul bunga asoslanadi ko'plab kompaniyalar ichki dasturlarida NPM, PyPI va RubyGems standart omborga bog'liqliklaridan foydalanadilar, shuningdek, o'z omborlaridan ommaviy ravishda tarqatilmaydigan yoki yuklab olinmagan ichki bog'liqliklar.

Muammo shundaki, paket menejerlari npm, pip va gem kabi Ular kompaniyalarning ichki qaramligini, hatto omborxonadan yuklab olishga harakat qilishadi. Hujum uchun, faqat ichki bog'liqliklar bilan paketlarning nomlarini aniqlang va bir xil nomdagi o'zingizning paketlaringizni yarating NPM, PyPI va RubyGems ommaviy omborlarida.

Muammo NPM, PyPI va RubyGems uchun xos emas va u NuGet, Maven va Yarn kabi boshqa tizimlarda ham o'zini namoyon qiladi.

Tavsiya etilgan usul g'oyasi tadqiqotchi GitHub-da joylashtirilgan ommaviy kodda tasodifan paydo bo'lganidan keyin paydo bo'ldi. ko'plab kompaniyalar o'zlarining manifest fayllaridan qo'shimcha bog'liqliklar haqidagi eslatmani olib tashlamaydilar ichki loyihalarda yoki kengaytirilgan funktsiyalarni amalga oshirishda foydalaniladi. Shunga o'xshash izlar veb-xizmatlarning JavaScript-kodida, shuningdek ko'plab kompaniyalarning Node.JS, Python va Ruby loyihalarida topilgan.

Asosiy qochqinlar tarkibni joylashtirish bilan bog'liq edi pack.json fayllaridan qurilish jarayonida hammaga ma'lum bo'lgan JavaScript kodida, shuningdek talab () qo'ng'iroqlarida haqiqiy yo'l elementlaridan foydalanish bilan bog'liqlik, bu qaramlik nomlarini aniqlash uchun ishlatilishi mumkin.

Bir necha million korporativ domenlarni skanerlashda bir necha ming JavaScript paket nomlari aniqlandi ular NPM omborida bo'lmagan. Ichki paket nomlari ma'lumotlar bazasini tuzib, tadqiqotchi Bug Bounty dasturlarida ishtirok etadigan kompaniyalar infratuzilmasini buzish bo'yicha tajriba o'tkazishga qaror qildi. Natijalar hayratlanarli darajada samarali bo'ldi va tadqiqotchi o'z kodini doimiy integratsiya tizimlari asosida qurish yoki sinovdan o'tkazish uchun mas'ul bo'lgan ko'plab ishlab chiquvchi kompyuterlar va serverlarda ishlata oldi.

To'liqliklarni yuklab olayotganda, paketlar menejerlari npm, pip va gem asosan birinchi o'ringa qo'yilgan paketlar o'rnatdilar NPM, PyPI va RubyGems, ular ustuvor deb hisoblangan.

Shaxsiy kompaniyalar omborlarida bir xil nomdagi o'xshash paketlarning mavjudligi hech qanday ogohlantirish ko'rsatmasdan yoki halokatga olib kelmasdan e'tiborga olinmadi bu ma'murlarning e'tiborini jalb qilishi mumkin. PyPI-da yuklab olish ustuvorligiga versiya raqami ta'sir qildi (omboridan qat'i nazar, paketning eng so'nggi versiyasi yuklab olindi). NPM va RubyGems-da ustuvorlik faqat omborga bog'liq edi.

Tadqiqotchi topilgan ichki bog'liqliklar nomlarini kesib o'tadigan NPM, PyPI va RubyGems omborlarida paketlarni joylashtirdi, tizim haqida ma'lumot to'plash va olingan ma'lumotlarni yuborish uchun o'rnatishdan oldin ishlaydigan skriptga (NPMga oldindan o'rnatilgan) kod qo'shdi. tashqi xost.

Hackning muvaffaqiyati, tashqi trafikni to'sib qo'ygan xavfsizlik devorlarini chetlab o'tish, DNS protokoli orqali yashirin kanal aloqalarini tashkil etish usuli haqida ma'lumot etkazish. Ishlayotgan kod, hujum domenining boshqaruvi ostida hujum domenidagi serverni hal qildi, bu esa DNS-serverdagi muvaffaqiyatli operatsiyalar to'g'risida ma'lumot to'plashga imkon berdi. Xost, foydalanuvchi nomi va joriy yo'l haqida ma'lumot berildi.

Barcha ro'yxatdan o'tgan kodlarning 75% bajarilishi NPM paketini yuklab olish bilan bog'liq edi, bu asosan Python va Ruby-ga bog'liqlik nomlaridan ko'ra ko'proq ichki JavaScript-modul nomlari bo'lganligi sababli.

Manba: https://medium.com/


Maqolaning mazmuni bizning printsiplarimizga rioya qiladi muharrirlik etikasi. Xato haqida xabar berish uchun bosing bu erda.

Birinchi bo'lib izohlang

Fikringizni qoldiring

Sizning email manzilingiz chop qilinmaydi.

*

*

  1. Ma'lumotlar uchun javobgardir: Migel Anxel Gaton
  2. Ma'lumotlarning maqsadi: SPAMni boshqarish, izohlarni boshqarish.
  3. Qonuniylashtirish: Sizning roziligingiz
  4. Ma'lumotlar haqida ma'lumot: qonuniy majburiyatlar bundan mustasno, ma'lumotlar uchinchi shaxslarga etkazilmaydi.
  5. Ma'lumotlarni saqlash: Occentus Networks (EU) tomonidan joylashtirilgan ma'lumotlar bazasi
  6. Huquqlar: istalgan vaqtda siz ma'lumotlaringizni cheklashingiz, tiklashingiz va o'chirishingiz mumkin.