irdaweb Bilgi Teknolojileri
Telefon numaramız +90 541 209 02 05
E-posta adresimiz [email protected]
Güvenlik · 8 dk okuma

18 dakikalık bir eklenti güncellemesi GitHub'ı nasıl vurdu?

Mayıs 2026'da yalnızca 18 dakika boyunca yayında kalan bir editör eklentisi, dünyanın en büyük kod barındırma platformunun binlerce iç deposunun sızdırılmasıyla sonuçlandı. Çarpıcı olan, saldırının ne kadar sofistike olduğu değil; tam tersine ne kadar sıradan bir güven ilişkisini istismar ettiği. Geliştiricinin her gün açtığı editöre kurduğu bir eklenti, sessizce bir saldırganın eline geçti. Gelin bu olayı adım adım açalım ve ekiplerin bundan ne çıkarması gerektiğine birlikte bakalım.

18 dakikada ne oldu?

18 Mayıs 2026'da, milyonlarca geliştiricinin kullandığı Nx Console adlı VS Code eklentisinin zararlı bir sürümü resmî marketplace'e yüklendi. Eklenti, ele geçirildiği fark edilip kaldırılana kadar yaklaşık 18 dakika yayında kaldı. Bu kısacık pencerede eklenti, otomatik güncelleme mekanizması sayesinde binlerce makineye sessizce indi ve çalışmaya başladı.

Sonuç, birkaç gün içinde GitHub'ın resmî açıklamasıyla netleşti: saldırganlar, bir GitHub çalışanının makinesi üzerinden şirketin yaklaşık 3.800 iç deposunu sızdırdı. GitHub, müşteri verilerinin etkilenmediğini, sızıntının yalnızca kurum içi depolarla sınırlı kaldığını belirtti. Aynı tedarik zinciri olayının dalgaları OpenAI, Mistral AI ve Grafana Labs gibi başka kuruluşlara da ulaştı. Olayı üstlenen grup, son dönemde geniş çaplı tedarik zinciri saldırılarıyla anılan TeamPCP oldu.

Buradaki asıl ders şu: kod barındırmadan editöre, eklenti dağıtımından otomatik güncellemeye kadar zincirin neredeyse her halkasının tek bir çatı altında (Microsoft) olması bile bu saldırıyı durdurmaya yetmedi. Çünkü kırılan bir yazılım açığı değil, bir güven ilişkisiydi.

Saldırı zinciri nasıl ilerledi

Bu olayın en öğretici yanı, tek bir büyük açık yerine küçük güven adımlarının birbirini tetiklemesi. Zincir kabaca şöyle işledi:

1. Sızan bir geliştirici kimliği

Her şey daha önceki bir olayla, TanStack projesini hedef alan ayrı bir tedarik zinciri saldırısıyla başladı. O olayda Nx'e katkı veren bir geliştiricinin GitHub erişim token'ı ele geçirildi. Bu token, nrwl/nx deposuna yazma yetkisine ve dolaylı olarak eklenti yayımlama bilgilerine erişebiliyordu. Yani saldırgan tek bir parolayı kırmadı; geçerli, güvenilir bir anahtarı çaldı.

2. Depoya bırakılan zararlı yük

Saldırgan, çalınan kimlikle nrwl/nx deposuna bir orphan commit — yani geçmişe bağlı olmayan, tek başına duran bir kayıt — gönderdi. Bu commit yalnızca iki dosya içeriyordu ve zararlı kodu (payload) deponun içine yerleştiriyordu. Geçmişe bağlı olmadığı için sıradan bir gözden geçirmede kolayca fark edilmeyen bir manevraydı.

3. Marketplace'e zararlı sürüm

Ardından saldırgan, çalınan yayımlama token'ını (VSCE_PAT) kullanarak eklentinin 18.95.0 sürümünü VS Code Marketplace'e yükledi. Kullanıcıların gözünde bu, güvendikleri eklentinin rutin bir güncellemesinden ibaretti. Eklenti, ilk açılışta zararlı kodu indiren tek satırlık bir komutu, sıradan bir kurulum adımı gibi göstererek çalıştırdı.

tek çalınan kimlik, zincirleme etki
[ TanStack ihlali ]
     │  geliştiricinin GitHub token'ı sızıyor
     ▼
[ nrwl/nx deposu ]      # orphan commit ile zararlı yük
     │  çalınan VSCE_PAT ile yayımlama
     ▼
[ VS Code Marketplace ] # v18.95.0 · ~18 dk yayında
     │  otomatik güncelleme → binlerce makine
     ▼
[ geliştirici makineleri ] # 1Password · AWS · ~/.claude · token'lar

Eklenti çalışınca ne çaldı?

İndirilen zararlı kod, bir geliştirici makinesinde bulunabilecek hemen her türlü sırrı toplamak üzere tasarlanmıştı. Hedef listesi, modern bir geliştirme ortamının ne kadar çok anahtar barındırdığını da gözler önüne seriyor:

  • Bulut ve CI/CD anahtarları — AWS erişim bilgileri, HashiCorp Vault oturumları, npm ve GitHub Actions sırları.
  • Parola yöneticisi — 1Password komut satırı aracı üzerinden kasadaki kayıtlara erişim denemesi.
  • Yapay zekâ araçları — yapay zekâ kodlama asistanlarına ait yapılandırma dosyaları, örneğin ~/.claude/ dizini.
  • Yerel sırlar — özel anahtarlar, bağlantı dizeleri ve dosya sisteminde açıkta duran kimlik bilgileri.

Toplanan veriler tek bir kanaldan değil, fark edilmeyi zorlaştırmak için üç ayrı yoldan dışarı taşındı: normal HTTPS trafiği, GitHub API çağrıları ve DNS sorgularına gizlenmiş tüneller. Dahası saldırgan, ele geçirilen makinelerde kalıcı bir arka kapı bırakmayı da ihmal etmedi; bu arka kapı, komutlarını almak için meşru GitHub arama servisini bir buluşma noktası gibi kullanıyordu. Yani trafiğin çoğu, dışarıdan bakıldığında bir geliştiricinin gün içinde yaptığı sıradan işlemlerden ayırt edilemiyordu.

Asıl kapı: geliştirici makinesi

Bu olayın kurumlar için anlamı, çoğu güvenlik tartışmasının dışında kalan bir yüzeye işaret ediyor: geliştiricinin kendi makinesi. Üretim sunucularını güvenlik duvarlarıyla, izleme araçlarıyla, sıkı erişim politikalarıyla koruruz. Ama o sunuculara dağıtım yapan, bulut anahtarlarını taşıyan, depolara yazma yetkisi olan dizüstü bilgisayar çoğu zaman aynı titizlikle ele alınmaz. Oysa o makine, üretime giden en kısa yoldur.

Editör eklentileri bu tablonun en sessiz parçası. Bir eklentiyi kurarken aslında onun gelecekteki bütün güncellemelerine de baştan güven veririz; her güncelleme ayrı ayrı incelenmez. Eklenti yayımcısının kimliği bir kez ele geçirildiğinde, bu güven doğrudan saldırgana devrolur. Bu yüzden bir yazılımın yalnızca "güvenilir bir kaynaktan" gelmesi artık tek başına yeterli bir ölçüt değil; önemli olan, o kaynağın kimliğinin ne kadar iyi korunduğu.

Güvenilir kaynak ile güvenli kaynak aynı şey değil. Bir eklentinin tanıdık bir isimden gelmesi, o ismin kimliğinin ele geçirilmediği anlamına gelmez. Tedarik zinciri güvenliği, "kime güveniyoruz?" sorusundan çok "bu güveni neye dayandırıyoruz ve ele geçerse ne kaybederiz?" sorusuyla başlar.

Kurumunuz için sade adımlar

Bu ölçekte bir olay, küçük ekipleri çaresiz gibi gösterebilir; oysa alınacak önlemlerin çoğu sade ve uygulanabilir. Saldırının yayılmasını zorlaştıran birkaç temel başlık:

  • Otomatik güncellemeyi gözden geçirin — kritik araç ve eklentileri belirli bir sürüme sabitleyin, güncellemeleri körlemesine değil bilerek alın.
  • Token'ların erişimini daraltın — yayımlama ve dağıtım anahtarları yalnızca işini yapacak kadar yetkiye sahip olsun, kullanım ömürleri kısa tutulsun.
  • Sırları makineden uzak tutun — uzun ömürlü anahtarları geliştirici diskinde bırakmak yerine kısa ömürlü, talep üzerine verilen kimlik bilgilerini tercih edin.
  • Kurulu eklentileri denetleyin — gerçekten kullanılmayan eklentileri kaldırın, yeni eklenti kurarken yayımcısına ve izinlerine bakın.
  • İhlal sonrası planınız olsun — bir makine ele geçtiğinde o makineden erişilebilen tüm anahtarları hızlıca yenileyebileceğiniz bir refleksiniz olsun.

Özetle

Nx Console olayı bize yeni bir saldırı türü değil, tanıdık bir gerçeğin yeni bir adresini gösteriyor: saldırganlar en güçlü kaleyi değil, en az korunan güven ilişkisini hedefler. Bu kez o ilişki, bir geliştiricinin editörüne kurduğu eklentiydi. Tek bir çalınan kimlik, koca bir zincir boyunca yayılarak GitHub ölçeğinde bir kuruma kadar ulaştı.

Çıkarılacak sonuç karamsar değil, aksine güçlendirici: korunması gereken yüzeyi tanımak ve daraltmak çoğu zaman mükemmel bir savunma kurmaktan daha etkili. Geliştirici makinelerini, dağıtım anahtarlarını ve bağımlılıkları ciddiye almak, bu tür olayların yayılma alanını baştan küçültür.

Bu konuların teknik temeline daha yakından bakmak isterseniz — sürekli entegrasyon, otomasyon ve güvenli dağıtım hattı — Bilgi Merkezi · DevOps ve Otomasyon ile Web Uygulama Güvenliği rehberlerine göz atabilirsiniz.