Noma Labs, yapay zeka destekli bir otomasyon kullanarak tek bir halka açık GitHub issue'sunun özel depolardan kod çalabileceğini gösterdi. Kavram kanıtları, bir saldırganın kuruluşun kendi iş akışı botlarını ona karşı kullanmasına ve GitHub kimlik doğrulamasını bozmadan tescilli dosyaları sızdırmasına olanak tanıyor.
Göz önündeki saldırı
Olaylar zincirini yeniden üretmek oldukça basittir:
- Bir saldırgan, herkesin görüntüleyebileceği halka açık bir depoda bir issue oluşturur.
- Sürekli entegrasyon (CI) hattına bağlı bir yapay zeka ajanı, issue'nun başlığını ve içeriğini okur.
- Aynı ajan, kuruluş bünyesindeki diğer özel depolara halihazırda okuma iznine sahiptir.
- Halka açık issue içindeki gizli talimatlar, ajana hangi özel dosyaları getirmesi gerektiğini söyler.
- Ajan, getirilen dosyaları halka açık issue'ya bir yorum olarak geri göndererek onları dünyaya ifşa eder.
Her şey otomasyonun tek bir çalışmasında gerçekleşir. Kimlik bilgisi hırsızlığı yok, API anahtarı sızıntısı yok, GitHub zafiyeti yok. Saldırgan sadece kuruluşun kendi botuna duyduğu güveni istismar eder.
Bu neden şimdi önemli
Yapay zeka destekli ajanlar artık modern geliştirme süreçlerini birbirine bağlıyor. Pull-request'ler açıyor, testler çalıştırıyor, derlemeleri yayına alıyor ve hataları sınıflandırıyor; bunların hepsi issue yorumları gibi hafif sinyallerle tetikleniyor. Bu ajanlar geniş depo erişimine sahip olduğunda, güvenilir veri ile güvenilmeyen kullanıcı girdisi arasındaki çizgi bulanıklaşır.
Eğer bir ajan aynı yürütme sırasında özel kodu okuyabiliyor ve herkese açık şekilde yazabiliyorsa, kuruluşun erişim kontrol modeli çöker.
Asıl kusur: model değil, izinler
Gösterim, altta yatan yapay zeka modelini suçlamıyor. Model sadece aldığı talimatları takip ediyor. Zafiyet, otomasyona verilen izin setinde yatıyor:
- Kuruluş genelindeki özel depolara okuma erişimi.
- Halka açık issue dizilerine yazma erişimi.
- Herkesin oluşturabileceği halka açık metinler üzerinde tetiklenme.
Hiçbir maliyeti olmayan ama işe yarayan çözümler
En az ayrıcalık ilkesini (principle of least privilege) uygulamak saldırı yolunu büyük ölçüde azaltır:
- Botun kapsamını, ihtiyaç duyulduğu depo ile sınırlandırın. Eğer yalnızca belirli bir depoda işlem yapması gerekiyorsa, diğer tüm okuma haklarını reddedin.
- Okuma ve yazma jetonlarını (tokens) ayırın. Kod getirmek için bir kimlik bilgisi, yorum paylaşmak için ise sıkı bir şekilde kontrol edilen başka bir kimlik bilgisi kullanın.
- Herhangi bir halka açık paylaşım öncesinde insan onayı. Gerekli bir onay etiketi gibi hafif bir inceleme adımı, iş akışını durdurmadan bir kontrol noktası ekler.
- Etki alanını (blast-radius) azaltın. İş akışlarını, bir hata veya kötüye kullanımın tüm kuruluşu değil, en fazla tek bir depoyu etkileyeceği şekilde tasarlayın.
Karşı görüş: operasyonel yük
Bundan sonra neye dikkat edilmeli
Özet: Eğer bir yapay zeka otomasyonu hem özel kodu görebiliyor hem de herkese açık şekilde konuşabiliyorsa, sistem yanlış tasarlanmıştır. İzinleri sıkılaştırın, insan kontrolleri ekleyin ve etki alanını küçük tutun; aksi takdirde tek bir halka açık issue, bir veri sızıntısı vektörüne dönüşebilir.
