Sekitar 09:00 UTC pada 4 Ogos 2026, penyerang mengambil alih akaun GitHub Jared Wray, iaitu jaredwray . Dengan akses itu, mereka menolak kod berniat jahat terus ke cabang main repositori keyv, kemudian menerbitkan versi baharu merentasi keluarga pakej keyv dan cacheable .
Gelombang awal melibatkan 11 pakej daripada kedua-dua ruang nama tersebut. Antaranya ialah keyv, cacheable-request, cache-manager, @cacheable/utils, flat-cache dan file-entry-cache . Aikido Security, StepSecurity, Socket dan Chainguard mengesahkan pencerobohan itu secara berasingan pada jam-jam pertama .
Setiap pakej yang diracuni menerima pola jangkitan yang sama: dua fail baharu, iaitu setup.mjs dan Math_Symbol.js, serta perubahan pada package.json untuk menambah skrip berikut:
"preinstall": "node setup.mjs"
Apabila pembangun atau sistem CI menjalankan npm install, skrip preinstall itu berjalan secara automatik sebelum proses pemasangan selesai .
setup.mjs bertindak sebagai dropperβia memuat turun binari runtime JavaScript Bun yang sah daripada GitHub Releases, kemudian menggunakannya untuk menjalankan muatan peringkat kedua yang dikaburkan, Math_Symbol.js, berukuran kira-kira 710 hingga 728 KB .
Microsoft Threat Intelligence mengenal pasti muatan itu sebagai varian Mini Shai-Hulud . Ia menyasarkan pelbagai rahsia dalam komputer pembangun, pelayan binaan dan persekitaran CI/CD, termasuk :
Bahagian paling berbahaya ialah keupayaan cacing itu untuk merebak sendiri. Selepas mencuri token penerbitan npm dan PAT GitHub daripada persekitaran yang dijangkiti, ia menggunakan akses tersebut untuk menerbitkan versi hasad bagi pakej lain yang dimiliki penyelenggara berbeza .
Jumlah yang direkodkan meningkat dengan cepat:
Cacing tersebut turut melangkaui sempadan ruang nama. Ia tidak kekal dalam keluarga keyv atau cacheable, sebaliknya merebak ke pakej milik organisasi yang tidak berkaitan, termasuk Deliveroo, Ornikar, OneReach, Picsart, Qlik dan ServiceTitan .
Kelayakan yang dicuri dieksfiltrasi ke repositori GitHub yang dikawal penyerang. Cacing itu dipercayai mencipta atau menggunakan repositori khusus untuk menempatkan data curi . Muatan tersebut turut mempunyai beberapa saluran eksfiltrasi berlebihan, menjadikannya lebih tahan jika salah satu saluran ditutup .
Penyelidik keselamatan menggesa organisasi menganggap setiap sistem yang pernah memasang versi terjejas sebagai telah dikompromi sepenuhnya. Memadam fail hasad sahaja tidak mencukupi .
Semak package-lock.json, yarn.lock dan pnpm-lock.yaml bagi mencari versi terjejas, termasuk pakej transitif yang ditarik masuk secara tidak langsung .
Gunakan overrides dalam package.json, atau mekanisme setara dalam npm, Yarn dan pnpm, untuk memaksa projek menggunakan versi yang diketahui bersih serta menghalang pemasangan semula versi beracun .
Jika sesebuah komputer pembangun atau pelari CI pernah menjalankan npm install terhadap versi terjejas, anggap semua rahsia yang tersedia pada sistem itu telah terdedah . Jangan hanya membuang node_modules atau memadam dua fail hasad tersebut.
Batalkan serta jana semula semua kelayakan yang mungkin telah boleh dicapai oleh muatan, termasuk :
Ini ialah perincian kritikal dalam proses pemulihan. Malware tersebut kadangkala memasang GitHub workflow watcher yang boleh menangkap atau mendedahkan semula token baharu sebaik sahaja token itu dicipta .
Oleh itu, penyelidik mengesyorkan agar sebarang perkhidmatan pemantauan atau mekanisme berterusan yang mencurigakan dinyahaktifkan atau dibuang sebelum kelayakan diputar ganti .
Kosongkan cache npm, pnpm dan Yarn, selain cache binaan Docker, pada komputer pembangun serta pelari CI/CD . Kemudian bina semula semua artifak dari awal supaya kebergantungan yang tercemar tidak kekal dalam lapisan Docker, cache binaan atau hasil binaan lama .
Cari repositori baharu, workflow yang tidak dibenarkan dan komit mencurigakan dalam akaun GitHub yang berkaitan . Semak juga artifak kegigihan seperti .claude/settings.json atau .vscode/tasks.json yang mungkin dicipta oleh cacing .
Serangan 4 Ogos 2026 menunjukkan bagaimana satu akaun penyelenggara yang dikompromi boleh menjadi titik mula kepada jangkitan besar-besaran. Walaupun penyerang tidak mempunyai akses terus kepada kebanyakan pakej sasaran, token yang dicuri membolehkan cacing itu menerbitkan versi berniat jahat menggunakan akaun penyelenggara lain.
Penggunaan runtime Bun yang sah untuk melancarkan muatan, penyebaran melalui token yang dicuri dan saluran eksfiltrasi berlebihan menjadikan kempen ini lebih sukar dikesan dan dipatahkan .
Bagi pasukan kejuruteraan dan keselamatan, insiden ini menguatkan beberapa amalan asas: kunci kebergantungan kepada versi yang diketahui bersih, hadkan atau matikan skrip preinstall dan postinstall jika sesuai, pantau aktiviti GitHub yang luar biasa dan sediakan pelan tindak balas khusus untuk pencerobohan rantaian bekalan.