Strona staje się ładunkiem. ChatGPT renderuje phishing atakującego we własnym interfejsie — i nie potrafi odróżnić go od siebie.

cze 1, 2026 | Cyberflux

Przez dwa i pół roku bezpieczna odpowiedź na pytanie „czy to niebezpieczne, prosić ChatGPT o streszczenie podejrzanej strony?" brzmiała: nie, model tylko czyta tekst. Andi Ahmeti z Permiso Security pokazał, że ta odpowiedź jest błędna.

29 maja 2026 Permiso ujawniło technikę nazwaną ChatGPhish. Mechanizm: gdy ChatGPT streszcza stronę zawierającą spreparowany Markdown, jego własny renderer odpowiedzi automatycznie pobiera obrazy atakującego, wyświetla linki atakującego jako żywe, klikalne przyciski — i stylizuje całość w wizualnym języku OpenAI.

Strona staje się ładunkiem.

Dlaczego to nie jest „kolejny prompt injection"

Sam prompt injection nie jest tu nowy. Nowe jest to, gdzie ląduje wynik.

Andi Ahmeti opisuje rdzeń problemu jednym zdaniem: renderer odpowiedzi chatgpt.com ufa linkom i adresom obrazów w Markdown, które pochodzą ze strony trzeciej, którą asystent właśnie streścił. Automatycznie pobiera te obrazy i wyświetla te linki jako żywe, klikalne elementy wewnątrz zaufanego interfejsu asystenta.

To jest różnica między prompt injection którego dotąd opisywaliśmy a ChatGPhish. Comment and Control wstrzykiwał instrukcje do agenta. Stored prompt injection przez WordPress atakował moment interakcji. ChatGPhish robi coś innego: nie tylko zmusza model do wykonania instrukcji, ale sprawia że wynik tej instrukcji jest renderowany przez interfejs ChatGPT jako jego własna odpowiedź.

Przeglądarkowa polityka same-origin nie chroni, bo asystent AI wykonuje się w uwierzytelnionym kontekście użytkownika. Tradycyjne granice bezpieczeństwa webowego są nieistotne — treść atakującego pojawia się w oknie odpowiedzi ChatGPT, ostylowana identycznie jak prawdziwy wynik asystenta, z sformatowanymi alertami, klikalnymi linkami i obrazami inline.

Trzy łańcuchy ataku

Permiso zademonstrowało trzy konkretne scenariusze.

Fałszywy alert bezpieczeństwa OpenAI. Atakujący wstrzykuje blok, który ChatGPT renderuje jako oficjalne powiadomienie bezpieczeństwa OpenAI — z klikalnym przyciskiem w stylu natywnym dla ChatGPT. Użytkownik nie ma jak odróżnić tego od prawdziwego komunikatu systemowego, bo jest renderowany przez ten sam silnik, w tym samym stylu, w tym samym oknie.

Kod QR jako pivot na telefon. Atakujący osadza inline kod QR z bucketa S3. Użytkownik skanuje go telefonem — i atak przenosi się z przeglądarki desktopowej na urządzenie mobilne, omijając filtry URL i korporacyjne kontrole bezpieczeństwa działające na desktopie. To jest pivot z monitorowanego środowiska firmowego do prywatnego telefonu jednym zeskanowaniem.

Pasywny beacon śledzący. Obrazy hostowane przez atakującego — w tym przez skracacze URL — są automatycznie pobierane przy każdym renderowaniu odpowiedzi. Wyciekają IP ofiary, User-Agent, Referer i dokładny czas powiązany z momentem, w którym ChatGPT wyprodukował odpowiedź. Bez żadnego kliknięcia.

Szczegół który jest sednem

Jest jedna rzecz, którą warto powiedzieć wprost, bo odróżnia ChatGPhish od zwykłego phishingu.

W klasycznym phishingu atakujący buduje fałszywą stronę, która udaje zaufaną markę. Ofiara, która jest ostrożna, sprawdza URL, zauważa że coś jest nie tak.

W ChatGPhish atakujący nie udaje nic. To OpenAI nadaje treści atakującego swój autorytet — renderując ją we własnym interfejsie, własnym stylem, jako własną odpowiedź. Użytkownik nie ma czego sprawdzać. URL paska adresu to chatgpt.com. Certyfikat jest prawdziwy. Interfejs jest prawdziwy. Tylko treść w środku pochodzi od kogoś innego — a model nie potrafi odróżnić własnego wygenerowanego contentu od Markdown kontrolowanego przez atakującego, pobranego ze źródła zewnętrznego.

To jest ta sama klasa problemu, którą opisywaliśmy przy prompt leaking dziś rano: model traktuje wszystko, co trafia do kontekstu, jako równoprawne. Tam to oznaczało, że powie ci swój system prompt. Tutaj oznacza, że wyrenderuje phishing atakującego jako własną odpowiedź.

Disclosure, które jest deja vu

Oś czasu zgłoszenia jest znajoma — i warto ją opisać, bo to drugi taki przypadek, który cyberflux opisuje w ciągu tygodnia.

29 kwietnia 2026: Ahmeti zgłasza błąd do OpenAI przez Bugcrowd pod tytułem „Untrusted Markdown Rendering Leads to XSS, Phishing, and Data Exfiltration". 30 kwietnia: OpenAI oznacza jako „Not Reproducible". 1 maja: Ahmeti składa poprawioną wersję z rozszerzonymi szczegółami — ta zostaje oznaczona jako duplikat. 7 maja: prośba o wyjaśnienie różnic między zgłoszeniem a rzekomym duplikatem pozostaje bez merytorycznej odpowiedzi. 29 maja: Permiso publikuje pełny łańcuch, powołując się na zatrzymanie procesu po stronie producenta.

W momencie publikacji Permiso nie otrzymało potwierdzenia, czy łatka została wdrożona.

Tydzień temu opisywaliśmy Chaotic Eclipse i spór z Microsoftem — badacz twierdzi, że proces zawiódł, producent twierdzi, że proces działa. Tutaj jest podobny wzorzec, ale z istotną różnicą: znacznik „Not Reproducible" jest szczególnie problematyczny, bo zachowanie jest w pełni odtwarzalne, jeśli faktycznie wkleisz wrogi URL do ChatGPT i poprosisz o streszczenie — czyli wykonasz dokładnie ten domyślny workflow, do którego ChatGPT zachęca użytkowników Firefoksa i iOS.

Nie rozstrzygamy, kto ma rację w szczegółach proceduralnych — OpenAI nie skomentowało publicznie. Ale fakt, że dwa głośne spory o disclosure trafiają do cyberflux w ciągu tygodnia, sam w sobie jest sygnałem o stanie relacji między badaczami a producentami modeli.

Co zrobić

Dla użytkowników: jedna linia szkolenia wystarcza — ChatGPT nie wysyła alertów bezpieczeństwa wewnątrz streszczeń stron. Jeśli streszczenie strony zawiera „alert OpenAI", przycisk „zweryfikuj konto" albo kod QR — to jest treść ze streszczanej strony, nie od OpenAI. Traktuj każdy klikalny element w streszczeniu strony jak link z tej strony, nie jak element interfejsu ChatGPT.

Dla zespołów: jeśli używacie ChatGPT do streszczania dokumentacji, README, stron konkurencji czy dashboardów SaaS — to jest żywa powierzchnia socjotechniczna, nie teoretyczny papier o prompt injection. Do czasu potwierdzenia łatki przez OpenAI zakładaj, że ChatGPT pozostaje podatny na tę technikę.

Permiso testowało atak na Firefoksie przez flow streszczania strony ChatGPT. Skoro nie ma potwierdzonej łatki, ostrożność przy streszczaniu nieznanych stron jest jedyną dostępną obroną po stronie użytkownika.

Źródła

Permiso Security — pierwotny raport „ChatGPhish: The Page Is the Payload" z pełnym łańcuchem ataku i osią czasu disclosure: https://permiso.io/blog/chatgpt-markdown-rendering-vulnerability

The Hacker News — omówienie z cytatami Andiego Ahmetiego: https://thehackernews.com/2026/05/chatgphish-vulnerability-turns-chatgpt.html

The Register — wywiad z badaczem i szczegóły pivota QR na urządzenie mobilne: https://www.theregister.com/research/2026/05/29/chatgpt-prompt-injection-turns-web-pages-into-phishing-lures/

CybersecurityNews — analiza techniczna i kontekst OWASP LLM01: https://cybersecuritynews.com/chatgpt-vulnerability-chatgphish-attack/