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 |
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 |
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 |