deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

MathLive 0.111.2, ChatGPT paylaşım bağlantısı kod çalıştırma zincirinin ardından origin denetimleri ekliyor

MathLive'ın postMessage dinleyicisi herhangi bir origin'den gelen mesajları kabul ediyordu; bu da paylaşılan bir ChatGPT bağlantısının saldırgan kodunu chatgpt.com olarak çalıştırmasına izin veriyordu. Sürüm 0.111.2 varsayılan olarak same-origin doğrulaması getiriyor.

MathLive 0.111.2, ChatGPT paylaşım bağlantısı kod çalıştırma zincirinin ardından origin denetimleri ekliyor

MathLive artık varsayılan olarak mesaj origin'lerini doğruluyor

Açık kaynaklı matematik giriş alanı kütüphanesi MathLive, 31 Ekim'de yalnızca bir Security bölümü içeren bir changelog ile 0.111.2 sürümünü yayımladı. Başlıca değişiklik şu: sanal klavye, proxy ve mathfield mesajları artık varsayılan olarak same-origin doğrulamasına tabi. Sürüm notlarında ChatGPT, OpenAI veya güvenlik firması Parameter'a dair hiçbir ifade yok, bir CVE tanımlayıcısı da taşımıyor ve Parameter'ın yazısında MathLive'ın geliştiricileriyle iletişime geçildiği belirtilmiyor; dolayısıyla iki olay arasındaki bağlantı kayıtlara dayanan bir gerçekten çok bir çıkarım — ne var ki zamanlama, MathLive'ın chatgpt.com'a yönelik bir kod çalıştırma zincirinin ilk halkası olduğu bir ifşanın hemen ardından geliyor.

Bir paylaşım bağlantısı nasıl kod çalıştırmaya dönüştü

Parameter'ın 28 Ekim'de yayımlanan ve bir dev.to gönderisinde de aktarılan yazısına göre firma, son halinde tek kullanıcı eyleminin paylaşılmış bir ChatGPT sohbetine giden bir bağlantıyı açmak olduğu bir saldırı geliştirdi. Daha önceki, daha kararlı bir varyant önizlemede bir kez tıklama gerektiriyordu. Zincir şöyle işliyordu:

  • Saldırgan, etkileşimli bir grafik ve bir HTML kod bloğu içeren sıradan bir sohbet yayımlıyor. Grafik, MathLive'ı yüklüyor ve MathLive, ana ChatGPT sayfasına bir mesaj dinleyicisi kaydediyor.
  • HTML önizlemesi ayrı bir origin üzerindeki sandbox'lı bir iframe içinde çalışıyor. Ana sayfayı okuyamıyor ama üzerinde postMessage çağırabiliyor ve mathlive#virtual-keyboard-message türünde mesajlar yayıyor.
  • MathLive'ın denetleyicisi 'none' origin politikası kullanıyordu — API referansının belgelediği varsayılan bu — bu yüzden bu mesajları herhangi bir origin'den kabul ediyor ve onayladığı bir pencereden gelmelerini zorunlu tutmuyordu.
  • Mesajda taşınan klavye düzeni innerHTML aracılığıyla sayfaya eklenen bir markup'tı. Parameter, createHTML adımının bir sanitizer değil, geçişe izin veren bir sarmalayıcı gibi davrandığını buldu.
  • Bu markup, srcdoc'lu ve sandbox özniteliği olmayan bir iframe oluşturuyordu. Ana sayfa oluşturduğu için frame, chatgpt.com kimliğini miras alıyordu.
  • ChatGPT'nin Content Security Policy'si inline script'leri engelliyordu ama www.youtube.com'a izin veriyordu ve YouTube'un oEmbed uç noktasındaki JSONP tarzı bir callback parametresi script'i sağlıyordu.

chatgpt.com üzerinde script çalıştırma elde eden araştırmacılar, kurbanın son sohbetlerini listeledi, ChatGPT'nin kimlik doğrulamalı API'si üzerinden özel bir sohbeti indirdi ve bir kısmını kendi kontrollerindeki bir sunucya gönderdi. Sohbeti yalnızca okuma amaçlı gösterdiler, ancak Parameter bu erişimi kurbanın hesabının tamamen ele geçirilmesine denk değerlendirdi.

Düzeltmenin zaman çizelgesi

Parameter sorunu 18 Ekim'de OpenAI'nin bug bounty programı üzerinden bildirdi. OpenAI 21 Ekim'de yeniden canlandırdı ve önem derecesini P2'den P1'e yükseltti. 22-23 Ekim arasında bir frontend yamalandı ve CSP değişiklikleri zincirin bir kısmını engelledi. 18 Ekim'den sekiz gün sonra, 26 Ekim'de her iki frontend de bu mesajları reddetti ve OpenAI 5.000 dolar ödül ödedi; kullanıcı eylemi gerekmedi. Parameter gerçek dünyada istismar bildirmiyor ve kanıtı gerçek kullanıcılara karşı değil, kendi ayrı hesapları arasında çalıştırıldı.

0.111.2 neleri değiştiriyor

Same-origin varsayılanının ötesinde, sürüm zincirin kullandığı diğer kapıları da kapatıyor. Cross-window klavye ayarları, origin doğrulaması devre dışı bırakılsa bile artık özel düzenler veya keycap geçersiz kılmaları sağlayamıyor; özel HTML düzenleri artık klavyenin kendi host penceresinde yapılandırılıyor. Durum değiştiren mesajlar, ait oldukları mathfield'ın penceresine bağlanıyor. Same-origin denetimleri artık iki opak 'null' origin'i eşit saymıyor ve wildcard bir gönderici origin'i de kabul etmiyor. Origin'ler arasına yayılan entegrasyonların artık hangi peer origin'lere güvendiklerini bildirmeleri gerekiyor.

MathLive kullanan uygulamalar sürümlerini npm ls mathlive ile kontrol etmeli ve 0.111.2 veya sonrasına yükseltmelidir. Bir uyarı: API referansı hâlâ originValidator için varsayılan olarak 'none' listeliyor; dolayısıyla entegrasyonlar politikayı açıkça ayarlamalı, örneğin mathVirtualKeyboard.originValidator = 'same-origin', her iki sürümün varsayılanına güvenmemelidir. Gerçekten origin'ler arası konuşan klavyeler için validator yalnızca belirli güvenilir origin'lere izin veren bir fonksiyon olabilir.

Daha geniş denetim her sayfaya uygulanabilir: her message dinleyicisini bulun, harekete geçmeden önce hem event.origin hem event.source değerlerini kontrol edin ve pencereler arası yapılandırma olarak hiçbir zaman ham HTML kabul etmeyin.

Neden önemli

İki ders öne çıkıyor. Birincisi, MathLive'ın belgelenmiş varsayılanı herhangi bir origin'den postMessage girdisini kabul etmekti; bu, doğrulamaya geçmeyen her entegrasyonun açığı miras aldığı anlamına geliyordu; kütüphane düzeyindeki tek bir güvensiz dinleyici, onu gömen her sitede geniş bir saldırı yüzeyine dönüştü. İkincisi, zincir, güvenilmeyen çıktıyı — paylaşılan sohbetler, modelin yazdığı HTML, önizleme panelleri — üçüncü taraf widget'larla yan yana gösteren yapay zeka ürünlerinin, tek tek makul olan kararların tam hesap ele geçirmeye dönüşebildiği kırılma noktaları nasıl oluşturduğunu gösteriyor. Parameter'ın sonucu şöyle: CSP derinlemesine savunmada yardımcı olur ama güvensiz bir render yolunu telafi edemez; YouTube oEmbed callback'i bunu gösterdi. Genel düzeltme gösterişsiz: bir mesajın içeriğine güvenmeden önce kimin gönderdiğini doğrulayın.

  • #security
  • #javascript
  • #open-source
  • #chatgpt
  • #web

İlgili yazılar