npm'de 2026 solucan dalgaları: TanStack, @antv, Red Hat ve AsyncAPI olaylarından çıkan dersler

Sabit admin açtı, 2 gün önce 0 yanıt 10 görüntülenme
admin Admin
  • 0 mesaj
  • 1K puan
  • Katılım 12.2025
  • Konu sahibi

Eylül 2025'teki Shai-Hulud solucanı ile başlayan "kendini çoğaltan paket" dönemi 2026'da hızlanarak sürdü. Palo Alto Unit 42'nin derlemesinden önemli olayları ve JavaScript projelerinde uygulanabilecek önlemleri özetliyorum.

Zaman çizelgesi

TarihOlayNot
22 Nisan@bitwarden/cli@2026.4.0Yaklaşık 1,5 saat yayında kaldı; preinstall kancası Bun indirip kimlik bilgisi hırsızı çalıştırdı
29 NisanMini Shai-Hulud (SAP)4 paket, haftalık ~570 bin indirme
11 MayısTanStack dalgasıÇalınmış kimlik bilgisi yok: GitHub Actions'ta pwn request + önbellek zehirleme + çalıştırıcı belleğinden OIDC token. Gün sonunda 169 pakette 373 zararlı sürüm; geçerli SLSA provenance taşıyorlardı
19 Mayıs@antv dalgasıBakımcı hesabı ele geçirildi; yaklaşık bir saatte 323 pakette 639 zararlı sürüm
1 Haziran@redhat-cloud-servicesEn az 32 paket; ele geçirilmiş bir çalışan hesabıyla kod incelemesini atlayan "orphan commit"ler
14 TemmuzAsyncAPIKorumasız ön sürüm dallarına (next, schema) yapılan commit'ler yayın hattını tetikledi

Öne çıkan teknikler

  • Solucan yayılımı: Kurbanın npm ve GitHub token'ları ile, kurbanın bakımını yaptığı diğer paketler de zehirleniyor.
  • Kurulum anında çalışma: preinstall kancaları, git bağımlılıkları ve bin alanı takma adları. Unit 42'ye göre bin takma adları --ignore-scripts açıkken bile çalışmaya yol açabiliyor. Ocak 2026'da duyurulan "PackageGate" açıkları da git bağımlılıkları ve .npmrc üzerinden betik engellemesinin atlanabildiğini göstermişti.
  • Provenance tek başına güvence değil: TanStack dalgasındaki paketler geçerli SLSA Build Level 3 kanıtı taşıyordu, çünkü zararlı kod meşru yayın hattının içinden yayımlandı.
  • Çok katmanlı komuta altyapısı: Miasma yükü; sabit IP, Ethereum akıllı sözleşmesi, Nostr röleleri ve BitTorrent DHT'yi birlikte kullanıyor. Tek bir katmanı engellemek yetmiyor.
  • Ölü adam anahtarı: 11 Mayıs yükünün, çalınan GitHub token'ı iptal edilirse ev dizinini silmeye çalıştığı bildirildi. Olay müdahalesinde önce makineyi izole edin, sonra token'ı iptal edin.

Ekipler için savunma listesi

  1. Bekleme süresi: Yeni yayımlanan sürümleri 24-72 saat almayın. Dalgaların çoğu saatler içinde tespit ediliyor.
  2. Kilit dosyası ve npm ci: CI'da asla kilit dosyasını güncelleyen bir kurulum yapmayın.
  3. Betikleri kapatın: .npmrc içinde ignore-scripts=true; derleme gerektiren paketleri tek tek izinli listeye alın. Bunun tam koruma olmadığını unutmayın.
  4. Özel registry/proxy: Geliştirici makineleri ve CI doğrudan genel registry'ye değil, kontrol ettiğiniz bir proxy'ye (Verdaccio, Artifactory, Nexus) bağlansın.
  5. CI çıkış trafiğini kısıtlayın: Çalıştırıcılar yalnızca registry'nize ve dağıtım hedeflerinize erişebilsin. Veri sızdırma ve ikinci aşama indirme engellenir.
  6. GitHub Actions sertleştirme: pull_request_target ile fork kodunu çalıştırmayın, ön sürüm dalları dahil tüm yayın dallarını koruyun, yayın iş akışlarında önbellek kullanımını gözden geçirin.
  7. Kendi paketleriniz için: Beklenmeyen sürüm artışlarını, yeni preinstall kancalarını ve GitHub hesabınızda sizin açmadığınız depoları izleyin.
  8. Olay sonrası: npm token'ları, GitHub PAT'leri, bulut anahtarları, SSH anahtarları ve CI sırlarının hepsini yenileyin. CI'da beklenmeyen bun süreçlerini arayın.

Siz ekip olarak hangi önlemleri uyguluyorsunuz? Özellikle bekleme süresini nasıl uyguladığınızı (Renovate minimumReleaseAge, proxy kuralı vb.) paylaşırsanız faydalı olur.

Kaynaklar

Yanıt yazmak için giriş yap. Giriş yap Hesap oluştur