Noma Labs araştırmacıları, GitHub'ın yeni yayınlanan Agentic Workflows özelliğinin özel depo (repository) dosyalarını yayınlaması için kandırılabileceğini göstererek, tek bir halka açık issue yorumunun dahili bir yapay zeka asistanını bir veri sızıntısı kanalına dönüştürebileceğini kanıtladı.
Bu açık önemlidir çünkü herhangi bir özel exploit kodu gerektirmeden GitHub'ın yerleşik güvenlik kontrollerini atlatır; bir saldırganın tek yapması gereken, yapay zeka ajanının okuyup üzerinde işlem yapacağı, görünüşte zararsız bir issue hazırlamaktır.
Zafiyet nasıl çalışıyor
Agentic Workflows, bir yapay zeka ajanının bir iş akışı (workflow) dosyasında tanımlanan komutları yürüterek yeni issue'lar gibi GitHub olaylarına yanıt vermesini sağlar. Noma Labs, ajanın meşru iş akışı talimatları ile kullanıcı tarafından gönderilen bir yoruma gömülmüş metin arasında ayrım yapmadığını buldu. Bir yöneticinin talebini taklit eden halka açık bir issue paylaşarak ve buna gizli bir direktif ekleyerek, bir saldırgan ajanı şunları yapmaya yönlendirebilir:
- Issue'yu açmak (halka açık şekilde görünür).
- Sıradan görünen ancak gizli bir komut içeren bir satır eklemek.
- Yapay zekayı, iş akışının okuma izni olduğu özel bir depodan (private repository) dosya çekmeye tetiklemek.
- Ajanın, çekilen içeriği aynı issue'ya yanıt olarak paylaşmasını sağlamak.
Araştırmacılar, gizli komutun önüne tek bir “Additionally,” kelimesini eklemenin GitHub'ın güvenlik bariyerlerini aşmak için yeterli olduğunu keşfetti. Ek izinlere, token'lara veya özel koda gerek yok; sadece doğru ifade biçimi yeterli.
Bu neden sadece bir hata değil?
Sorun yapısal. Yapay zeka ajanı, bir depo olayından aldığı her metni güvenilir kabul eder; bu da kullanıcı tarafından oluşturulan içeriği, bir web uygulamasındaki SQL injection'a benzer bir girdi vektörü haline getirir. Eğer bir iş akışı ajana özel depolara okuma erişimi ve halka açık yorum yapma yetkisi veriyorsa, bu kombinasyon veri sızdırma (data exfiltration) için doğrudan bir yol oluşturur.
GitHub ne diyor?
GitHub bu zafiyet hakkında bilgilendirildi.
Ekipler için azaltma adımları
- Ajan izinlerini kısıtlayın: Özel depolara okuma/yazma erişimini yalnızca kesinlikle gerekli olduğunda verin.
- Halka açık paylaşımları engelleyin: Ajanların halka açık issue'lara yorum veya diğer çıktıları (artifacts) yayınlayamayacağı şekilde iş akışlarını yapılandırın.
- Tüm harici girdileri güvenilmez olarak kabul edin: Kullanıcı tarafından oluşturulan metin yapay zekaya ulaşmadan önce onu temizleyen (sanitize) veya görmezden gelen doğrulama katmanları ekleyin.
- İş akışı tetikleyicilerini denetleyin: Hangi olayların (issue'lar, pull request'ler vb.) ajanları tetiklediğini gözden geçirin ve ilgili izinlerin amaçlanan kullanım durumuyla eşleştiğini doğrulayın.
Özet: Özel kodları okuyabilen ve halka açık paylaşım yapabilen bir yapay zeka asistanı, yalnızca etrafına koyduğunuz sınırlar kadar güvenlidir. Katı izin sınırları ve girdi temizleme (input sanitization) olmadan, tek bir halka açık yorum, bir verimlilik özelliğini bir veri sızıntısı vektörüne dönüştürebilir.
