· kaynak dev.to (home feed)
GitHub'ın npm trusted publishing için getirdiği 48 saatlik geçerlilik süresi, repository slug ele geçirme açığını kapatıyor
GitHub, hiç kullanılmamış npm trusted publishing yapılandırmalarını artık 48 saat sonra otomatik olarak geçersiz kılıyor; bu adım, saldırganların terk edilmiş repository adlarını ele geçirip kötü niyetli paket güncellemeleri yayınlamasına imkân tanıyan bir açığı kapatıyor.

Ne oldu
GitHub, hiç başarılı bir yayın için kullanılmamış npm trusted publishing yapılandırmalarında 48 saatlik bir geçerlilik süresini uygulamaya başladı. dev.to'da yer alan bir habere göre bu değişiklik, bir saldırganın terk edilmiş bir repository adını ele geçirip orijinal geliştiricinin kimlik bilgilerine hiç dokunmadan paket güncellemeleri yayınlamasına olanak tanıyan bir supply chain zafiyetini ortadan kaldırıyor.
Güvenlik firması Bloom Security, sorunu 6 Haziran 2026'da GitHub'a bildirdi. Analizlerine göre 1.500'den fazla paket bu soruna maruz kalmıştı ve bu paketler toplamda 10 milyondan fazla kez indirilmişti.
Açık nasıl çalışıyordu
Trusted publishing, uzun ömürlü tokenların yerini alarak bir npm paketinin belirlenmiş bir GitHub repository'sinden otomatik olarak yayınlanmasını sağlıyor; paket ile kaynak repository arasında her yayında bir kerelik bir bağ kuruluyor. dev.to'nun aktardığına göre açık, bu bağın kurulma biçimindeydi: sahiplik, projeye bağlı kalıcı bir tanımlayıcı üzerinden değil, repository'nin adresi — yani adı — üzerinden çözülüyordu.
Bu, güven ilişkisinin değiştirilebilir bir etiketi izlediği anlamına geliyordu. Bir repository adı herhangi bir nedenle boşa çıktığında — örneğin bir proje silindiğinde ya da terk edildiğinde — bir saldırgan o adı kaydedip paketin yayın haklarını fiilen devralabiliyordu. Böylece kötü niyetli bir sürüm, orijinal paketin yerleşik itibarından ve indirme hacminden yararlanabiliyor, gerçek yazar ise yayınlanan kodun hiçbirini onaylamamış oluyordu.
GitHub ne değiştirdi
Yeni politika uyarınca bir trusted publishing yapılandırmasının geçerli sayılması için, oluşturulduktan sonraki 48 saat içinde başarılı bir yayınlama ile doğrulanması gerekiyor; aksi halde yapılandırma otomatik olarak geçersiz oluyor. İlk yayınlama tamamlandığında yapılandırma kalıcı hale geliyor. Projenin kimliği sonradan değişirse — örneğin repository'nin adı değiştirilir veya aktarılırsa — eski doğrulama artık geçerli sayılmıyor: kendi 48 saatlik penceresiyle birlikte yepyeni bir yapılandırma oluşturulması gerekiyor.
npm ayrıca ikinci bir kısıtlama daha ekleyerek belirli otomatik kod yorum ve istek süreçlerinden gelen yayın taleplerini reddediyor. Rapor, hangi akışların tam olarak engellendiğini saymamakta, bunları yalnızca otomatik yorum ve istek etkinliği olarak tanımlamakta.
Geliştiriciler ne yapmalı
dev.to'nun aktardığına göre GitHub'ın paket geliştiricilerine yönelik önerileri oldukça net:
- Mevcut trusted publishing yapılandırmalarını gözden geçirin ve her birinin hâlâ gerçekten kontrolünüzdeki bir repository'yi işaret ettiğini doğrulayın.
- Bir repository'nin adı değiştirildiyse veya taşındıysa eski bağlantıyı silin ve yeniden oluşturun; bu, taze bir doğrulama döngüsü başlatır.
- Paketlerinizi beklenmedik herhangi bir yayın etkinliği açısından izleyin.
Neden önemli
Trusted publishing, npm yayınlarını daha güvenli hale getirmek için var; ancak bu olay, bir güven mekanizmasının ancak bağlandığı kimlik kadar sağlam olduğunu gösteriyor. Yayın haklarını bir repository adına — yani herkesin serbest bırakılabileceği ve sonradan yeniden kaydedebileceği bir şeye — bağlamak, sessizce bir güvenlik özelliğini saldırı yoluna dönüştürdü; Bloom Security'nin rakamları da olası etki alanının kayda değer olduğunu gösteriyor: boşta kalan bir slug'ı talep etmeye istekli herkesin ulaşabileceği mesafede binden fazla paket ve milyonlarca indirme vardı.
Geliştiriciler için pratik sonuç, bir göç değil, ılımlı bir düzenleme işi. Ana risk grubunu, repository'si yeniden adlandırılmış veya aktarılmış kişiler oluşturuyor; zira bayat bir güven bağlantısının başkası eski adı alana kadar sallanabileceği durumlar tam da bunlar. 48 saatlik geçerlilik süresi, doğrulanmamış bir yapılandırmanın süresiz olarak beklemesini engelliyor; kimlik değişikliğinden sonraki yeniden doğrulama zorunluluğu ise araştırmacıların gösterdiği boşta kalan bağlantı senaryosunu ortadan kaldırıyor. Platform tasarımcıları için daha genelsel ders ise daha zor: geri alınabilir adlara dayanan kimlik doğrulaması her zaman bir ad değişikliği uzağında bozulmaya hazır olacak ve kalıcı tanımlayıcılar daha sağlam bir temel oluşturacak.
- #npm
- #github
- #supply-chain-security
- #package-management
- #security
İlgili yazılar
- GitHub, LLM tabanlı secret scanning'in yerini ince ayarlı ModernBERT'e bıraktı: tarama süresi yüzde 86 azaldı
- Ivanti Connect Secure zero-day zinciri saldırganlara kimlik doğrulamasız root erişimi verdi; bir açık hâlâ yamasız
- Ledger, bayisi CryptoBilis üzerinden satılan Nano X cüzdanlarında casus çip implantını doğruladı