Yeşil bir boru hattı yönetilen bir boru hattı değildir ve aracılı kodlama, boşluğu incelemenin kapatabileceğinden daha hızlı bir şekilde genişletmektedir.
Yazan: Shane Warden, Baş Mimar, ActiveState
Haziran 2026'da Novee Security'deki araştırmacılar Cordyceps adını verdikleri bir CI/CD zayıflığı sınıfını açığa çıkardılar. Npm, PyPI, Crates.io ve Go ekosistemlerinde yaklaşık 30.000 yüksek etkili depoyu taradılar, ardından 654'ü işaretlediler ve 300'den fazlasının tamamen sömürülebilir olduğunu doğruladılar.
Sonuç ve Değerlendirme
Etkilenen derleme araçları Microsoft, Google, Apache, Cloudflare ve Python Yazılım Vakfı tarafından yayınlanan projeleri içeriyordu ve bir saldırganın giriş gereksinimi ücretsiz bir GitHub hesabıdır. Kuruluş üyeliği yok, yükseltilmiş ayrıcalıklar yok.
Bu boru hatlarının her biri yeşildi. Tarayıcılar çalıştı, kontroller geçti ve kontrol panelleri, maruziyetin mevcut olduğu süre boyunca sağlıklı sonuçlar bildirdi. Tarayıcılar hiçbir zaman bu tehlikeyi görecek şekilde tasarlanmamıştır.
Nasıl Önlem Alınmalı?
Güvenlik Açığı Dosyada Değil, Kompozisyondadır
GitHub Eylemleri iş akışları genellikle çatalın güvenilmeyen bağlamında, depo sırları olmadan ve salt okunur bir belirteçle çalışan pull_request tarafından tetiklenir. Sorun, temel depo bağlamında sırlara erişim ve GITHUB_TOKEN okuma ve yazma işlemleriyle çalışan pull_request_target ve workflow_run ile başlıyor.
Sistem Güvenliği
Bir saldırgan, kendilerini tetikleyen çekme isteğinden her ikisini de saldırgan tarafından kontrol edilen içerik üzerinde hareket etmeye teşvik edebilir. GitHub Security Lab buna pwn isteği adını verir.
Üç ilkel hasar veriyor. Komut enjeksiyonu, saldırgan tarafından kontrol edilen verileri, bir dal adını, bir başlığı, bir yorumu doğrudan bir çalıştırma adımına ekler, böylece bir kabuk komutunun içine kaçışsız olarak yerleşir ve yürütülür. Eylemler/github-script aracılığıyla kod enjeksiyonu, saldırganın girişini çalışma zamanında JavaScript olarak değerlendirir.
İş akışları arası ayrıcalık yükseltme, düşük ayrıcalıklı bir iş akışının güvenilmeyen verileri bir yapıya veya çıktıya yazmasına olanak tanır; daha sonra ikinci, yüksek ayrıcalıklı bir iş akışı bunu okur ve bakımcının belirteciyle işlem yapar. Her iki iş akışı da tek başına kullanılamaz.
Güvenlik açığı, bağlanma şekillerinden kaynaklanmaktadır ve tarayıcıların yeşil kalmasının nedeni de tam olarak budur: Bir SAST veya DAST aracı deseni tek bir dosyayla eşleşir ve buradaki her dosya, tam olarak kendisine söyleneni yapan geçerli, iyi biçimlendirilmiş YAML'dir.
Gelecekte Ne Bekleniyor?
Warden, "Tarayıcı bir iş akışını görüyor. Bir saldırgan, kalıcı bir kimlik bilgilerine giden dört adımlı bir zincir görüyor" diye açıklıyor.
İşaretlenecek tek bir satır yoktur çünkü tek bir satır yanlış değildir.
Önemli Gelişmeler
Bu, ölçüm hatasının en kötü halidir, çünkü kırmızı ışık birisini sorunu aramaya gönderir, yeşil ışık ise herkesi eve gönderir.
Tarayıcılarınız Yeşil. Boru Hattınız Olmayabilir. Cordyceps her kontrolü geçti çünkü tek bir iş akışı dosyası hatalı değildi; istismar edilebilecek olan kompozisyondu. Yalnızca taramayı geçenleri değil, yapınıza kaynakta girenleri yöneterek bu açığı nasıl kapatacağınızı görün. Boşluğu Kapat
Tek Çekme İsteği, Gönderilen Güvenlik İçeriğine Kalıcı Yazma Erişimi
Microsoft'un Azure Sentinel deposunda Novee, bir çekme isteğine yapılan yorumun Microsoft'un CI'sında anonim saldırgan kodunu çalıştırabileceğini ve Microsoft'un Güvenlik Yanıt Merkezi tarafından onaylandığı üzere süresi dolmayan bir GitHub Uygulama anahtarını çalabileceğini gösterdi.
Teknik Analiz
Sentinel, Microsoft'un SIEM'sidir ve İçerik Merkezi, algılama kurallarını ve otomatikleştirilmiş oynatma kitaplarını doğrudan müşteri çalışma alanlarına gönderir.
Burada çalınan bir anahtar, binlerce kuruluşun saldırıları tespit etmek için güvendiği güvenlik içeriğine kalıcı yazma erişimi sağlıyor, sessizce zayıflatılıyor ve güvenilir bir güncelleme olarak aşağıya doğru gönderiliyor.
Uzmanların Görüşleri
Google'ın AI Aracı Geliştirme Kiti örnek deposu, binlerce geliştiricinin Google Cloud'da aracı oluştururken kopyaladığı bir referanstır. Tek bir çekme isteği, Google'ın CI'sında kod yürütebilir ve Google tarafından onaylanan, kalıcı sahip düzeyinde erişim olan ilgili Google Cloud projesindeki rollere/sahiplere yükseltilebilir.
Apache Doris'in kimlik bilgileri hırsızlığına benzer bir yolu vardı ve Apache Güvenlik Ekibi tarafından onaylandı ve düzeltildi. Üç organizasyon, bir kompozisyon problemi, tarayıcının işaret edebileceği bir kod satırı yok.
Detaylar ve Etkileri
Kimse Bu Çekme İsteğine Güvenmeye Karar Vermedi
Bir mühendislik liderini durdurması gereken ifade "kimsenin denetlemediği güven sınırıdır". Birisi, dışarıdan birinin girişini bir bakımcıdan geliyormuş gibi ele alacak bir iş akışı yapılandırdı. Hiçbir insan bu çağrıyı bilerek yapmadı.
Bu risk, her seferinde makul görünen bir taahhütle birikiyor ve karar anının hiçbir zaman denetlenemeyeceği yapay zeka tarafından oluşturulan iş akışlarıyla birlikte artıyor.
Yapay zeka araçlarını üretim mühendisliği çalışmalarına koydum ve nelerin değiştiğini ölçtüm. Kaldıracın gerçek olduğunu açıkça söyleyeceğim ve onu yavaşlatmayı tartışmıyorum.
Ancak Novee, aracılı kodlamanın çarpan olduğunu açıkça belirtiyor: Yapay zeka araçları, CI/CD yapılandırmasını hızlı bir şekilde oluşturur ve aynı güvensiz kalıpları yeniden üretir, dolayısıyla tek bir hata, potansiyel olarak milyonlarca depoyu birleştirir, güvenle yayılır ve kaynak sinyali yoktur.
Bir kuruluşun artık özümsediği iş akışı kararlarının hacmi, insan hızında çıktıya göre boyutlandırılmış bir inceleme sürecini geride bıraktı.
Standart güvenlik sistemlerimiz de buna hazır değil. Cordyceps bir CVE değildir, dolayısıyla hiçbir zaman numaralandırma modeline girmez. Ayrıca NIST, Nisan 2026'da, 2020'den bu yana %263 oranında artan başvurularla artık her CVE'yi zenginleştiremeyeceğini kabul etti. Riskler katlanarak artıyor.
Neyse ki Novee, vahşi doğada herhangi bir istismar kanıtı bulamadı ve adı geçen satıcılar sağlamlaştırıldı veya yamalar yapıldı. Ancak bu, tek bir spesifik ihlal değil, kanıtlanmış, istismar edilebilir bir modeldir ve sektör genelinde varsayılan olarak büyük oranda yama uygulanmaz.
Sınırı Kapatın, Sonra Onu Aşanları Yönetin
Acil düzeltmeler şimdi yapmaya değer: güvenilmeyen katkılar için pull_request_target yerine pull_request'i tercih edin, ayrıcalıklı bir iş akışı içindeki çekme isteği baş kodunu asla kontrol etmeyin, olay verilerini satır içi yapmak yerine alıntılanmış bir env değişkeni aracılığıyla iletin, varsayılan izinleri salt okunur olarak ayarlayın, üçüncü taraf eylemlerini hareketli bir etiket yerine bir taahhüt SHA'sına sabitleyin ve ilk kez katkıda bulunanlar için manuel onayın arkasında ayrıcalıklı iş akışlarını kapatın.
Bunların hepsini yaptığınızda bugünün sorunlarını kapatmış olursunuz, ancak sorun sınıfını kapatamazsınız. Bir sonraki model, bireysel olarak doğru adımlardan oluşturulacak ve aynı zamanda taramayı da geçecektir. Yapay zeka odaklı geliştirme, bu yazılım tedarik zinciri yönetişim açığını genişletiyor ve hızlanıyor.
Dayanıklı kontrol, yapınızın kaynakta neye güvenebileceğini yönetmektir; böylece ardışık düzeninize giren bileşenler ve iş akışları, inançla güvenilmek yerine kaynaktan oluşturulmuş, doğrulanabilir kökene sahip yönetilen bir kökenden gelir.
Zehirli bir paket yayınlayan, ele geçirilmiş bir yukarı akış, alım noktasında bir kontrolü karşılamalı ve geçememelidir. İnsan güven sınırlarının sahibidir. Bu sahipliğin, yapay zekanın artık karar ürettiği hızda çalışması gerekiyor çünkü boru hattının en ucundaki manuel inceleme yetişemiyor.
Cordyceps kimsenin güvenlik araçlarını alt edemedi. Yanlarından geçip gitti çünkü her bir parça tam olarak tasarlandığı gibi çalışıyordu. Bu, en saf haliyle ölçüm tuzağıdır: sayı yeşil kalırken, garanti etmesi gereken şey artık doğru değildi (tabii eğer doğruysa).
Tarayıcılar arızalandığı için bu boru hatları açığa çıkmadı. Açığa çıktılar çünkü taramayı geçmek yönetildikleri anlamına gelmiyordu. Bir süre kimse aramaya çıkmadı.
Yeşil boru hattı yönetilen bir boru hattı değildir. Sizinkinden gerçekten neyin geçtiğini öğrenin.
ActiveState tarafından desteklenmiş ve yazılmıştır.