3 puan yazan GN⁺ 2025-09-20 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Açık kaynak paketi @ctrl/tinycolor'ı içeren çok sayıda npm paketi kötü amaçlı sürümlerle enfekte oldu; bunun nedeni, ortak kullanılan bir depodaki GitHub Actions workflow'u üzerinden npm token'ının çalınmasıydı
  • Saldırgan, geniş yetkilere sahip npm token'ını kullanarak yaklaşık 20 pakete kötü amaçlı kod dağıttı; bunlar arasında @ctrl/tinycolor haftalık 2 milyon indirmeye ulaştığı için etkisi büyüktü
  • Enfekte sürümler postinstall aşamasında kötü amaçlı payload çalıştırdı; GitHub ve npm güvenlik ekipleri hızla müdahale ederek kaldırma ve temizlik işlemlerini gerçekleştirdi
  • Yazar, tekrarını önlemek için Trusted Publishing (OIDC) geçişi, token yetkilerinin en aza indirilmesi, 2FA zorunluluğu ve pnpm özelliklerinden yararlanılması gibi güçlendirilmiş bir güvenlik planı hazırladı
  • Bu olay, yazılım tedarik zinciri güvenliğinin kırılganlığını gösteriyor ve npm ekosistemi genelinde güvenlik özelliklerinin iyileştirilmesiyle güvenlik pratiklerinin değişmesi gerektiğini ortaya koyuyor

TL;DR

  • Kötü amaçlı bir GitHub Actions workflow'u paylaşılan bir depoya push edilerek npm token'ı çalındı
  • Bu token ile saldırgan 20 paketin kötü amaçlı sürümlerini yayımladı; bunlar arasında @ctrl/tinycolor yüksek indirme sayısı nedeniyle daha büyük etki yarattı
  • Kişisel hesaplar veya repolar doğrudan ele geçirilmedi; ayrıca phishing ya da yerel kötü amaçlı yazılım kurulumu da olmadı
  • GitHub/npm güvenlik ekiplerinin hızlı müdahalesiyle kötü amaçlı sürümler kaldırıldı, ardından cache'i temizlemek için temiz sürümler yeniden yayımlandı

Olay nasıl fark edildi? (How I Found Out)

  • 15 Eylül öğleden sonra topluluk üyesi Wes Todd, Bluesky DM üzerinden sorunu bildirdi
  • GitHub/npm güvenlik ekipleri etkilenen paketlerin listesini çoktan toparlamış ve kaldırma sürecini başlatmıştı
  • İlk ipucu olarak paylaşılan kötü amaçlı branch adı 'Shai-Hulud'du; bu ad Dune evrenindeki kumsolucanından geliyor

Gerçekte ne oldu? (What Actually Happened)

  • Uzun zaman önce birlikte çalışılan angulartics2 deposunda, hâlâ admin yetkisine sahip bir işbirlikçi bulunuyordu
  • Bu depoda saklanan npm token'ı, kötü amaçlı bir GitHub Actions workflow'u tarafından çalındı
  • Saldırgan bu token ile @ctrl/tinycolor dahil yaklaşık 20 paketi yayımladı
  • GitHub/npm güvenlik ekipleri kötü amaçlı sürümleri hızla kaldırdı ve yazar güvenilir yeni sürümleri tekrar yayımladı

Etki (Impact)

  • Kötü amaçlı sürümler kurulduğunda postinstall script'i çalışarak güvenlik tehdidi oluşturdu
  • Etkilenen kullanıcıların StepSecurity'nin anlık müdahale rehberine başvurması öneriliyor

Yayınlama ortamı ve müdahale planı (Publishing Setup & Interim Plan)

  • Daha önce otomatik yayınlama için semantic-release + GitHub Actions kombinasyonu kullanılıyordu
  • npm'nin provenance özelliği kullanılmış olsa da, geçerli bir token'a sahip saldırganı engelleyemedi
  • İleride statik token'ları kaldırmak için Trusted Publishing (OIDC) kullanılacak
  • Şu anda tüm token'lar iptal edildi; ayrıca 2FA zorunlu hale getirildi, yalnızca granular yetkili token'lara izin veriliyor ve pnpm'in minimumReleaseAge özelliği gibi ek güvenlik önlemleri değerlendiriliyor

İdeal iyileştirmeler (Publishing Wishlist)

  • npm hesap düzeyinde OIDC tabanlı Trusted Publishing'i zorlama seçeneği sunulmalı
  • provenance eksik olduğunda yayını engelleme özelliği ile semantic-release ve OIDC'nin tam entegrasyonu sağlanmalı
  • GitHub arayüzünde 2FA tabanlı manuel onaylı yayınlama özelliği sunulması isteniyor
  • Pro abonelik olmadan da GitHub Environments düzeyindeki koruma özellikleri kullanılabilmeli
  • npm paket sayfalarında postinstall script'i bulunup bulunmadığı gösterilmeli ve silinen sürümlerin neden kaldırıldığı açıklanmalı

Henüz yorum yok.

Henüz yorum yok.