Jak wynika z informacji technicznych opublikowanych przez Parameter Labs 28 października, zespół zajmujący się badaniami nad bezpieczeństwem znalazł sposób na przejęcie dowolnego konta ChatGPT, po prostu namawiając ofiarę do otwarcia łącza do udostępnionej konwersacji. Firma poinformowała, że 26 października OpenAI naprawiła lukę i sklasyfikowała raport jako P1, co stanowi najwyższy stopień ważności.
Ustalenie to dotyczy rzadkiego, kompleksowego przejęcia konta w stosunku do głównego nurtu platformy AI i miało miejsce, gdy najnowsze osiągnięcia w zakresie sztucznej inteligencji nieustannie pokazują, ile wrażliwych materiałów ludzie przechowują obecnie w aplikacjach do czatowania. Parameter Labs stwierdziło, że atak nie wymagał instalacji aplikacji, narzędzi programistycznych ani żadnej interakcji poza otwarciem udostępnionego adresu URL ChatGPT atakującego.
Jak działał łańcuch ataku
Sieć nadużyła dwóch zwykłych funkcji ChatGPT, które oddzielnie wyglądały nieszkodliwie: interaktywnego wykresu i piaskownicy HTML Preview. Funkcja podglądu ChatGPT uruchamia wygenerowany kod HTML w ograniczonej ramce na oddzielnym adresie internetowym, co powinno uniemożliwić mu dotykanie otaczającej go strony zalogowanego chatgpt.com.
Przełom nastąpił dzięki wykresowi, który załadował bibliotekę matematyczną o nazwie MathLive. Biblioteka ta zainstalowała moduł nasłuchujący wiadomości na głównej stronie ChatGPT dla swojej klawiatury ekranowej, ale Parameter Labs odkrył, że odbiornik akceptował wiadomości z dowolnego źródła bez weryfikacji nadawcy. Jeden akceptowany typ wiadomości mógłby zastąpić układ wirtualnej klawiatury kodem HTML kontrolowanym przez atakującego, który MathLive następnie wstawiłby na prawdziwą stronę ChatGPT za pośrednictwem wewnętrznego HTML.
Skrypty wstawione w ten sposób zwykle nie są wykonywane, więc badacze zawinęli swój ładunek w ramce iframe, używając atrybutu srcdoc. Ponieważ główna strona ChatGPT utworzyła tę ramkę bez piaskownicy, przeglądarka potraktowała znajdujący się w niej kod jako autentyczną treść chatgpt.com z dostępem do strony nadrzędnej.
Ucieczka od polityki bezpieczeństwa treści
Polityka bezpieczeństwa treści ChatGPT nadal blokowała wbudowane skrypty, ale Parameter Labs znalazło lukę: zasady zezwalały na skrypty z YouTube. Badacze odkryli, że punkt końcowy YouTube oEmbed odzwierciedla nieprawidłowy parametr wywołania zwrotnego JSONP w swojej odpowiedzi na błąd przed sprawdzeniem, umożliwiając dołączenie wykonywalnego kodu JavaScript do odpowiedzi, którą przeglądarka z radością załaduje jako skrypt.
W tym momencie zespół uruchomił dowolny JavaScript z tożsamością chatgpt.com w sesji logowania ofiary. Firma Parameter Labs jasno określiła, co to oznacza w praktyce: ładunek nie ograniczał się do modyfikowania strony lub wyświetlania alertu — mógł bezpośrednio wywołać uwierzytelnione interfejsy API ChatGPT jako ofiarę. Podczas testów ładunek mógł wyliczyć listę rozmów ofiary, pobrać zawartość prywatnych rozmów, które nigdy nie zostały udostępnione atakującemu, i wysłać te dane na serwer zewnętrzny. Przeglądarka identyfikowała każde działanie jako pochodzące z samej chatgpt.com, nie dając ofierze żadnego widocznego sygnału, że coś jest nie tak.
Jeden link wystarczył
Tym, co zmieniło błąd badawczy w praktyczną broń, była dostawa. Badacze umieścili wykres i możliwy do podglądu blok HTML w jednej zwykłej rozmowie, opublikowali ją za pomocą zwykłej funkcji udostępniania ChatGPT i wysłali powstały link /share/ tymi samymi drogami, z których każdy korzystałby: e-mailem, czatem, zgłoszeniem do pomocy technicznej lub postem w mediach społecznościowych.
W najbardziej stabilnej wersji ofiara musiała raz kliknąć przycisk podglądu ChatGPT po otwarciu łącza. Późniejsza wersja oznaczyła blok HTML jako możliwy do podglądu, więc ChatGPT otworzył go automatycznie, a jedyną wymaganą akcją ofiary było odwiedzenie adresu URL. Zespół odtworzył tę w pełni automatyczną ścieżkę trzykrotnie na osobnym koncie, w tym po twardym odświeżeniu, przy czym ładunek uruchamiał się około 4,5 sekundy po załadowaniu strony.
Ponieważ wykres i podgląd ładowały się niezależnie, ładunek mógł czasami zostać uruchomiony, zanim MathLive był gotowy. Ostateczna wersja ponawiała wysyłanie wiadomości przez ograniczony czas, aby poradzić sobie z warunkami wyścigu.
Ujawnienie i naprawa
Laboratorium Parameter Labs zgłosiło problem firmie OpenAI, która 26 października wysłała poprawkę i oceniła raport na poziomie P1. Ujawnienie następuje w ramach szerszych badań nad bezpieczeństwem platform AI; na początku tego tygodnia The Register zgłosił błędy w pięciu narzędziach dla programistów AI, z których niektóre w chwili publikacji były jeszcze niezałatane.
Lekcja wykracza poza jedną bibliotekę. Nowoczesne aplikacje do czatowania składają się z komponentów innych firm, podglądów w trybie piaskownicy i zezwalających kanałów wiadomości na jednej uwierzytelnionej stronie, a każdy niezweryfikowany odbiorca postMessage może stać się pomostem między nimi. Dla użytkowników praktyczne wskazówki nie różnią się od klasycznych zabezpieczeń sieciowych: traktuj linki do wspólnych rozmów AI w taki sam sposób, w jaki traktujesz każdy inny niechciany link, ponieważ platforma nie może już obiecać, że otwarcie takiego linku będzie nieszkodliwe.
Ze swojej strony klasyfikacja P1 OpenAI i szybki czas realizacji sugerują, że firma traktuje ataki sesyjne na chatgpt.com za pośrednictwem przeglądarki jako zagrożenia pierwszego rzędu. Incydent przypomina także, jak wiele wartości skupia się na tych kontach teraz, gdy użytkownicy przechowują w historii czatów dokumenty służbowe, pytania medyczne i prywatne projekty — czyli dokładnie taką treść, jaką jak wykazało laboratorium Parameter Lab, osoba atakująca mogła wyodrębnić.
---
Wyprzedź sztuczną inteligencjęOtrzymuj najnowsze wiadomości, analizy i przełomowe informacje dotyczące sztucznej inteligencji — wszystko w jednym miejscu.
Przeczytaj więcej aktualności o sztucznej inteligencji →