Giriş
2025 yılının Aralık ayında, Sha1-Hulud olayı sonrasında npm, tedarik zinciri saldırılarını azaltmak amacıyla büyük bir kimlik doğrulama güncellemesi gerçekleştirdi. Ancak, bu iyileştirmelere rağmen npm projeleri hala kötü amaçlı yazılım saldırılarına karşı savunmasız durumda.
Orijinal Sorun Nedir?
npm tarihi boyunca, klasik token’lara dayanıyordu: uzun süreli, geniş kapsamlı kimlik bilgileri, çalındığında saldırganların doğrudan yazarın paketlerine kötü niyetli sürümler yüklemesine olanak tanıyordu. Bu durum, npm’i tedarik zinciri saldırıları için ideal bir hedef haline getirdi. Gerçek dünyada yaşanan birçok olay bunu kanıtlıyor; Shai-Hulud ve Sha1-Hulud gibi saldırılar bu durumu gözler önüne seriyor.
npm’nin Çözümü
npm, bu sorunları aşmak için birkaç önemli değişiklik yaptı:
- Tüm klasik token’ları iptal edildi ve varsayılan olarak oturum tabanlı token’lara geçildi. npm ekibi token yönetimini de geliştirdi. Artık etkileşimli akışlar, genellikle iki saatlik kısa ömürlü oturum token’ları kullanıyor ve yayın için çok faktörlü kimlik doğrulamasını (MFA) zorunlu kılıyor.
- npm ekibi, CI sistemlerinin, saklanan sırlar yerine kısa ömürlü, her çalıştırma için kimlik bilgisi almasını teşvik eden OIDC Güvenilir Yayıncılığını öneriyor.
Bu yöntemler, kimlik bilgilerini hızlı bir şekilde geçersiz kılarak ve hassas işlemler sırasında ikinci bir faktör gerektirerek güvenliği artırıyor.
İki Önemli Sorun Kaldı
Birincisi, ChalkJS gibi araçlara yönelik ilk saldırının, npm konsolundaki başarılı bir MFA oltalama girişiminden kaynaklandığını unutmamak gerekiyor. Bununla birlikte, benzer e-postaların kısa ömürlü token’lar alabilmesi, saldırganların kötü niyetli yazılımları yüklemek için yeterli zamana sahip olması anlamına geliyor. Bu geçici token’lar, sadece birkaç dakikada kötü niyetli içerikler sunabilir.
İkincisi, yayınlama için MFA isteğe bağlı. Geliştiriciler, konsolda MFA baypas’ının etkin olduğu 90 günlük token’lar oluşturmayı sürdürebiliyor. Bu token’lar, kötü niyetli kişiler için geliştirilmiş bir konsol erişimi ile yeni, kötü amaçlı paketlerin yayınlanmasına neden olabilir.
Sonuç olarak, geliştiricilerin tedarik zinciri risklerinin hâlâ var olduğunun farkında olması gerekir.
Öneriler
Açık kaynak güvenliği ruhunda, GitHub ve npm’nin gelecekte dikkate alması gereken üç öneri:
- Uzun vadede OIDC’nin yaygınlığını teşvik etmelidir. OIDC, saldırıları büyük ölçüde önleyebilir.
- Daha gerçekçi bir yaklaşım olarak, yerel paket yüklemeleri için MFA’nın zorunlu hale getirilmesi, tedarik zinciri saldırılarının etkisini azaltabilir. Yani, MFA’yı atlatan özel token’lar oluşturulmamalıdır.
- En azından, paket sürümlerine zarar önleyici metadatalar eklenmesi, geliştiricilerin bu tür güvenlik önlemleri almayan paket veya bakım yapanlardan kaçınmasına yardımcı olur.
Yeni Bir Yaklaşım
Bu süre zarfında, npm’e yüklenen paketler aracılığıyla tedarik zinciri saldırıları hakkında konuştuk. Eğer her npm paketi, doğrulanabilir yukarı akış kaynak kodundan inşa edilebilseydi, çok daha iyi olurdu. Chainguard, müşterilerine, Chainguard Kütüphaneleri ile bunu sağlıyor.
Yapılan incelemelere göre, kötü niyetli paketlerin %98.5’i, yukarı akış kaynak kodunda yer almıyor. Yani, kaynak kodundan inşa etme yöntemi geçmiş verilere dayalı olarak %98.5 oranında saldırı yüzeyini azaltır.
Eğer bu uygulamalar ve öneriler dikkate alınırsa, geliştiriciler için en güvenli yol sağlar. Chainguard Kütüphaneleri hakkında daha fazla bilgi almak için ekibimizle iletişime geçebilirsiniz.
Sonuç
Tedarik zinciri risklerini azaltmak için, güncellemeleri ve yeni güvenlik önlemlerini göz önünde bulundurarak, npm ve diğer araçları sürekli olarak izlemek kritik önem taşıyor. Geliştiricilerin, yetkisiz erişimleri önlemek için MFA’yı etkin kullanmaları ve eski token tarzını bırakmaları gerekmektedir.


