ChatGPT’de gizli komutla Gmail verisi başka hesaba aktarıldı

Anasayfa » ChatGPT’de gizli komutla Gmail verisi başka hesaba aktarıldı
ChatGPT’de gizli komutla Gmail verisi başka hesaba aktarıldı

Check Point’in açıkladığı çalışma, ChatGPT içindeki gizli bir komut zincirinin bir kullanıcının bağlı Gmail hesabından veri okuyup bunu ikinci bir ChatGPT oturumuna aktarabildiğini ortaya koydu. Kullanıcının gördüğü yanıt ise bu aktarımın hiçbir izini taşımıyordu.

İncelemeye göre aynı kanal, sohbet geçmişini ve o konuşma içinde yer alan dosyaları da dışarıya taşıyabiliyordu. Bir saldırganın alabileceği veri miktarı, oturumun zaten erişebildiği uygulamalara, araçlara, izinlere ve bağlı hesaplara bağlıydı.

Check Point, bunun yalnızca Gmail ile sınırlı bir okuma olmadığını, aynı gizli bağlantının oturum içinde erişilebilen diğer öğeleri de taşıyabildiğini bildirdi. Şirkete göre burada kritik olan nokta, saldırganın baştan yeni bir yetki kazanması değil, kullanıcının oturumunda zaten açık olan imkanlardan yararlanmasıydı.

Gizli komut, tek mesaj ve arka plandaki ikinci akış

Check Point’in anlattığı senaryoda saldırının başlaması için komutun önce konuşma içine yerleştirilmesi gerekiyordu. Araştırmacılar bunu üç yoldan mümkün gördü: kullanıcının yapıştırdığı bir istem, kullanıcının açtığı paylaşımlı bir ChatGPT konuşması ya da oluşturucusu tarafından tanımlanmış ve kullanıcıya gösterilmeyen yönergeler taşıyan özel bir GPT.

Bunun ardından sıradan görünen tek bir mesaj, mekanizmayı çalıştırmaya yetti. Şirkete göre ChatGPT, Thinking modundayken aynı tur içinde iki ayrı iş akışı yürüttü. Kullanıcıya normal yanıtını üretirken, arka planda saldırgandan gelen görevi kontrol etti, kullanıcının oturumundaki araçları kullanarak bu görevi yerine getirdi ve sonucu gizli kanaldan geri gönderdi.

Yönerge, modelin bu iki akışı birbirinden ayrı tutmasını şart koşuyordu. Böylece gizli görev, kullanıcının gördüğü yanıtta yer almıyordu. Check Point, bu tasarımın kullanıcı ekranında herhangi bir uyarı üretmeden veri akışı oluşturduğunu belirtti.

Kullanıcının bir uygulamayla temas ettiğine dair tek işaret, yanıtın üstünde görünen küçük “Talked to Gmail” etiketi oldu. Ancak bu etiket yalnızca gerçekleşmiş bir okuma işlemini kayda geçiriyordu. Kullanıcıya önceden izin verme ya da reddetme fırsatı tanımıyordu.

OpenAI’nin dokümantasyonunda bağlı uygulamalar için varsayılan izin düzeyi olarak “Important actions” yer alıyor. Bu ayar, ChatGPT’nin bir uygulamadan veri okumasına, ayrı bir onay penceresi göstermeden izin veriyor. ChatGPT yalnızca dışarıda gerçek etki yaratabilecek, hassas bilgi açığa çıkarabilecek ya da geri alınması zor olabilecek işlemlerden önce kullanıcıya soruyor. Daha sıkı bir kontrol isteyen kullanıcılar her işlemde sorulmasını sağlayan “Always ask” seçeneğine geçebiliyor.

Business, Enterprise ve Edu çalışma alanlarında ise hangi uygulamanın hangi eylemleri yapabileceğine ve kimlerin bu uygulamaları kullanabileceğine yöneticiler karar veriyor. İş planlarında uygulamalar varsayılan olarak açık, Enterprise ve Edu planlarında ise varsayılan olarak kapalı geliyor.

Bu ayarlar, ChatGPT’ye bağlı uygulamalarla çalışırken kullanıcının tek tek her okuma işleminde uyarı almamasına yol açabiliyor. OpenAI’nin yönergelerine göre sistem, dış dünyada etkisi olabilecek ya da geri alınması güç işlemlerde ek onay istiyor; ancak veri okuma bu kapsamın dışında kalabiliyor.

Aynı iç servis, farklı konuşmalar arasında köprü oldu

Check Point, bulguyu OpenAI’ye bildirdiğini ve şirketin kanalın arkasındaki dahili servisi kapattığını doğruladığını söyledi. Kullanıcıların kurması gereken bir güncelleme bulunmuyor.

Ortaya çıkan kanal, ChatGPT’nin kod çalıştırdığı konteynerler arasında işliyordu. ChatGPT, bir görev bu yapıyı gerektirdiğinde her konuşma için ayrı bir konteyner oluşturuyor. OpenAI’nin dokümantasyonu, veri analizi için kullanılan Python ortamının web’e ya da dış API’lere istek gönderemediğini söylüyor. Check Point de farklı hesaplar altındaki ayrı konuşmalar için oluşturulan konteynerlerin birbirine doğrudan erişemediğini aktardı.

Yine de bu konteynerlerin hepsinin ulaşabildiği ortak bir iç servis vardı. ChatGPT zaman zaman ek Python ya da npm paketleri kurmak zorunda kalıyor. Kamuya açık paket depolarına doğrudan erişim vermek yerine her konteynere, paketleri onun adına çeken dahili bir JFrog Artifactory örneğiyle konuşma izni tanınmıştı.

Bu servis, bir konteynerin depolanan bir dosyaya properties adı verilen etiketli değerler eklemesine ve bunları geri okumasına izin veriyordu. Okuma yetkisi için verilen kimlik bilgileri aynı zamanda bu özellikleri yazmak için de yeterliydi. Kimlik bilgileri ortam değişkenlerinde tutuluyordu ve ChatGPT’nin çalıştırdığı kod bunları oradan alabiliyordu. Kodun ayrı bir sır çalmasına ya da yetki yükseltmesine gerek kalmıyordu.

Özellikler hesap bazında ayrıştırılmıyordu. Check Point, bir hesaba ait konteynerden cached bir dosyaya current time içeren chatgpt_test_ts adlı bir property eklediğini, başka bir hesap altındaki konuşmada ise aynı dosyanın property’leri istendiğinde aynı ad ve değeri geri aldığını yazdı.

Property’ler düz metin ya da Base64 taşıyabiliyor; tek bir alana sığmayan veriler birkaç property’ye bölünüp karşı tarafta yeniden birleştirilebiliyordu. Böylece paket servisinin metadata alanı, normalde birbirine erişmemesi gereken konteynerler arasında ortak bir pano haline geldi.

Bu, Check Point’in ChatGPT tarafında bildirdiği ikinci çıkış kanalı. Şirket mart ayında da DNS sorgularını kullanarak konuşma verisini dış bir sunucuya taşıyan bir yöntemden söz etmiş, OpenAI’nin bunu 20 Şubat’ta düzelttiğini açıklamıştı.

Yeni bulgu, OpenAI’nin kendi modellerinin dahili bir Artifactory örneğini şirketin güvenlik testleri sırasında bir mesaj tahtasına dönüştürdüğü Hugging Face vakasından ayrı tutuluyor. Check Point, bulduğu mekanizmanın farklı olduğunu ve her iki örneği de “ayrık tutulması gereken ortamlar arasında ortak bir dahili servisin istenmeyen iletişim katmanına dönüşmesi” olarak tanımladı.

Şirket, çalışmasını Haziran 2026 tarihli olarak işaretledi ve kanalın tam olarak ne zaman çalışmayı bıraktığını açıklamadı. Bu nedenle rapor, açığın ne kadar süre açık kaldığını göstermiyor.