Disrupting supply chain attacks on npm and GitHub Actions
Son bir yıldır paket depoları ve CI/CD sistemlerindeki zayıflıkları hedef alan tedarik zinciri saldırıları, açık kaynak projelerine hızla zararlı yazılım bulaştırmak için tekrar eden bir örüntü izliyor. Saldırıların ortak amacı kimlik bilgilerini sızdırmak; böylece hem saldırı daha geniş kitleye yayılıyor hem de sonraki istismarlara zemin hazırlanıyor. GitHub bu zincirin en kritik halkalarını kırmak için npm ve GitHub Actions tarafında bir dizi değişiklik hayata geçirdi. Aşağıda bu değişikliklerin saldırının hangi aşamasına dokunduğunu ve kullanıcıya nasıl bir güvenlik katmanı sunduğunu özetliyorum.
Tedarik zinciri saldırılarının anatomisi
Bu saldırılar tek bir zaafiyet üzerinden değil, birbirine bağlanan birçok zayıflık üzerinden ilerliyor. Tek bir güvenlik özelliğinin çözüm sunması bu yüzden mümkün değil; en etkili yaklaşım, zincirin kritik halkalarını hedefleyen bütünsel bir savunma. Saldırılar yayılma biçimlerinde farklılaşsa da genel olarak üç aşamayı izliyor: bir projeye ilk erişimi elde etmek, yetkileri yükseltmek ve saldırıyı kullanıcılarla yazılımlar arasında yaymak. npm ve GitHub Actions üzerindeki iyileştirmeler tam da bu aşamaları hedef alıyor.
İlk erişimi zorlaştıran değişiklikler
Saldırılar çoğunlukla bir bakım sorumlusunun (maintainer) hesabının ele geçirilmesiyle ya da projenin Actions iş akışlarının hedef alınmasıyla başlıyor. Bu aşamayı kırmak için şu adımlar devreye alındı:
- Yüksek etkili npm hesapları için önleyici koruma (Haziran 2026): Kimlik avı kampanyaları bakım sorumlularını hedef aldığında saldırganın ilk adımı hesabı ele geçirmek oluyor. Bu değişiklikle, yüksek etkili npm hesapları e-posta değişikliği yaptığında veya 2FA kurtarma kodu kullandığında 72 saatliğine salt okunur moda alınıyor. Bu gecikme, saldırı başlatılmadan önce hesap sahibine müdahale fırsatı veriyor.
- Actions checkout için daha güvenli
pull_request_targetvarsayılanları (Haziran 2026): Fork’lardan gelen pull request’lerde güvenilmez kodun çalıştırılmasına yol açan “pwn request” kalıbı en yaygın CI/CD zaafiyetlerinden biri.actions/checkout‘un varsayılan davranışı değiştirilerek, sık istismar edilen tetikleyicilerde fork’tan güvenilmez kodun otomatik olarak checkout edilmemesi sağlandı; risk kabul ediliyorsa açıkça devre dışı bırakmak gerekiyor. Değişiklik eski sürümlere de geri taşındı. - Workflow tetikleyicileri üzerinde denetim (Haziran 2026): Riskli tetikleyicileri tamamen devre dışı bırakmak veya sadece belirli kişilerin tetiklemesine izin vermek isteyenler için işletme, organizasyon ya da depo düzeyinde politika tanımlanabiliyor. CI/CD altyapısına en az ayrıcalık ilkesini uygulayan, yönetilebilir bir katman ekliyor.
- Güvenilmez tetikleyiciler için salt okunur Actions cache (Haziran 2026): Bir Actions iş akışında kod çalıştırmayı başaran saldırganların bir sonraki hedefi, workflow’lar arasında paylaşılan cache girdilerini zehirleyerek daha ayrıcalıklı iş akışlarına ve kimlik bilgilerine ulaşmak. Yeni davranışla düşük güvenli iş akışlarının başkalarıyla paylaşılan cache’i değiştirmesi kısıtlanıyor; böylece sınırlı etkili bir zaafiyet, yayın ve publish iş akışlarındaki kritik kimlik bilgilerini tehlikeye atamıyor.
Kimlik bilgisi sızdırmayı engellemek
Saldırgan bir pakete erişim sağladıktan sonra odak, ekosistemler arasında kullanılabilecek kimlik bilgilerini tespit edip dışarı sızdırmaya kayıyor. Bu aşamayı kırmak için iki önemli hamle var:
- npm trusted publishing için CircleCI desteği (Nisan 2026): Bu saldırıları en etkili biçimde kırmanın yolu, CI/CD hattından uzun ömürlü kimlik bilgilerini tamamen çıkarmak. Trusted publishing, paket deposuna yayın yetkisini uzun ömürlü bir anahtar olmadan vermeyi sağlıyor. CircleCI’ın da desteklenen sağlayıcılar arasına eklenmesiyle bu kabiliyet daha geniş bir kitleye açıldı.
- Actions ağ güvenlik duvarı (teknik önizleme): Bu önizleme, Actions iş akışlarındaki tüm çıkış ağ trafiğini kayıt altına alıyor; zararlı kod indirme veya bilinmeyen bir alan adına kimlik bilgisi gönderme gibi olağan dışı davranışlar bu sayede tespit edilebiliyor. İleride ağ çıkışını politika bazlı engelleme yeteneklerinin de ekleneceği belirtiliyor.
Saldırının yayılmasını kesmek
Kimlik bilgilerini toplayan saldırganın son hedefi, bu bilgileri kullanarak zararlı yazılımı olabildiğince fazla projeye ve bakım sorumlusuna hızla dağıtmak. Bu aşamayı yavaşlatan ve kıran değişiklikler şöyle:
- npm için aşamalı yayın (Mayıs 2026): Aşamalı yayınla birlikte npm üzerinde yeni paket sürümü yayımlamak için artık kimlik bilgisine sahip olmak yetmiyor; paketler ek onay ve npm cli veya npmjs.com üzerinden 2FA doğrulaması yapılana kadar staging alanında bekletiliyor. Opsiyonel olan bu kontrol, CI/CD otomasyonunda kullanılan kimlik bilgileri ile paket deposuna yayın yapabilecek kimlik bilgilerini birbirinden ayırıyor ve saldırı zincirini kesiyor.
- npm v12 ile gelen kırıcı değişiklikler (Haziran 2026): Saldırganlar zararlı yazılımı olabildiğince hızlı yaymak için, paketin çalışma zamanında kodun çalışmasını beklemek yerine npm kurulum betiklerini (install scripts) tercih ediyor. npm v12 ile bu install script’ler varsayılan olarak devre dışı bırakılıyor. Çeşitli popüler paketlerin bu mekanizmaya meşru şekilde ihtiyaç duyabildiği göz önünde bulundurularak, belirli script’lerin onaylanıp yeniden etkinleştirilmesi mümkün. Git veya uzak URL üzerinden bağımlılık tanımlama gibi ek kod çalıştırma vektörleri de varsayılan olarak kapatıldı.
- Dependabot için varsayılan paket soğuma süresi (Temmuz 2026): Saldırganların en büyük avantajı hız; zararlı bir sürümün fark edilmeden mümkün olduğunca çok projeye çekilmesini umuyorlar. Dependabot ile yapılan sürüm güncellemeleri artık pull request açmadan önce bir sürümün en az üç gün yayında olmasını bekliyor. Tespit sinyalleri böylece yüzeye çıkacak zaman buluyor. Soğuma süresi varsayılan olarak açık; güvenlik güncellemeleri ise hemen açılmaya devam ettiği için kritik düzeltmeler gecikmiyor.
Olay müdahalesi: tespit ve tepki araçları
Tedarik zinciri saldırılarının etkisini sınırlamanın yanında, etkilenen kullanıcıların hızlı müdahalesi için de yeni araçlar geliştirildi:
- Olay müdahalesi için self-servis kimlik bilgisi iptali (Haziran 2026): GitHub kimlik bilgileri saldırıların sürekli hedefi. Bu özellik, bir işletmedeki belirli bir kullanıcıya ait tüm kimlik bilgilerinin anlık olarak iptal edilmesini sağlıyor. İşletme yöneticileri ve üyeler, bir tedarik zinciri saldırısında kimlik bilgileri tehlikeye düştüğünde hızla müdahale edebiliyor.
- Genişletilmiş kimlik bilgisi iptal API’si (Mart 2026): Son dönemdeki saldırılar, çalınan kimlik bilgilerinin herkese açık içeriklerde ifşa edilmesini de içeriyor. Daha önce kişisel erişim token’ları için tanıtılan iptal API’si, GitHub OAuth ve App token’larını da kapsayacak biçimde genişletildi. Sızdırılan kimlik bilgileri artık nerede tespit edilirse edilsin hızla iptal edilebiliyor; kötüye kullanılabilecekleri süre de bu ölçüde kısalıyor.
Değerlendirme
Yukarıdaki değişikliklerin ortak noktası, tedarik zinciri saldırılarını tek bir noktadan durdurmaya çalışmak yerine zincirin farklı halkalarını hedef alması. İlk erişimi zorlaştıran varsayılanlar, kimlik bilgilerinin çıkışını kısıtlayan yaklaşımlar (özellikle trusted publishing) ve yayılmayı geciktiren staged publishing ile Dependabot cooldown bir arada değerlendirildiğinde, saldırganın işini birden çok noktada zorlaştıran bir mimari ortaya çıkıyor. Bu iyileştirmelerin bir kısmı varsayılan olarak açık, bir kısmı opt-in; ekiplerin bu özelliklerden azami faydayı sağlaması için mevcut Actions ve npm yapılandırmalarını gözden geçirmesi anlamlı olacaktır.
Kaynaklar ve İleri Okuma
- Disrupting supply chain attacks on npm and GitHub Actions – The GitHub Blog
- Our plan for a more secure npm supply chain
- Strengthening supply chain security: Preparing for the next malware campaign
- What’s coming to our GitHub Actions 2026 security roadmap
- npm adds preventive account protection for high-impact accounts
- Safer pull_request_target defaults for GitHub Actions checkout
- GitHub Actions: Preventing pwn requests
- Control who and what triggers GitHub Actions workflows
- Read-only Actions cache for untrusted triggers
- npm trusted publishing now supports CircleCI
- npm Trusted Publishers – Dokümantasyon
- Actions Native Egress Firewall (early access)
- Staged publishing and new install-time controls for npm
- GitHub Actions 2026 Güvenlik Yol Haritası: Sırada Bizi Neler Bekliyor?
- GitHub Actions Şüpheli Workflow’ları Onaya Alıyor
- GitHub Actions Nisan 2026 Güncellemeleri: Üç Küçük Ama Etkili Hamle







Yorum gönder