Google’un Dialogflow CX platformunda tespit edilen kritik bir güvenlik açığı, bir saldırganın, bir Code Block etkin ajanının düzenleme yetkisine sahip olması durumunda, aynı Google Cloud projesindeki diğer Code Block etkin ajanları tehlikeye atmasına olanak tanıyordu. Bu güvenlik açığı, canlı konuşmaları okuma, kullanıcıların paylaştığı verileri çalma ve botların saldırgan tarafından yazılmış mesajlar göndermesine yol açıyordu.
Saldırı Nasıl Çalışıyor?
Güvenlik firması Varonis tarafından keşfedilen bu açık, “Rogue Agent” olarak adlandırıldı. Söz konusu hata yalnızca, geliştiricilerin kendi Python kodunu eklemelerine olanak tanıyan Dialogflow’un Oyun Kitapları ve özel Code Block’larını kullanan organizasyonları etkiledi. Saldırı, uzaktan ve kimlik doğrulama gerekmeyen bir saldırı değildi; bir Code Block’a sahip bir ajanın üzerinde dialogflow.playbooks.update izni gerektiriyordu. Bu durum, saldırganın gerçekçi olarak yalnızca kötü niyetli bir içeriden gelen biri veya ele geçirilmiş bir geliştirici hesabı olmasını sağlıyordu; internetteki bir yabancı olamazdı. Ancak bu tek bir başlangıç noktası, projenin içindeki her ajana ulaşılmasını sağlıyordu.
Etkilenen Sistemler
Dialogflow’un Code Block’ları, geliştiricilere bir chatbot’un konuşma akışına özel Python kodu ekleme imkânı tanır. Bu kod, Google tarafından yönetilen Cloud Run ortamında çalıştırılır ve aynı Google Cloud projesindeki her Code Block’u kullanan ajan, bunun bir örneğini paylaşmaktadır. Google bu ortamı yönetir ve müşteri bunu göremez veya kontrol edemez. Varonis, bu ortamda ajanslar arasında gerçek bir ayrımın olmadığını keşfetti.
Çözüm ve Korunma
Bir ajanın bir Code Block çalıştırdığında, geliştiricinin kodu, dahili yapılandırma kodlarına eklenir ve Python’un exec() fonksiyonuna iletilir. Varonis, bu işlevin uygulandığı dosyanın code_execution_env.py olduğunu ve üzerinde yazma izinleri bulunduğunu keşfetti. Bir Code Block, bu dosyayı değiştirebilir ve bir saldırganın kontrolündeki sunucudan değiştirilen bir versiyonunu indirip, çalıştırılan kapsayıcıdaki orijinal dosyayı değiştirebilir. Bu noktadan sonra, saldırganın sürümü, bu ortamı paylaşan her ajan için her Code Block çalıştırmasında geçerli olur.
- Ayrıca, bu durum, her konuşmayı okuyabilme ve verileri saldırganın sunucusuna gönderebilme imkânı tanır.
- Örneğin, phishing saldırısı düzenlemek için bot, kullanıcıdan girişlerini yeniden doğrulamasını isteyebilir.
- Saldırgan, orijinal Code Block’u Dialogflow konsolunda geri yükleyerek izini kapatmaya çalışabilir.
Kontrol Edilmesi Gerekenler
Varonis, ilgili iki durumu daha bildirdi; bu durumlar dosya değiştirmeyi gerektirmiyordu. İlk olarak, Code Block ortamı sınırsız dış internet erişimine sahipti. Araştırmacılar, dahili urllib kütüphanesi kullanarak verileri doğrudan harici bir sunucuya gönderebildi ve geri komutlar alındı. Hemen ardından, Instance Metadata Service (IMDS) gibi normalde iç bir uç noktayı açığa çıkarması dikkat çekti. Sınırlı yetkiye sahip bir Google yönetimli hizmet hesabı için bir kod döndürülen bu metot, bir kod çalıştırma kumanda ortamının IMDS’ye erişmemesi gerektiği anlamına gelmektedir.
Aksiyon: Ne Yapmalısınız?
Dialogflow CX ajanlarıyla Code Block Oyun Kitapları kullanıyorsanız ve etkilenmediğinizi doğrulamak istiyorsanız, öncelikle izinleri gözden geçirin. dialogflow.playbooks.update izni, tüm giriş noktasıdır; bu nedenle, hangi rol ve hesapların yetkisi olduğunu denetleyin. Aşağıdaki adımları izleyin:
- Beklenmedik oyun kitabı güncellemeleri için DATA_WRITE denetim günlüklerinizi gözden geçirin ve bunları alışılmadık kullanıcılar, IP adresleri veya erişim zamanlarıyla ilişkilendirin.
- Kötü niyetli Code Blocks tarafından atılan istisnaları gizleyen hataların bulunduğu, başarısız kullanıcı istekleri için bir Cloud Logging sorgusu çalıştırın.
- Dialogflow konsolunda, her ajanın Oyun Kitapları kısmını açın ve onayladığınız her Code Block’un mevcut olduğundan emin olun.
Genel olarak, bu tür bir kurulumda içerik düzenleme izni, aynı zamanda bir kod çalıştırma izni anlamına gelmektedir. Bir Code Block ekleyebilen herkes, müşterinin gözlemleyemediği bir paylaşılan ortamda rastgele Python kodu çalıştırabilir. Bu nedenle, ajanın düzenleme izinlerini dikkatle değerlendirin ve güvenliğiniz için gerekli önlemleri alın.


