Google'ın Dialogflow CX'indeki kritik bir kusur, Kod Bloğunun etkin olduğu bir aracıda düzenleme haklarına sahip bir saldırganın, aynı Google Cloud projesindeki diğer Kod Bloğunun etkin olduğu aracıların güvenliğini ihlal etmesine olanak tanımış olabilir.
Buradan canlı konuşmaları okuyabilir, kullanıcıların paylaştığı verileri çalabilir ve botların, şifreyi yeniden girme talepleri de dahil olmak üzere saldırgan tarafından yazılan mesajlar göndermesini sağlayabilirler.
Güvenlik firması Varonis bunu buldu ve ona Rogue Agent adını verdi. Bu kusur yalnızca geliştiricilerin kendi Python'larını eklemelerine olanak tanıyan Dialogflow'un Playbook'ları ve özel Kod Blokları ile aracılar oluşturan kuruluşları etkiledi. Ve bu uzak, kimliği doğrulanmamış bir saldırı değildi.
Bunu gerçekleştirmek için böyle bir aracı üzerinde diyalog akışı.playbooks.update izni gerekiyordu, bu da gerçekçi saldırganı internetteki bir yabancıyla değil, içeriden kötü niyetli bir kişiyle veya güvenliği ihlal edilmiş bir geliştirici hesabıyla sınırlandırıyordu. Ancak bu tek noktadan erişim projedeki her temsilciye yayıldı.
Google sorunu düzeltti ve hem Varonis hem de Google, kusurun gerçek bir saldırıda kullanıldığına dair hiçbir işaret olmadığını söylüyor.
Önemli Gelişmeler
Yazılabilir bir dosya her temsilcinin Kod Bloklarını çalıştırdı
Dialogflow'un Kod Blokları, geliştiricilerin girişi kontrol etmek, davranışı kontrol etmek ve tanımlanmış araçları çağırmak için bir sohbet robotunun konuşma akışına özel Python eklemesine olanak tanır. Bu kod, Google tarafından yönetilen bir Cloud Run ortamında çalışır ve aynı Google Cloud projesinde Kod Bloklarını kullanan her aracı, bunun bir örneğini paylaşır.
Teknik Analiz
Bu ortamı Google yönetiyor, müşteri onu göremiyor veya kontrol edemiyor ve Varonis, ortamın içindeki aracılar arasında gerçek bir izolasyon bulamadı.
Bir aracı bir Kod Bloğunu çalıştırdığında, geliştiricinin kodu dahili kurulum koduna eklenir ve Python'un exec() işlevine iletilir. Bu kurulum kodu, bloğun dokunabileceği değişkenleri ve işlevleri tanımlar. Değişkenler, tüm görüşmenin geçmişini ve oturum kimliği gibi oturum ayrıntılarının durumunu içerir. İşlevler, botun belirli bir dizeyle yanıt vermesini sağlayan answer() işlevini içerir.
Varonis, bu sarmalamayı yapan code_execution_env.py dosyasını, yazma erişimiyle paylaşılan ortamda buldu.
Bu dosya yazılabilir olduğundan tek bir Kod Bloğu onun yerini alabilirdi. Bu blok, saldırgan tarafından kontrol edilen bir sunucudan değiştirilmiş code_execution_env.py dosyasını indirir ve çalışan konteynerin içindeki orijinalin üzerine yazar.
Nasıl Önlem Alınmalı?
O andan itibaren saldırganın sürümü, o ortamı paylaşan her aracıdaki her Kod Bloğu yürütmesi için çalışır. Meşru kodla aynı kapsamda yer alır ve geçmişe, duruma ve yanıta() aynı erişime sahiptir.
Bu, her konuşmayı okumasına, sessizce saldırganın sunucusuna göndermesine ve botun saldırganın yazdığı mesajları göndermesine olanak tanır. Bunun bir örneği kimlik avıdır: Bot, kullanıcıdan giriş bilgilerini yeniden doğrulamasını ister ve saldırgan, yazdıklarını toplar.
Uzmanların Görüşleri
Saldırgan, izleri kapatmak için Dialogflow konsolundaki orijinal Kod Bloğunu geri yükler. Bu yalnızca konsolun görüntülediklerini değiştirir; üzerine yazılan dosya zaten kapta çalışıyor ve altında çalışmaya devam ediyor.
Korumalı alan iki şekilde daha sızdırıldı
Varonis birbiriyle bağlantılı iki sorun bildirdi ve her ikisinin de dosyanın üzerine yazılmasına gerek yoktu. İlk olarak, Kod Bloğu ortamı sınırsız giden internet erişimine sahipti. Araştırmacılar yerleşik urllib kitaplığını kullanarak verileri doğrudan harici bir sunucuya gönderdiler ve komutları geri alabildiler.
Varonis, bunun, verilerin korunan hizmetlerden çıkmasını durdurmayı amaçlayan Google Cloud çevresi olan VPC Hizmet Kontrollerini atladığını söylüyor. Ortam bu çevrenin dışında yer alır ve açık internete erişebilir, bu da onu hem veri hırsızlığı hem de uzaktan kontrol için bir kanala dönüştürür.
Sistem Güvenliği
İkincisi ve daha az ciddi olanı, ortamın bulut kimlik bilgilerini dağıtan normalde dahili bir uç nokta olan Örnek Meta Veri Hizmetini (IMDS) açığa çıkarmasıdır. Sorgulandığında Google tarafından yönetilen bir hizmet hesabına ait bir jeton döndürüldü.
Bu hesap düşük ayrıcalıklıydı, dolayısıyla doğrudan risk sınırlıydı; asıl mesele, kod yürütme sanal alanının IMDS'ye hiçbir şekilde erişememesi gerektiğidir.
Sonuç ve Değerlendirme
Günlüklere neredeyse hiçbir şey ulaşmadı
Üzerine yazma işlemi, müşterilerin görünürlüğünün olmadığı Google ortamında gerçekleşti ve Cloud Logging, dosya değişikliğini veya eklenen kodu kaydetmedi.
Gelecekte Ne Bekleniyor?
Bu, müşteri tarafından yakalanmayı imkansız olmasa da zorlaştırıyor. Kurulum eylemleri hala aşağıdaki kontrollerin dayandığı izler bırakıyor.
Detaylar ve Etkileri
Varonis, kusuru Kasım 2025'te Google'ın Güvenlik Açığı Ödül Programı aracılığıyla açıkladı. Google, Nisan 2026'da bir ilk düzeltme yayınladı ve rapordan çözüme yaklaşık yedi ay sonra, Haziran 2026'da sorunu tamamen çözdü. Hiçbir CVE atanmadı.
Neyi kontrol etmelisiniz? Kod Bloklarını kullandınız
Düzeltmeden önce Dialogflow CX aracılarını Code Block Playbook'larla çalıştırdıysanız ve hedeflenmediğinizi doğrulamak istiyorsanız erişimle başlayın.
Dialogflow.playbooks.update izni tüm giriş noktasıdır, bu nedenle hangi rollerin ve hesapların buna sahip olduğunu denetleyin.
Beklenmedik başucu kitabı güncellemeleri için Dialogflow API'sine yönelik DATA_WRITE denetim günlüklerinizi inceleyin ve bunları olağandışı kullanıcılar, IP adresleri veya erişim zamanlarıyla ilişkilendirin.
Başarısız kullanıcı istekleri için bir Cloud Logging sorgusu çalıştırın; burada hata mesajları, kötü amaçlı Kod Blokları tarafından oluşturulan istisnaları ortaya çıkarabilir.
Dialogflow konsolunda her temsilci için Başucu Kitapları'nı açın ve her Kod Bloğunun onayladığınız kod bloğu olduğunu onaylayın.
Farklı türde bir yapay zeka hatası
Son dönemdeki birçok yapay zeka güvenlik kusuru, modeli kandırarak işe yaradı.
Varonis'in kendi Reprompt ve SearchLeak'i, Microsoft'un Copilot'unda tek bir tıklamayı veri hırsızlığına dönüştürdü. Noma Security'nin ForcedLeak'i, CRM verilerini çıkarmak için Salesforce web formundaki talimatları sakladı.
Microsoft'un araştırmacıları, Semantic Kernel çerçevesinde hızlı enjeksiyonun kod yürütmeye dönüştüğünü gösterdi. Rogue Agent modele hiç dokunmadı. Normal bir geliştirici özelliğini ve sıradan bir düzenleme izniyle erişilebilen, paylaşılan, görünmez bir çalışma zamanını kötüye kullandı.
Böyle bir kurulumda içerik düzenleme hakkı gibi görünen izin aslında bir kod yürütme hakkıdır. Kod Bloğu ekleyebilen herkes, müşterinin inceleyemeyeceği paylaşılan bir ortamda isteğe bağlı Python çalıştırabilir.
Aracı düzenleme izinlerini çalışma zamanı kontrolleri olarak değerlendirin. Sağlayıcı hiçbir şeyin düzeltilmesi gerekmediğini söylese bile müşterilerin yine de bu çalışma zamanının içine kendi başlarına bakmaları mümkün değildir.