Saldırının yaklaşık 09.00 UTC’de başladığı değerlendiriliyor. Saldırgan, Wray’in hesabını kullanarak keyv deposunun main dalına doğrudan zararlı kod gönderdi ve kısa süre içinde keyv ile cacheable ailelerindeki paketler için yeni sürümler yayımladı .
İlk bulaşma dalgasında iki namespace altında 11 paket yer aldı. Bunlar arasında keyv, cacheable-request, cache-manager, @cacheable/utils, flat-cache ve file-entry-cache bulunuyordu . Aikido Security, StepSecurity, Socket ve Chainguard gibi güvenlik ekipleri olayı ilk saatlerde bağımsız olarak doğruladı .
Zehirlenen her pakette benzer bir yapı görüldü: setup.mjs ve Math_Symbol.js adlı iki yeni dosya ile package.json içine eklenen şu preinstall girdisi:
"preinstall": "node setup.mjs"
Bir geliştirici ya da CI/CD sistemi etkilenen sürümü npm install ile kurduğunda setup.mjs, kurulum tamamlanmadan önce otomatik olarak çalışıyordu . Bu dosya, GitHub Releases üzerinden meşru Bun JavaScript çalışma zamanının ikili dosyasını indiriyor ve yaklaşık 710–728 KB boyutundaki, yoğun biçimde gizlenmiş ikinci aşama yükü Math_Symbol.js dosyasını çalıştırıyordu .
Microsoft Threat Intelligence, bu yükün Mini Shai-Hulud ailesine ait olduğunu doğruladı . Zararlı yazılım, bulaştığı geliştirici makinelerinde ve CI/CD ortamlarında çok çeşitli sırları arıyordu :
Saldırının asıl tehlikesi, zararlı yazılımın yalnızca ilk paket ailesiyle sınırlı kalmamasıydı. Solucan, bulaştığı ortamdan npm yayınlama belirteçlerini ve GitHub PAT’lerini çaldıktan sonra bu erişimi kullanarak başka bakımcılara ait paketlerin zararlı sürümlerini yayımladı . Böylece tek bir bakımcı hesabındaki ihlal, namespace sınırlarını aşan zincirleme bir saldırıya dönüştü.
Saldırının büyüklüğü saatler içinde hızla arttı:
Solucan keyv ve cacheable ailelerinde kalmadı; Deliveroo, Ornikar, OneReach, Picsart, Qlik ve ServiceTitan gibi kuruluşlarla ilişkili paketlere de sıçradı .
Ele geçirilen kimlik bilgileri, saldırganın kontrolündeki bir GitHub deposuna gönderildi. Solucan bu amaçla yeni bir depo oluşturabiliyor ya da özel bir veri sızdırma deposunu kullanabiliyordu . Yükün içine birden fazla yedekli sızdırma kanalı yerleştirilmişti; bu da tek bir kanalın kapatılmasının saldırıyı tamamen durdurmasını zorlaştırıyordu .
Güvenlik araştırmacıları, etkilenen bir paketi çalıştırmış her geliştirici makinesinin, CI/CD çalıştırıcısının veya sunucunun tamamen ele geçirilmiş kabul edilmesini önerdi. Öne çıkan müdahale adımları şöyle:
Etkilenen paketleri bilinen temiz sürümlere sabitleyin ya da saldırı öncesindeki sürümlere dönün. package.json içindeki npm, Yarn veya pnpm override mekanizmalarını kullanmak, zararlı sürümlerin yanlışlıkla yeniden kurulmasını önlemeye yardımcı olur .
Ayrıca doğrudan bağımlılıkların yanı sıra transitif bağımlılıkları da kontrol edin. package-lock.json, yarn.lock ve pnpm-lock.yaml dosyalarında etkilenen sürümlerin bulunup bulunmadığını inceleyin .
Zararlı dosyaları silmek tek başına yeterli değildir. Etkilenen bir sürümle npm install çalıştırılmışsa, o makinede veya CI/CD çalıştırıcısında bulunan tüm sırların açığa çıkmış olabileceğini varsayın .
Aşağıdaki kimlik bilgilerini iptal edin ve temiz ortamlardan yeniden oluşturun :
Önemli bir ayrıntı, zararlı yazılımın bazı durumlarda yeni oluşturulan token’ları izleyen GitHub workflow’ları kurabilmesiydi. Bu izleyiciler, yeni token oluşturulduğu anda token’ı yeniden ele geçirip sızdırabilir . Bu nedenle araştırmacılar, kimlik bilgilerini yenilemeden önce şüpheli izleme servislerinin veya workflow’larının devre dışı bırakılmasını ya da kaldırılmasını önerdi .
Geliştirici makinelerindeki ve CI/CD çalıştırıcılarındaki npm, pnpm ve Yarn önbelleklerini temizleyin. Docker derleme önbelleklerini ve varsa diğer derleme çıktısı önbelleklerini de silin . Zararlı bağımlılıkların Docker katmanlarında veya derleme önbelleklerinde kalmaması için tüm çıktıları temiz bir ortamda sıfırdan oluşturun .
Yeni oluşturulmuş depoları, yetkisiz workflow’ları ve şüpheli commit’leri arayın . Solucanın kalıcılık sağlamak için oluşturmuş olabileceği .claude/settings.json ve .vscode/tasks.json gibi dosyaları da kontrol edin .
4 Ağustos 2026’daki olay, tek bir bakımcı hesabının ele geçirilmesinin npm gibi merkezi bir paket ekosisteminde ne kadar hızlı büyüyebileceğini gösterdi. Saldırganların meşru bir Bun çalışma zamanı kullanması, çalınan token’larla kendini başka paketlere yayması ve birden fazla veri sızdırma kanalı kurması, saldırıyı önceki tedarik zinciri vakalarından daha karmaşık hale getirdi .
Mühendislik ve güvenlik ekipleri için temel dersler açık: bağımlılıkları kesin sürümlere sabitlemek, mümkün olduğunda preinstall ve postinstall script’lerini devre dışı bırakmak, GitHub’daki olağandışı hareketleri izlemek ve npm tedarik zinciri ihlalleri için önceden hazırlanmış müdahale planlarını düzenli olarak test etmek.