Serangan Rantaian Bekalan NPM Besar-besaran Menjejaskan 180+ Pakej dengan Perisian Hasad Berreplikasi Sendiri

Pasukan Komuniti BigGo
Serangan Rantaian Bekalan NPM Besar-besaran Menjejaskan 180+ Pakej dengan Perisian Hasad Berreplikasi Sendiri

Serangan rantaian bekalan yang canggih telah melanda ekosistem NPM , menjejaskan lebih 180 pakej dengan perisian hasad berreplikasi sendiri yang merebak seperti cacing digital. Serangan ini, yang digelar Shai Hulud sempena cacing pasir gergasi dari siri Dune , mewakili salah satu kompromi paling meluas terhadap repositori pakej JavaScript setakat ini.

Statistik Serangan:

  • Pakej yang Terjejas: 180+ pakej
  • Saiz Perisian Hasad: Bundle diperkecilkan 3.6MB
  • Sistem Sasaran: Linux dan macOS (Windows sengaja dikecualikan)
  • Vektor Serangan: Kecurian token pengesahan NPM dan penerbitan pakej automatik

Reka Bentuk Perisian Hasad Berpropagas Sendiri

Perisian hasad ini beroperasi sebagai cacing berreplikasi sendiri yang secara automatik merebak ke pakej baharu sebaik sahaja ia mendapat akses ke sistem pembangun. Apabila dipasang, kod hasad ini mencari token pengesahan NPM dan menggunakannya untuk menerbitkan versi terjangkit pakej lain yang diselenggara oleh pembangun tersebut. Ini mewujudkan kesan melata di mana setiap pakej yang terjejas menjadi titik pelancaran untuk jangkitan selanjutnya.

Serangan ini secara khusus menyasarkan sistem Linux dan macOS , dengan sengaja melangkau persekitaran Windows . Perisian hasad ini mengandungi berkas termampatkan sebesar 3.6MB yang mengendalikan kecurian kelayakan, peninjauan sistem, dan propagasi automatik ke pakej baharu.

Penuaian Kelayakan Pembangun

Selain daripada merebak melalui ekosistem NPM , perisian hasad ini secara aktif mencari kelayakan sensitif yang disimpan pada sistem terjangkit. Ia menyasarkan kunci akses AWS , token GitHub , dan bahan pengesahan lain yang boleh memberikan akses kepada infrastruktur awan dan repositori kod sumber. Pendekatan dwi-tujuan ini menjadikan serangan tersebut amat berbahaya, kerana ia boleh membawa kepada kompromi sistem yang lebih luas melampaui repositori pakej sahaja.

Serangan ini menunjukkan bagaimana ancaman rantaian bekalan moden telah berkembang melampaui suntikan kod mudah untuk menjadi operasi penuaian kelayakan yang canggih yang boleh berterusan merentasi pelbagai sistem dan perkhidmatan.

Contoh Pakej yang Terjejas:

  • ARCVinylcolor
  • @ctrl/tinycolor
  • Pelbagai pakej NPM CrowdStrike
  • Beberapa pakej dalam ekosistem "nx"
  • Pakej dengan jutaan muat turun mingguan
Amaran keselamatan yang menyerlahkan serangan rantaian bekalan NPM dan pakej-pakej yang terjejas
Amaran keselamatan yang menyerlahkan serangan rantaian bekalan NPM dan pakej-pakej yang terjejas

Respons Komuniti dan Strategi Mitigasi

Komuniti pembangun JavaScript telah bertindak balas dengan campuran kebimbangan dan penyelesaian praktikal. Ramai pembangun sedang mempertimbangkan semula amalan pengurusan kebergantungan mereka, dengan sesetengahnya menyokong kawalan yang lebih ketat terhadap pemasangan pakej dan yang lain menyeru perubahan asas dalam cara ekosistem mengendalikan kod pihak ketiga.

Ini adalah isu budaya dengan pembangun yang mendapati tidak mengapa untuk mempunyai beratus-ratus kebergantungan (transitif), dan kemudian mengikuti proses yang, untuk semua maksud dan tujuan, secara membuta tuli mengemas kini automatik mereka.

Beberapa pengurus pakej telah melaksanakan langkah perlindungan. PNPM kini menyekat skrip kitaran hayat secara lalai melainkan disenarai putih secara eksplisit, manakala alat lain sedang meneroka ciri pemasangan tertunda yang akan menghalang pakej yang baru diterbitkan daripada dipasang secara automatik untuk tempoh yang ditetapkan.

Alat Mitigasi Keselamatan:

  • PNPM : Menyekat skrip kitaran hayat secara lalai, memerlukan penyenaraian putih
  • Pemasangan Tertunda: Tetapan minimumReleaseAge untuk mencegah pemasangan segera pakej baharu
  • Pengimbasan Pakej: Pengesanan automatik oleh Socket.dev , Aikido Security , dan vendor keselamatan lain
  • OIDC Publishing : Penerbit yang dipercayai untuk mengurangkan kerentanan berasaskan token
Catatan blog yang membincangkan serangan rantaian bekalan dan respons komuniti dalam ekosistem JavaScript
Catatan blog yang membincangkan serangan rantaian bekalan dan respons komuniti dalam ekosistem JavaScript

Implikasi Ekosistem yang Lebih Luas

Serangan ini menyerlahkan cabaran keselamatan asas yang melangkaui NPM kepada ekosistem pakej lain termasuk PyPI Python , Cargo Rust , dan modul Go . Budaya mikro-kebergantungan ekosistem JavaScript mewujudkan permukaan serangan yang luar biasa besar, dengan projek biasa sering merangkumi beratus atau beribu kebergantungan transitif.

Insiden ini telah memperbaharui perbincangan tentang keperluan untuk perpustakaan standard yang lebih baik, keperluan tandatangan pakej, dan pengimbasan keselamatan yang lebih kukuh sebelum pakej disediakan untuk pemasangan. Sesetengah pembangun menyeru NPM untuk melaksanakan pengesahan dua faktor mandatori untuk semua penerbit dan memperkenalkan tempoh penyejukan untuk pakej yang baru diterbitkan.

Serangan ini berfungsi sebagai peringatan keras bahawa pergantungan berat pembangunan perisian moden terhadap pakej pihak ketiga mewujudkan risiko keselamatan yang ketara yang memerlukan kedua-dua penyelesaian teknikal dan perubahan budaya dalam cara pembangun mendekati pengurusan kebergantungan.

Rujukan: ARCVinylcolor dan 46+ Pakej NPM Terjejas

Perwakilan visual kebimbangan keselamatan yang berkaitan dengan ekosistem pakej yang lebih luas berikutan serangan rantaian bekalan baru-baru ini
Perwakilan visual kebimbangan keselamatan yang berkaitan dengan ekosistem pakej yang lebih luas berikutan serangan rantaian bekalan baru-baru ini