ChatGPT’de bir sohbeti başkasıyla paylaşmak için oluşturulan herkese açık bağlantılar, günlük hayatta e-postayla, mesajlaşma uygulamalarında ya da sosyal medyada sıkça dolaşıyor. Güvenlik şirketi Parameter’ın araştırmacıları, işte bu sıradan bağlantılardan birinin tuzağa dönüştürülebildiğini gösterdi: Özel olarak hazırlanmış bir paylaşım bağlantısını açan kişinin oturumunda, saldırganın yazdığı JavaScript kodu çalışabiliyordu.
Araştırmacılar, bu kodun kurbanın son sohbetlerini listeleyebildiğini, saldırganla hiç paylaşılmamış özel bir sohbetin içeriğini çekebildiğini ve bu veriyi dışarıdaki bir sunucuya gönderebildiğini doğruladı. Parameter’a göre kod, ChatGPT’nin oturum açılmış arayüzünün kullandığı servisleri doğrudan çağırabildiği için etkisi sohbetlerle sınırlı değildi; araştırmacıların ifadesiyle kurbanın hesabı adına neredeyse her işlem yapılabiliyordu.
İyi haber şu: Açık, OpenAI’ın hata ödül programı üzerinden bildirildi ve 26 Ekim 2026’da kapatıldı. Düzeltme OpenAI tarafında yapıldığı için kullanıcıların bir şey yüklemesine ya da sıfırlamasına gerek yok. Parameter, gerçek kullanıcılara yönelik bir saldırı tespit ettiğini bildirmiyor; denemeler araştırmacıların kendi ayrı hesapları arasında yapıldı.
Saldırı nasıl işliyordu?
Zincirin başında, tek başına zararsız görünen iki özellik vardı: ChatGPT’nin etkileşimli grafikleri ve HTML kodunu küçük bir web sayfasına çeviren Önizleme (Preview) özelliği.
Önizleme, içinde her türlü kod bulunabileceği için ayrı bir adreste, kısıtlanmış bir çerçeve içinde çalıştırılıyor. Bu yalıtım beklendiği gibi çalıştı: Önizlemedeki kod, çevresindeki ChatGPT sayfasını doğrudan okuyamadı. Sorun başka bir yerden çıktı.
Aynı sohbetteki grafik, arka planda MathLive adlı açık kaynaklı bir matematik kütüphanesini ana ChatGPT sayfasına yüklüyordu. MathLive, ekran klavyesiyle ilgili mesajları dinleyen bir alıcı bırakıyordu. Tarayıcıların farklı çerçeveler arasında mesaj taşımasını sağlayan bu mekanizma, ancak alıcı mesajı kimin gönderdiğini kontrol ettiğinde güvenlidir. Parameter’ın bulgusuna göre MathLive, klavye düzenini değiştiren mesajı herhangi bir göndericiden kabul ediyordu ve bu düzen ham HTML içerebiliyordu.
Böylece kısıtlı Önizleme, ana sayfaya HTML gönderebildi. Bu HTML, ana sayfa içinde kısıtlanmamış yeni bir çerçeve oluşturdu ve tarayıcı bu çerçeveyi ChatGPT’nin kendisi gibi gördü. Son adımda, ChatGPT’nin içerik güvenlik politikasının izin verdiği YouTube kaynaklı bir betik yanıtı kullanılarak saldırgan kodu çalıştırıldı.
Kurbanın tek yapması gereken bağlantıyı açmaktı
Araştırmacılar ilk aşamada saldırıyı kendi denetimlerindeki bir ChatGPT uygulamasıyla çalıştırabildi; ancak bu, kurbanın o uygulamayı bağlamasını gerektirdiği için gerçekçi değildi. Asıl kırılma noktası, grafiği ve Önizlemeyi tek bir sıradan sohbette birleştirip bunu normal paylaşım özelliğiyle yayımlamak oldu.
Parameter iki senaryo gözlemledi:
- En kararlı sürümde kurban paylaşılan bağlantıyı açıp ChatGPT’nin olağan Önizleme düğmesine bir kez tıklıyordu.
- Daha sonraki sürümde HTML bloğu otomatik açılacak şekilde işaretlendi; bu durumda bağlantıyı açmak tek adım hâline geldi. Araştırmacılar bu otomatik yolu ayrı bir hesapta üç kez yeniden üretti.
Kurbanın bir uygulama yüklemesi, bir çalışma alanına katılması ya da geliştirici araçlarını açması gerekmiyordu.
Bildirimden düzeltmeye: Zaman çizelgesi
Parameter’ın yayımladığı zaman çizelgesine göre süreç şöyle ilerledi:
- 13–17 Ekim: Açık zinciri doğrulandı, paylaşım bağlantısı üzerinden çalıştığı gösterildi.
- 18 Ekim: Rapor OpenAI’ın hata ödül programına gönderildi.
- 21 Ekim: OpenAI sorunu yeniden üretti; önem derecesi P2’den en yüksek kategori olan P1’e yükseltildi.
- 22–23 Ekim: Web arayüzünün bir sürümü düzeltildi, içerik güvenlik politikası değişiklikleri zincirin bir kısmını engelledi.
- 26 Ekim: OpenAI, iki arayüz sürümünün de saldırıda kullanılan mesajları reddettiğini doğruladı ve sorunu kapattı. Araştırmacılara toplam 5.000 dolar ödül verildi.
Parameter teknik ayrıntıları düzeltmenin ardından, 28 Ekim’de yayımladı. MathLive tarafında da 31 Ekim’de yayımlanan 0.111.2 sürümüyle, çerçeveler arası mesajlarda köken (origin) denetimi getirildi.
Asıl ders: Güvenlik sınırları özellikler arasındaki boşluklarda kırılıyor
Bu açığı ilginç kılan, tek tek bakıldığında her özelliğin makul görünmesi. Önizleme yalıtılmıştı, grafikler matematik klavyesi yükleyebiliyordu, çerçeveler mesajlaşabiliyordu, güvenlik politikası büyük bir video platformuna izin veriyordu ve sohbetler paylaşılabiliyordu. Açık, ancak bunların hepsi aynı sayfada bir araya geldiğinde ortaya çıktı.
Parameter’ın geliştiricilere yönelik önerileri özetle şöyle:
- Çerçeveler arası mesajları kabul eden her alıcı, hem göndericinin adresini hem de izin verilen pencereyi doğrulamalı.
- Pencereler arası ayarlar ham HTML taşımamalı.
- İçeriği güvenilmeyen bir kaynaktan etkilenebilen, dinamik olarak oluşturulan belgeler kısıtlı (sandbox) kalmalı.
- İçerik güvenlik politikası tek savunma hattı değil, yedek bir önlem olarak görülmeli.
Kullanıcılar için ne anlama geliyor?
Bu açık özelinde yapılması gereken bir şey yok; düzeltme sunucu tarafında yapıldı. Yine de olay, yapay zekâ sohbet araçlarında biriktirdiğimiz verinin ne kadar değerli olduğunu hatırlatıyor. İş belgeleri, kişisel sorular, sağlık ya da finans konuşmaları gibi hassas içerikler bu sohbetlerde duruyor. Tanımadığınız kişilerden gelen paylaşım bağlantılarına diğer bağlantılar kadar temkinli yaklaşmak, gereksiz eski sohbetleri silmek ve hesabınızda iki adımlı doğrulamayı açık tutmak, genel olarak riskinizi azaltan basit alışkanlıklar.
Kaynak: Parameter, OpenAI, MathLive







