Parameter Labs przedstawiło opis podatności wykrytej w wariancie podglądu HTML w ChatGPT (funkcji znanej wcześniej pod nazwą Canvas), w którym interaktywne aplikacje HTML są wyświetlane w odizolowanej ramce iframe. Zachowanie ścisłej izolacji w ramce piaskownicy jest kluczowe, aby niezaufany kod nie mógł wchodzić w interakcję z interfejsami API OpenAI ani uzyskiwać dostępu do prywatnych danych.
Badacze zidentyfikowali skomplikowany łańcuch ataku. OpenAI używało biblioteki JavaScript MathLive do obsługi wykresów, a biblioteka ta zawiera własną klawiaturę wirtualną. Klawiatura mogła być wywoływana na stronie nadrzędnej poprzez wiadomość postMessage() wysyłaną z odizolowanej ramki podglądu HTML. Kod odbierający tę wiadomość korzystał z właściwości innerHTML, co pozwalało na wstrzyknięcie własnego kodu HTML do strony nadrzędnej bez jakichkolwiek mechanizmów blokujących takie wywołania.
Mimo że właściwość innerHTML nie wykonuje bezpośrednio elementów skryptu, została wykorzystana do wstawienia nowej ramki iframe pozbawionej ograniczeń piaskownicy. Polityka Content Security Policy (CSP) OpenAI blokowała skrypty inline i zezwalała na ładowanie kodu tylko z kilku domen, w tym z YouTube. Atakujący wykorzystali punkt końcowy YouTube oEmbed do zwrócenia i wykonania kodu JavaScript.
Po uzyskaniu możliwości wykonywania kodu JavaScript w kontekście ChatGPT, wyciągnięcie prywatnych danych użytkownika z API oraz ich eksfiltracja przy użyciu odwołania do obrazu okazały się proste. W efekcie możliwe było stworzenie odnośnika do konwersacji ChatGPT, który po kliknięciu przez innego zalogowanego użytkownika pozwalał na przejęcie jego danych lub podejmowanie działań w jego imieniu.
OpenAI usunęło lukę i wypłaciło badaczom nagrodę bug bounty w wysokości 5000 dolarów. Autor wpisu, Simon Willison, zauważył, że kwota ta była stosunkowo niska jak na podatność o tak poważnych konsekwencjach.