4 Ağustos 2026 tarihinde ilk kez [email protected] sürümünde ortaya çıkan ve kimlik bilgilerini çalan bir npm solucanı, Keyv ve Cacheable ad alanlarının ötesine geçerek çok sayıda kuruluştaki yüzlerce pakete bulaştı.
SafeDep, npm kayıt defterinde 79 paket adında toplam 353 zehirlenmiş sürüm tespit etti. Güvenlik şirketinin izlemeleri, yayılımın 353 farklı isimde 442 sürüme ulaştığını gösterdi. Aikido ise daha sonra en az 868 pakette ve 1.381 sürümde zararlı yazılım bulunduğunu açıkladı. Ancak raporlama kesim tarihi itibarıyla, bu geniş kapsamlı sayıların hiçbirinin eksiksiz bir kamu listesi üzerinden bağımsız olarak doğrulanması mümkün olmadı.
Zararlı sürüm, geliştirici ve sürekli entegrasyon (CI) ortamlarında kimlik hırsızlığı yapan bir paketi çalıştırmak için bir preinstall (ön yükleme) betiği kullandı. SafeDep ve Socket, bu zararlı yazılımın depo, paket kayıt defteri, bulut ve özel anahtar materyallerini toplayabildiğini, ardından mevcut npm yayınlama erişimini kullanarak daha fazla paketi zehirleyebildiğini belirtiyor.
Keyv deposunda ayrıca, kullanıcı çalışma alanına güvendiğinde veya proje yapılandırmasına izin verdiğinde yükü çalıştırabilen ayrı Claude Code ve Visual Studio Code (VS Code) kancaları da yer alıyor.
Socket, etkilenen bir sürümü çalıştıran herhangi bir iş istasyonunun veya çalıştırıcının (runner) kimlik bilgileri ele verilmiş olarak kabul edilmesi gerektiğini vurguluyor. SafeDep ise müdahale ekiplerine, maruz kalan belirteçleri (token) ve anahtarları döndürmeden önce zararlı yazılımın kimlik iptali izleyicisini kaldırmalarını tavsiye ediyor.
İzleyicinin tetikleyicisi iptal (revocation) işlemidir; önce anahtarları döndürmek, saldırganın sağladığı yerel bir işleyiciyi çalıştırabilir. npm 12, varsayılan olarak onaylanmamış bağımlılık yaşam döngüsü betiklerini engelliyor ancak yaşam döngüsü betiklerine izin veren daha eski npm istemcileri ve diğer kurulum yolları hala açık durumda.
Doğrulanan ilk zararlı sürüm [email protected] idi. Bu sürüm, derlenmiş kütüphane kodunu değiştirmeden bırakırken, pakete bir preinstall komutu olarak node setup.mjs ekledi ve setup.mjs ile Math_Symbol.js dosyalarını dahil etti.
İlk aşama Bun'un varlığını kontrol ediyor, gerekirse çalışma zamanının resmi GitHub sürümlerinden 1.3.13 sürümünü indiriyor ve ardından 727.680 baytlık derlenmiş bir pakete devrediyor.