Hesabı Yapın: ChatGPT Hesaplarını Nasıl Ele Geçirdik?
Kaynak: Hacker News
İçindekiler 3 başlık
Ekim 2026'da araştırmacılar, ChatGPT'nin sandbox (kum havuzu) ve İçerik Güvenliği Politikası (CSP) mekanizmalarını aşarak sıradan bir herkese açık sohbet paylaşım bağlantısını, bağlantıyı açan kişinin oturumu içinde çalışan saldırgan kontrollü JavaScript koduna dönüştürmenin bir yolunu buldu. OpenAI, 26 Ekim 2026'da bu açığı P1 (Kritik) seviyesinde sınıflandırarak kapattı.
Bir saldırgan zararlı bir sohbet oluşturup ChatGPT'nin standart paylaşım özelliğiyle yayınlayabiliyor ve bağlantıyı kurbana gönderebiliyordu. Kurbanın herhangi bir uygulama yüklemesine, projeye katılmasına, kod yapıştırmasına veya geliştirici araçlarını açmasına gerek yoktu; yalnızca paylaşılan bağlantıyı açması yeterliydi. Zararlı yük (payload), doğrudan chatgpt.com üzerinde kurbanın kimliği doğrulanmış web oturumuyla çalışarak şu işlemleri gerçekleştirebiliyordu:
- Kurbanın sohbet listesini numaralandırma ve görüntüleme
- Daha önce hiç paylaşılmamış özel bir sohbetin içeriğini çekme
- Özel sohbet verilerini harici bir sunucuya gönderme
- Kurban adına doğrudan ChatGPT'nin kimlik doğrulamalı API'lerini çağırarak hesabı tamamen ele geçirme
Saldırı Zinciri Özeti#
Saldırı, tek başına zararsız görünen iki özelliğin (etkileşimli bir grafik ve bir HTML Önizlemesi) birleşimiyle tetiklendi:
- Adım 1: Saldırgan, özel hazırlanmış bir ChatGPT sohbetini herkese açık olarak yayınlar.
- Adım 2: Kurban, paylaşılan bu herkese açık bağlantıyı açar.
- Adım 3: HTML Önizlemesi (
HTML Preview), izolasyonu aşarak anachatgpt.comsayfasına sızar. - Adım 4: Zararlı JavaScript kodu, kurbanın açık olan oturumu içinde çalışmaya başlar.
- Adım 5: Saldırgan, özel sohbetleri ve dosyaları okumak veya hesap ayarlarını değiştirmek dahil kurban adına her türlü işlemi yapar.
Teknik İnceleme: Bir Grafik ve Bir Önizleme ile Başladı#
ChatGPT, bir HTML kod bloğunu Preview (Önizleme) özelliğiyle küçük, çalışan bir web sayfasına dönüştürebilir. Güvenlik amacıyla bu sayfa, farklı bir web adresinde kısıtlı bir çerçeve (iframe) içinde çalıştırılır. İlk bakışta bu izolasyon görevini yapıyordu; önizleme içindeki kod, ana ChatGPT sayfası olan parent.document nesnesini doğrudan okuyamıyordu.
Ancak sohbette normal bir etkileşimli grafik de bulunuyordu. Bu grafik, arka planda MathLive adlı bir matematik kütüphanesini yüklüyordu. MathLive, yalnızca grafiği çizmekle kalmayıp ana ChatGPT sayfasına ekran klavyesiyle ilgili mesajları dinleyen bir postMessage alıcısı (listener) kuruyordu. Tarayıcılardaki postMessage API'si, farklı çerçevelerin birbirleriyle güvenli bilgi alışverişi yapmasını sağlayan bir "posta deliği" gibidir; ancak yalnızca alıcı mesajı kimin gönderdiğini (origin kontrolü) doğrularsa güvenlidir.
MathLive, sanal klavye düzenini değiştiren ayar mesajları için gönderici doğrulaması yapmıyordu ve bu klavye düzeninin HTML içermesine izin veriliyordu. Grafik alıcıyı ana sayfaya kurmuştu, HTML Önizlemesi ise o posta deliğinden içeriye zararlı mesajı bırakma imkanı verdi.
Yazılım Geliştiriciler İçin Pratik Çıkarımlar#
Modern yapay zeka ve üretken arayüz (Generative UI) uygulamaları geliştirirken bu vakadan çıkarılması gereken kritik dersler şunlardır:
- Origin Doğrulaması Şarttır:
window.postMessagedinleyicilerinde her zamanevent.originkontrolü yapılmalı ve yalnızca güvenilir kaynaklardan gelen mesajlar işlenmelidir. - Üçüncü Parti Kütüphane Denetimi: AI çıktılarında grafik veya matematiksel ifadeleri işlemek için yüklenen harici kütüphanelerin (ör. MathLive) DOM'a eklediği global dinleyiciler ve HTML enjeksiyon noktaları güvenlik taramasından geçirilmelidir.
- Sandbox İzolasyonunun Sınırları: Farklı bir origin üzerinde
iframekullanmak tek başına yeterli değildir; çerçeveler arası iletişim kanalları (postMessage) en zayıf halka kadar güvenlidir.
Kaynak ve atıf
Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- parameter.ai/labs/we-found-a-gap-at-openai