Mini Shai-Hulud Yeniden Saldırdı: npm Üzerinde 314 Paket Tehlikeye Atıldı

JavaScript topluluğunun en yaygın bağımlılık aracı npm üzerinde bir tedarik zinciri saldırısı bu hafta ortaya çıkarıldı. Güvenlik şirketi SafeDep'in bildirdiğine göre Mini Shai-Hulud olarak adlandırılan bir saldırgan grubu, 314 popüler npm paketine zararlı bir varyant gizledi. Saldırı, tek bir bağımsız geliştiriciye değil, paketlerin orijinal yayımcılarına ait yayımlama kimlik bilgilerinin ele geçirilmesi yoluyla yapıldı.
Saldırının adı, 2024'te aynı saldırgan grubunun düzenlediği büyük ölçekli Shai-Hulud kampanyasından geliyor. Geçen yılki saldırı, GitHub Actions üzerinden açılan bir CD/CD pipeline güvenlik açığını kullanarak yaklaşık 1.500 paketi tehlikeye atmıştı. Mini Shai-Hulud, aynı saldırgan ekibinin daha küçük ama daha hedefli bir versiyonu — bu kez yayımcı erişim tokenları için phishing yoluyla npm hesaplarına girdi.
Etkilenen 314 paket arasında popüler iki kategorideki paketler yer alıyor. Bir grup, kullanıcı tabanı 100.000 indirme/hafta olan dosya manipülasyonu kütüphaneleri (fs-extra eklentileri, glob varyantları). İkinci grup, kullanıcı tabanı daha küçük ama enterprise kullanımı yoğun olan log/diagnostic kütüphaneleri. SafeDep'in saldırı analizinde yayımcıların büyük çoğunluğunun iki faktörlü kimlik doğrulamayı atlamış (single-token authentication mode) kullandığı görüldü.
Saldırının tekniği, paketlerin paket.json dosyasına gizlice eklenmiş bir "postinstall" çağrısı. npm install komutu çalıştığında otomatik olarak çalışıyor; ardından küçük bir betik, kullanıcı sisteminden çevre değişkenleri (özellikle AWS_ACCESS_KEY, NPM_TOKEN, GITHUB_TOKEN, OPENAI_API_KEY) topluyor ve uzaktaki bir komuta kontrol sunucusuna gönderiyor. Karmaşık olmayan ama etkili bir saldırı yapısı.
SafeDep'in açıklamasına göre saldırı 17 Mayıs gece yarısı (UTC) saatlerinde başladı ve 18 saat sonra tespit edildi. Bu süreçte etkilenen paketlerin tahmini 2,8 milyon yeni indirme aldığı belirtildi. Hangi geliştiricilerin kişisel ortamından veri çıktığı henüz tam olarak bilinmiyor; SafeDep, saldırının komuta kontrol sunucusu IP adreslerini engellemek için 19 Mayıs sabahı GitHub'a uyarı gönderdi.
npm Inc., olayı doğruladı ve etkilenen paketlerin tümü zararsız sürümlere geri çevrildi. Aynı zamanda 23 yayımcı hesabı geçici olarak askıya alındı; hesap sahiplerinden yeniden kimlik doğrulaması yapmaları, iki faktörü zorla etkinleştirmeleri ve son üç ayda kullandıkları tokenleri rotasyona almaları istendi. npm'in tüm yayımcılarına yönelik daha geniş bir politika güncellemesi de planlanıyor; tüm yayımcılarda iki faktörlü kimlik doğrulama zorunluluğu konusunda bir önerinin gelmesi bekleniyor.
Geliştirici topluluğu için pratik tavsiyeler dört kategoriye ayrıldı. Birincisi, son 18 saatte npm install komutu çalıştıran sistemler için ortam değişkenlerinin rotasyonu. İkincisi, package-lock.json dosyalarının diff'le manuel olarak gözden geçirilmesi (postinstall script eklenip eklenmediği). Üçüncüsü, kurumsal ortamlarda npm install komutlarının bir sandbox içinde çalıştırılması. Dördüncüsü, projelerinde Snyk, GitHub Dependabot, veya SafeDep'in kendi tedarik zinciri analiz aracını kullanmaları.
Saldırının daha geniş anlamı, JavaScript ekosisteminin yapısal güvenlik problemleridir. npm üzerinde aktif olarak 3,2 milyon paket bulunuyor; yaklaşık %14'ünün tek bir yayımcı tarafından sürdürüldüğü düşünülürse, tek bir hesabın ele geçirilmesi geniş bir kullanıcı tabanını etkileyebilir. Geçen yıl GitHub, npm'i resmi olarak kendi platformunun parçası haline getirdiğinden bu yana güvenlik politikalarının uyumu daha sıkı bir şekilde takip ediliyor; ancak yapısal güvenlik yine de yayımcının seçimine bağlı.
Savunma açısından bir başka önemli teknik geliştirme, son 12 ayda büyüyen paket imzalama (package signing) protokolüne katılma oranı. Mart 2026'dan itibaren GitHub, paketlerin yayımcının imzasıyla doğrulanabilmesini olanaklı kıldı; bugüne kadar npm paketlerinin yaklaşık %18'i bu imzayı kullanıyor. Mini Shai-Hulud kampanyasında etkilenen 314 paketin hiçbiri imzalı değildi.
Geleceğe bakıldığında, JavaScript ekosistemindeki bu olayların artması — son üç yılda npm üzerinde her yıl yaklaşık 30-40 kayda değer tedarik zinciri saldırısı kaydedildi — endüstrinin paket yöneticilerinin güvenlik düzeyini yeniden incelemesi gerektiğini gösteriyor. Python (pypi), Ruby (rubygems) ve Rust (crates.io) gibi diğer ekosistemler daha sıkı varsayılan güvenlik politikalarına sahip. Buna karşılık npm'in olağan açık politikası, geliştirici dostu olduğu kadar güvensiz olarak da değerlendiriliyor.