Streszczenie: Badacze z LayerX odkryli, jak prosta, niestandardowa czcionka może zagrozić każdemu systemowi sztucznej inteligencji dostępnemu na rynku. Mając jedynie niestandardową czcionkę i prosty kod CSS, stworzyliśmy stronę internetową, na której przeglądarka wyświetla instrukcje prowadzące użytkownika do wykonania odwróconej powłoki, podczas gdy tekst DOM analizowany przez narzędzia sztucznej inteligencji zawiera nieszkodliwe fanfikcje z gier wideo.
Złośliwe instrukcje istnieją tylko w warstwie renderowania, a żaden z testowanych przez nas asystentów internetowych AI nie zidentyfikował zagrożenia. Czcionki są dobrze znanym wektorem ataku służącym do wdrażania złośliwego oprogramowania, a nasze badania wykazały, że można je również wykorzystać do szybkiego wstrzykiwania i zatruwania systemów AI. W rezultacie każdy system AI – w tym ChatGPT, Claude, Gemini i inne – może paść ofiarą tego ataku, co może prowadzić do potencjalnego wycieku danych i/lub wykonania złośliwego kodu.
Firma LayerX skontaktowała się ze wszystkimi dostawcami, których dotyczyły nasze badania. Jednak z wyjątkiem Microsoftu, wszyscy wyjaśnili, że problem „wykracza poza zakres” ich zdaniem na bezpieczeństwo modeli AI i wiąże się z socjotechniką, co po raz kolejny pokazuje rozdźwięk między tym, co zabezpieczają platformy AI, a tym, co użytkownicy uważają za bezpieczne.
Ubrany, by zabijać: luka w renderowaniu sztucznej inteligencji
Istnieje strukturalny rozdźwięk między tym, co asystent AI analizuje w kodzie HTML strony, a tym, co użytkownik widzi w przeglądarce. W pewnych sytuacjach asystenci mogą udzielać użytkownikom niedokładnych i potencjalnie niebezpiecznych odpowiedzi, a atakujący mogą wykorzystać to ograniczenie do przeprowadzania ataków socjotechnicznych.
Dzięki niestandardowej czcionce i CSS, tekst HTML może być wizualnie przekształcany dla użytkownika, ale pozostaje niezmieniony w DOM. Gdy strona jest renderowana w przeglądarce, to, co widzi użytkownik, jest zupełnie inne niż kod HTML. Owszem, treść nadal tam jest, ale jest skutecznie usuwana z pola widzenia użytkownika.
Stworzyliśmy stronę proof-of-concept, która wygląda jak fanfiction o grze wideo, ale po wyrenderowaniu w przeglądarce zachęca użytkownika do wykonania kroków prowadzących do odwróconej powłoki. Na pytanie o bezpieczeństwo strony, żaden z testowanych przez nas asystentów nieagentowych (ChatGPT, Claude, Copilot, Dia, Fellou, Gemini, Genspark, Grok, Leo, Perplexity i Sigma) nie wykrył „ukrytego” tekstu i z przekonaniem poinformował użytkownika, że strona nie stanowi zagrożenia dla bezpieczeństwa. Testy przeprowadzono w grudniu 2025 roku.
Asystent AI analizuje stronę internetową jako tekst strukturalny, podczas gdy przeglądarka renderuje tę stronę internetową do postaci wizualnej dla użytkownika. W tej warstwie renderowania atakujący mogą modyfikować widoczne dla człowieka znaczenie strony bez zmiany podstawowego DOM.
Ten rozdźwięk między tym, co widzi asystent, a tym, co widzi użytkownik, skutkuje niedokładnymi odpowiedziami, niebezpiecznymi rekomendacjami i nadszarpniętym zaufaniem.
To nie jest exploit przeglądarki i nie wynika z błędu parsowania. Przeglądarka zachowuje się dokładnie tak, jak została zaprojektowana. Luka tkwi w narzędziach, które zakładają, że tekst DOM w pełni oddaje znaczenie widoczne dla użytkownika.
*Przez nieagentowe rozumiemy asystentów, którzy pobierają i analizują kod HTML, ale nie wykonują pełnego procesu renderowania w przeglądarce ani nie analizują niestandardowych mapowań glifów czcionek.
Podręcznik atakującego
Ta technika nie wymaga JavaScript, zestawów exploitów ani luk w zabezpieczeniach przeglądarki:
- Przygotuj nieszkodliwą treść HTML, w tym treść wypełniającą, która wydaje się nieszkodliwa po przeanalizowaniu jej jako tekstu (np. fan fiction).
- Wstaw zakodowany ładunek, który wydaje się bezsensowny w DOM
- Utwórz niestandardową czcionkę, która przekształca glify tak, aby normalne znaki angielskie były wyświetlane jako bełkot, a zakodowany ładunek był wyświetlany jako czytelne instrukcje
- Użyj CSS, aby kontrolować widoczność, ukrywając nieszkodliwą zawartość (np. 1 px, czarno-czarny), wyświetlając zawartość ładunku w czytelnym rozmiarze i kolorze oraz stosując globalnie niestandardową czcionkę
Wynik: Analizatory tekstu widzą łagodną treść, podczas gdy użytkownicy widzą instrukcje kontrolowane przez atakującego.
Powoduje to przeniesienie ładunku z warstwy DOM do warstwy renderowania.
Przepływ pracy ataku
Użytkownik odwiedza tę stronę: https://layerxresearch.com/RaptureFuture
Użytkownikowi wydaje się, że jest to strona poświęcona fanfiction, zawierająca wiadomość zachęcającą do znalezienia „jajka wielkanocnego” związanego z grą wideo Bioshock:
Użytkownik jest ostrożny i prosi asystenta AI o sprawdzenie strony i sprawdzenie, czy instrukcje zawarte w easter eggu są bezpieczne. Asystent pobiera i analizuje kod HTML, a następnie widzi coś, co jest przede wszystkim fanfikiem inspirowanym grami wideo:
Sekcje fan fiction są ukryte przed użytkownikiem za pomocą CSS, podczas gdy zakodowana sekcja blobu jest wyświetlana normalnie (i „dekodowana” za pomocą niestandardowej czcionki). Gdy asystent widzi zakodowaną sekcję blobu strony, nie jest w stanie przeanalizować tekstu w formacie base64 i traktuje go jako szum.
W tych warunkach, użytkownik widzi duży zielony, złośliwy tekst, który wyświetliliśmy powyżej, podczas gdy asystent AI widzi tylko tekst fan fiction, który jest teraz ukryty przed użytkownikiemAsystent ustala, że strona jest bezpieczna i w wielu przypadkach zachęca użytkownika do wykonania kroków, które spowodowałyby odwrócenie powłoki.
To technika socjotechniczna warstwy prezentacji. Ładunek znajduje się w potoku renderowania, a nie w skrypcie wykonywalnym.
Schemat ataku
Dane Techniczne
Gdybyś otworzył kod źródłowy HTML, zobaczyłbyś głównie tekst napisany zwykłym językiem (fan fiction o grach wideo) oraz małą sekcję zawierającą specjalny tekst przypominający bełkot w stylu base64.
W kodzie HTML, CSS zapewnia, że cały tekst jest ustawiony na niestandardową czcionkę, którą stworzyliśmy. Czcionka ta działa jak wizualny szyfr podstawieniowy zaimplementowany na poziomie glifu czcionki. Sam plik czcionki jest kluczem szyfru i jest skonstruowany w taki sposób, że po wyświetleniu w przeglądarce, zwykły tekst HTML jest wyświetlany jako bełkot, a specjalny tekst HTML jako zwykły tekst. Ten atak nie wymaga JavaScript i zadziała nawet po jego wyłączeniu.
Po wyrenderowaniu, normalny tekst HTML zostaje zmniejszony do 1 piksela i wizualnie ukryty dzięki ustawieniu go na kolor taki sam jak tło strony. Niestandardowa czcionka sprawia, że ten normalny tekst jest dla użytkownika niezrozumiały. Nawet po powiększeniu i zaznaczeniu tekstu, użytkownik zobaczy bełkot – ale asystenci AI widzą zwykły, ukryty tekst HTML (fan fiction dotyczący gier wideo).
Po wyrenderowaniu specjalny tekst HTML jest wyświetlany w rozsądnym rozmiarze i kolorze, aby mogą być widoczne dla użytkownika. Niestandardowa czcionka sprawia, że ten specjalny tekst staje się czytelny dla użytkownika i zawiera wiadomość zachęcającą do wykonania czynności w systemie, które spowodują odwrócenie powłoki.
Dla asystentów AI ten specjalny tekst HTML to po prostu bełkot w stylu base64: przypomina zakodowany ładunek (liczby alfanumeryczne o wysokiej entropii), którego nie można zdekodować bez mapowania czcionek. W efekcie zarówno asystenci, jak i ludzie traktują go jako szum.
Chociaż użytkownikowi jest on prezentowany wizualnie jako zwykły tekst, Asystenci AI widzą specjalny tekst HTML (bełkot).
Jeśli użytkownik poprosi asystenta o sprawdzenie strony i sprawdzenie, czy jest ona bezpieczna, asystent będzie mógł jedynie wyświetlić kod HTML. Nie wyrenderuje strony i dlatego nie będzie w stanie wiarygodnie określić, jak będzie ona wyglądać dla użytkownika. Ponieważ kod HTML to głównie fanowska opowieść o grach wideo, a specjalny tekst jest niezrozumiały nawet dla asystenta, asystent uzna witrynę za nieszkodliwą.
Asystent AI widzi witrynę poświęconą fan fiction grom wideo, która nie zawiera żadnych zagrożeń ani obaw dotyczących bezpieczeństwa.
Użytkownik widzi kroki dotyczące ustanowienia odwrotnej powłoki na swoim komputerze.
To, co widzi użytkownik, nie jest tym, co widzi asystent AI.
Wpływ
Kiedy asystent AI przegląda stronę, określa jej treść i znaczenie na podstawie tekstu HTML. Kiedy użytkownik przegląda stronę, określa jej treść i znaczenie na podstawie wizualnej prezentacji renderowanej strony. To dwa różne obszary zagrożenia, a opisany przez nas exploit wykorzystuje lukę między nimi.
W normalnych scenariuszach internetowych HTML jest zawartość i pomoce czcionek w presentationCzcionka nie zmienia znaczenia tekstu. W tym kontekście można zasadnie założyć, że wizualne znaczenie strony jest określone przez tekst DOM, a nie przez sztuczki związane z podmianą glifów.
To założenie jest zazwyczaj bezpieczne – i dlatego jest tak skuteczne.
Nowoczesne modele bezpieczeństwa sieci zazwyczaj nie traktują niestandardowych czcionek jako transformatorów semantycznych ani szyfrów podstawieniowych. Większość asystentów AI dostępnych z poziomu przeglądarki nie jest w stanie niezawodnie wykryć sztuczek na poziomie prezentacji (takich jak podstawianie glifów), chyba że otrzymają dostęp do pliku czcionki lub jawnego kontekstu renderowania. Nawet jeśli asystent może pobrać plik czcionki, większość domyślnie nie analizuje mapowań glifów ani nie wykonuje testów renderowania i różnicowania.
Nawet stosując bardzo szczegółowe komunikaty zaprojektowane w celu wywołania wykrycia, nasze testy (przeprowadzone w grudniu 2025 r.) nie zidentyfikowały ani jednego asystenta, który skutecznie wykryłby zagrożenie.
Użytkownicy polegają na asystentach AI, którzy precyzyjnie przedstawiają znaczenie strony internetowej, ale asystenci są oszukiwani prostym szyfrem podstawieniowym. Powoduje to kilka praktycznych problemów z bezpieczeństwem:
Inżynieria społeczna wspomagana sztuczną inteligencją
Kiedy atakujący tworzy złośliwą stronę, która powoduje, że asystent AI klasyfikuje ją jako bezpieczną, skutecznie uzurpuje sobie autorytet asystenta AI i wykorzystuje jego reputację do wzmocnienia własnego przekazu. To fałszywe zapewnienie może skłonić użytkowników do podjęcia działań, których w innym przypadku by unikali, i ostatecznie może podważyć zaufanie do systemów AI, na których polegają w kwestii bezpieczeństwa.
Słabe punkty w procesach bezpieczeństwa wspomaganych przez sztuczną inteligencję
Stworzona przez nas strona proof-of-concept – atak socjotechniczny zachęcający użytkownika do wykonywania szkodliwych działań w jego własnych systemach – to tylko jeden z przykładów, jak można wykorzystać tę technikę warstwy prezentacji. Asystenci AI są coraz częściej integrowani z procesami bezpieczeństwa, gdzie asystenci przeglądarek, współpiloci i narzędzia helpdesku podsumowują strony internetowe i wyszukują potencjalne zagrożenia. Przenosząc dane do warstwy renderowania, atakujący tworzą martwą strefę, która pozwala złośliwej zawartości ominąć te tekstowe narzędzia AI.
Ujawnienia i odpowiedzi dostawców
Firma LayerX przesłała swoje wnioski czołowym dostawcom platform AI, zgodnie z procedurami Odpowiedzialnego Ujawniania. Większość dostawców odrzuciła raport, zazwyczaj twierdząc, że ten atak wykracza poza zakres bezpieczeństwa modeli AI. W rezultacie użytkownicy tych modeli pozostają narażeni na ten wektor ataku.
Jedynymi dostawcami, którzy zaakceptowali ten raport i poprosili o czas na jego naprawienie, byli Microsoft i Google. Ostatecznie Google zignorowało zgłoszenie (po początkowym nadaniu mu oceny P2 (wysokiej)) i zamknęło je, prawdopodobnie dlatego, że jego naprawienie wymagałoby zbyt dużego nakładu pracy.
Jedynym dostawcą, który w pełni zajął się tą kwestią i zażądał pełnego okresu ujawnienia informacji (90 dni), była firma Microsoft.
| Sprzedawca | Dodano | Data zamknięcia | Szczegóły / Kluczowe stwierdzenia z odpowiedzi dostawcy |
| Microsoft | Grudzień 16, 2025 | Firma Microsoft przyjęła raport 17 grudnia 2025 r. i zgłosiła sprawę w Centrum reagowania na zagrożenia firmy Microsoft (MSRC). | |
| Antropiczny | Grudzień 16, 2025 | Grudzień 16, 2025 | Zgodnie z polityką poniższe kwestie uznaje się za nieobjęte zakresem:
„Inżynieria społeczna (w tym próby phishingu)” i „Problemy z treścią w przypadku wzorcowych monitów i odpowiedzi”, które są wyraźnie wymienione jako wykraczające poza zakres tego programu. |
| dzień | Grudzień 14, 2025 | Grudzień 16, 2025 | „Niestety, uznano by to za wykraczające poza zakres polityki programowej BCNY:
Szybkie wstrzyknięcia, które prowadzą do dezinformacji, nieoczekiwanych zachowań, odmowy usługi lub odmowy prawidłowej obsługi asystenta, są wyraźnie poza zakresem. Szybkie wstrzyknięcie jest brane pod uwagę tylko wtedy, gdy powoduje udowodnioną i konkretną szkodę dla użytkownika poprzez automatyczne wykradanie poufnych danych użytkownika lub podejmowanie nieautoryzowanych działań jako użytkownik. |
| OpenAI | Grudzień 16, 2025 | Grudzień 17, 2025 | Dziękujemy za cierpliwość. Jednak wniosek w obecnej formie nie ma wystarczającego wpływu, aby kwalifikować się do triażu, ponieważ tego typu kwestie są wyraźnie wymienione jako wykraczające poza zakres tego programu. |
| Grudzień 16, 2025 | Stycznia 27, 2026 | Gemini początkowo zaakceptowało raport 17 grudnia 2025 roku i nadało mu priorytet P2 (wysoki). Jednak 27 stycznia 2026 roku firma złagodziła sytuację i zamknęła raport, stwierdzając:
„Nie udało nam się zidentyfikować scenariusza ataku, w którym Twój raport spowodowałby poważne szkody dla użytkownika. Prosimy o informację, jeśli coś pominęliśmy i podanie scenariusza ataku o dużym wpływie. Wynika to z faktu, że ten scenariusz jest… nadmiernie polegający na inżynierii społecznej". |
|
| Zakłopotanie | Grudzień 14, 2025 | Grudzień 17, 2025 | „Po dogłębnym zbadaniu sprawy ustaliliśmy, że ten raport nie stanowi luki w zabezpieczeniach w tradycyjnym rozumieniu tego słowa. Opisany przez Państwa scenariusz to znane ograniczenie dużych modeli językowych podczas przetwarzania zewnętrznych treści internetowych, a nie błąd lub luka w zabezpieczeniach naszego systemu.
Twój scenariusz ataku opiera się na socjotechnice – przekonaniu użytkownika do ręcznego wykonania poleceń w terminalu, które system sztucznej inteligencji zasugerował po przeanalizowaniu złośliwej strony internetowej. To tak, jakby użytkownik przeczytał złą radę na dowolnej stronie internetowej i postanowił się do niej zastosować. Na naszych serwerach nie występuje wykonywanie kodu, nie ma nieautoryzowanego dostępu do danych użytkownika ani obejścia mechanizmów uwierzytelniania i autoryzacji. |
| xAI | Grudzień 16, 2025 | Grudzień 17, 2025 | Dziękujemy za zgłoszenie! Niestety, ten konkretny problem, który Pan zgłosił, wyraźnie wykracza poza zakres opisany w Strona polityki:
|
Zalecenia
Dzięki wdrożeniu poniższych usprawnień systemy LLM mogą znacząco przyczynić się do zmniejszenia – a nawet wyeliminowania – rozbieżności między tym, co widzi użytkownik, a tym, co widzi asystent AI:
Analiza renderowania i różnicowania w trybie podwójnym
Wykonaj dwie niezależne analizy:
- Ekstrakcja DOM tylko z tekstu
- Pełnostronicowe renderowanie z włączonymi czcionkami
Wyodrębnij widoczny tekst z renderowanej strony i określ, czy różni się on znacząco od tekstu DOM.
Wykryj ukryte wzorce treści
Rozszerz parsery, aby skanowały:
- Dopasowanie kolorów pierwszego planu i tła
- Nieprzezroczystość bliska zeru
- Rozmiary czcionek poniżej 5 px
- Pozycjonowanie poza ekranem
- Wysoka gęstość ukrytej treści
Traktuj czcionki jako potencjalną powierzchnię zagrożenia
- Pobierz plik czcionki
- Sprawdź tabele mapowania Unicode/glifów
- Wykrywaj nieprawidłowe wzorce substytucji glifów
Ocena ryzyka na podstawie niedopasowania powierzchni
Przypisz podwyższony wynik ryzyka, gdy:
- Widoczny renderowany tekst nie przypomina tekstu DOM
- Tekst DOM wydaje się nieszkodliwy, podczas gdy renderowany tekst zawiera instrukcje wykonywalne
- Manipulacja CSS jest wykorzystywana do ukrywania dużych bloków treści
Kalibracja ufności
Jeżeli asystent nie może:
- Renderuj stronę
- Przeanalizuj niestandardowe czcionki
- Porównanie treści wizualnej i DOM
W takim przypadku należy unikać mocnych stwierdzeń, takich jak: „Strona jest bezpieczna”.
Wniosek
Sieć to nie tylko HTML. Znaczenie można przenieść do procesu renderowania, a każdy system analizujący wyłącznie tekst jest z założenia ślepy.



