Noma Security araştırmacıları, kamuya açık bir issue'nun GitHub Agentic Workflows'u kandırarak bir kuruluşun özel depolarının içeriğini sızdırmasına yol açabileceğini gösterdi.
Saldırganın, çalıntı kimlik bilgilerine veya kuruluşa erişime ihtiyacı yok; sadece herkese açık bir depoda normal görünen bir issue açması yeterli. Eğer kuruluş, ajana özel depolar da dahil olmak üzere tüm depolarında okuma yetkisi verdiyse, bu issue ajanı yönlendirerek özel içerikleri herkese açık bir yoruma çekebiliyor.
Noma bu tekniğe GitLost adını verdi. Hedef, GitHub'ın Şubat ayında başlattığı ve şu anda herkese açık ön izlemede olan GitHub Agentic Workflows özelliği. Bu özellikte otomasyon betikleri yazmak yerine, bir Markdown dosyasında yapay zeka ajanına düz İngilizce talimatlar yazıyorsunuz. Ajan, issue'ları ve pull request'leri okuyor, araçları çalıştırıyor ve kendi başına yanıt veriyor.
Bu ajan, GitHub Copilot, Anthropic'in Claude'u, Google Gemini veya OpenAI Codex tarafından desteklenebiliyor. İş akışları varsayılan olarak salt okunur, ancak bir kuruluş, ajana tüm depolarında okuma yetkisi veren bir token sağlayarak çapraz depo bağlamı kazandırabiliyor; buna özel depolar da dahil.
İşte bu yetki, GitLost'un kullandığı zemin.
Hile nasıl çalışıyor
Zafiyet iyi bilinen bir yönteme dayanıyor: dolaylı prompt enjeksiyonu. Bir yapay zeka ajanı, sahibinden gelen talimatlarla, okuduğu içeriğin içine gizlenmiş talimatları güvenilir bir şekilde ayırt edemiyor. Bu nedenle, bir saldırgan bu talimatları bir issue'ya yazarsa, ajan bunları aynen takip edebiliyor.
Noma'nın kavram kanıtında, kötü niyetli issue, bir müşteri toplantısının ardından Satış Müdür Yardımcısı'ndan gelen rutin bir talep gibi görünecek şekilde hazırlanmıştı. Hedeflenen iş akışı, bir issue atandığında devreye girecek, issue'yu okuyacak ve bir yorumla yanıt verecek şekilde ayarlanmıştı. Ayrıca kuruluşun diğer depolarına da okuma erişimi vardı.
Rutin bir otomasyon issue'yu atadığında, ajan özel bir deponun README dosyasını çekti ve issue'daki herkese açık bir yoruma yapıştırdı.