npm’de Shai-Hulud dalgası: keyv ve yüzlerce paket provenance ile ele geçirildi
4 Ağustos 2026’da saldırganlar, keyv maintainer’ının GitHub hesabını ele geçirerek geçerli GitHub Actions provenance ile zararlı npm sürümleri yayımladı. Shai-Hulud tarzı bir solucan, preinstall kancası (setup.mjs) ile Bun indirip kimlik bilgisi çalan obfuscated bir yük çalıştırıyor; ardından çalınan npm token’larıyla yeni paketler yayımlayarak yayılıyor. Geliştirici ekipler için acil adımlar: lockfile denetimi ve credential rotation.
Ana Gelişme
Aikido Security’nin olay raporuna göre saldırı zinciri maintainer GitHub hesabından (jaredwray) başlıyor. Zararlı sürümler geçerli provenance taşıdığı için “imzalı = güvenli” varsayımını kırıyor. İlk dalga keyv, cacheable, flat-cache, file-entry-cache ve ilişkili paketleri vurdu; sektör raporlarında Deliveroo, Picsart, Qlik gibi kuruluşların paket ağaçlarına yayılım da anılıyor.
Yük deseni çoklu vendor teyidiyle tutarlı: preinstall / setup.mjs → Bun → Math_Symbol.js credential stealer. Hedeflenen sırlar arasında npm, GitHub, AWS, Kubernetes, Vault, Stripe ve Slack token’ları ile geniş dosya sistemi taraması yer alıyor. Wiz, olayı Mini Shai-Hulud soyundan bir türev olarak tanımlıyor; IOC örnekleri arasında Bun/1.3.13 ve npm-cache[.]com bulunuyor. Socket yayılımı çalınan npm token’ları ve OIDC trusted publishing üzerinden anlatıyor. Snyk erken tarball analizinde jaredwray maintainer paketlerinde 11 zararlı sürüm ve [email protected] ile byte-identical payload’lar bildirdi — bu erken kapsam, solucanın toplam paket sayısını çürütmez.
Warning
Etkilenen paket sayıları aynı gün içinde yükselmeye devam ediyor. Aikido 13:37 CEST civarında 434+ paket / 1.381 sürüm; ilerleyen saatlerde 868; DevOps.com raporunda ise 1.280+ paket ve birkaç dakikada 50–100 yeni paket eklenmesi aktarılıyor. Tek bir “güncel toplam” sabitlenmemeli — zaman damgalı kaynakla okunmalı. Birleşik aylık indirme tahmini (2B+) Aikido/DevOps.com’da aggregate tahmin olarak geçiyor.
Neden Önemli?
Türkçe konuşan geliştirici ve DevOps ekipleri için bu olay doğrudan actionable: package-lock.json / pnpm-lock.yaml / yarn.lock içinde etkilenen aileleri aramak, CI ve geliştirici makinelerinde npm/GitHub/cloud token’larını rotate etmek, install script hijyenini sıkılaştırmak. trusted-provenance’ın “güvenli paket” demek olmadığını gösteren somut bir vaka.
Aynı günkü AppSec finansman haberlerinden (Oligo vb.) ayrı tutulmalı; burada konu aktif supply-chain solucanı. Runtime savunma ilgisinin artması bağlamdır, bu turların nedeni değildir.
Teknik Detaylar
Saldırı, klasik “hesap çalındı, sürüm basıldı” modelini provenance ile birleştiriyor. GitHub Actions ile üretilmiş attestation, tüketicide güven sinyali yaratırken maintainer hesabı ele geçirildiğinde aynı sinyal saldırganı güçlendiriyor.
Solucan bileşeni, çalınan publish yetkisiyle otomatik yeniden paket yayımlama döngüsü kuruyor. Bu yüzden IOC listeleri saatlik güncelleniyor; sabit bir “şu N paket” manşeti yanıltıcı olur. Remediation odağında: bilinen IOC’lere göre lockfile taraması, preinstall/setup.mjs anomalileri, Bun’un beklenmedik kurulumu, credential rotation, ve mümkünse install script’leri kısıtlayan politika (npm v12 install-script varsayılanları uzun vadeli yapısal çözüm olarak tartışılıyor).
Bağlam
Olay, 2026 npm-supply-chain-2026 salgınının ve shai-hulud-worm / Miasma hattının devamı. Önceki dalgalarla karıştırılmamalı: bu dalga keyv/cacheable çekirdeği, Bun tabanlı loader ve provenance-backed publish ile ayrışıyor. Supply-chain attack ve supply-chain-security wiki ipliklerine bağlanıyor.
Sonraki Adımlar
Yayımlama anında Aikido, Wiz, Socket ve DevOps.com IOC listelerini yeniden kontrol edin; paket sayılarını zaman damgasıyla aktarın. Ekipler: (1) lockfile’da keyv/cacheable/flat-cache ve güncel IOC listesini tara, (2) npm/GitHub/cloud token’larını rotate et, (3) CI’da install script politikasını gözden geçir, (4) etkilenen ortamlarda secret scan çalıştır. Exploit payload veya silahlandırma adımları paylaşılmamalı.