Azure DevOps'ta bir pull request'e eklenen tek bir görünmez yorum, kod incelemesi yapan AI ajanını ele geçirip saldırganın erişim yetkisi olmayan projelere yönlendirebiliyor ve bulduklarını sessizce sızdırabiliyor.
Açık, Microsoft'un resmi Azure DevOps MCP sunucusunda bulunuyor. Sorun, sunucunun araçlarından birinin pull request açıklamalarını, şirketin diğer araçlara uyguladığı prompt enjeksiyon koruması olmadan işlemesinden kaynaklanıyor.
Saldırı güvenliği firması Manifold Security, bu 'confused-deputy' (kafası karışık vekil) açığını bu hafta detaylandırdı. Microsoft, sunucuyu AI ajanlarının bir kullanıcı adına Azure DevOps'ta pull request'ler, pipeline'lar, wiki'ler ve iş öğeleri arasında okuma ve işlem yapabilmesi için sunuyor. Ajan, kullanıcının kendi yetkileriyle çalışıyor. Asıl sorun da bu: başkalarının yazdığı içerik, ajanın uyguladığı talimatlara dönüşebiliyor.
Azure DevOps PR açıklamaları, HTML yorumlarına izin veren Markdown formatını destekliyor. Web arayüzünde HTML yorumu (<!-- ... -->) hiçbir şey göstermiyor, bu yüzden incelemeyi yapan kişi açıklamayı kaydırırken sıradan bir değişiklik görüyor. REST API ise bu yorumu olduğu gibi döndürüyor ve sunucu bu metni doğrudan ajana iletiyor.
İnsanın gördüğü ile modelin aldığı arasındaki bu fark, saldırının işleyiş mekanizmasını oluşturuyor: Saldırgan, ajanla hiç doğrudan iletişim kurmuyor; ajanın daha sonra okuyacağını bildiği içeriğe talimatlar yerleştiriyor.
İncelemeyi yapan kişi, ajandan PR'ı incelemesini istediğinde, gizli metin ajanın hedefini yeniden yazabiliyor. Ajan, incelemeyi yapan kişinin kimlik bilgilerini taşıdığı için, saldırganın erişim yetkisi olmayan projelerde de işlem yapabiliyor.
Manifold, bu erişimin kaynak kodu, sırlar ve iş öğelerine ulaştığını, sadece proof-of-concept'te sızdırılan wiki sayfasıyla sınırlı olmadığını belirtiyor. Firma, yetki yükseltmeyi normal bir durum olarak nitelendiriyor çünkü incelemeyi yapan kişiler genellikle pull request'i açan kişiden daha kıdemli oluyor. Saldırgan doğrudan bir şey kazanmıyor; incelemeyi yapan kişinin hiç görmediği metin aracılığıyla onun yetkilerini ödünç alıyor.
Pull request yolu korumadan yoksun kalmış
Bu açığı sıradan bir prompt enjeksiyon uyarısından ayıran şey, Microsoft'un zaten bu saldırıya karşı bir savunma geliştirmiş olması. Manifold, sunucunun kaynak kodunu incelediğinde, Microsoft'un dolaylı prompt enjeksiyonuna karşı kendi rehberliğinde yer alan 'spotlighting' tekniğini kullandığını gördü: Güvenilmeyen içerik, modelin veriyi uyması gereken talimatlardan ayırt edebilmesi için sınırlayıcılarla sarılıyor.