
Token
Token w kontekście dużych modeli językowych (LLM) to sekwencja znaków, którą model przekształca w reprezentacje numeryczne dla efektywnego przetwarzania. Tokeny...

Token smuggling wykorzystuje lukę między tym, jak ludzie odczytują tekst, a tym, jak tokenizery LLM go przetwarzają. Atakujący używają wariantów Unicode, znaków o zerowej szerokości, homoglifów lub nietypowych kodowań, aby ukryć złośliwe instrukcje przed filtrami treści, pozostając jednocześnie czytelnymi dla tokenizera.
Token smuggling to klasa ataków, która celuje w lukę między warstwami przetwarzania tekstu w systemach AI. Filtry moderacji treści, walidacja danych wejściowych i kontrole bezpieczeństwa zazwyczaj działają na tekście czytelnym dla człowieka. Tokenizery LLM natomiast działają na niższym poziomie — konwertując znaki na numeryczne identyfikatory tokenów. Wykorzystując różnice między tymi warstwami, atakujący mogą tworzyć dane wejściowe, które przechodzą przez filtry na poziomie tekstu, ale dostarczają złośliwe instrukcje do LLM.
Zanim LLM przetworzy tekst, tokenizer konwertuje ciąg wejściowy na sekwencję całkowitych identyfikatorów tokenów. Te identyfikatory mapują się na słownictwo modelu — powszechnie kodowane przy użyciu algorytmów takich jak Byte Pair Encoding (BPE) lub WordPiece.
Kluczowe właściwości tokenizacji, które wykorzystują atakujący:
Unicode zawiera tysiące znaków, które wizualnie przypominają popularne znaki ASCII. Filtr szukający słowa “harmful” może nie rozpoznać “hármful” (z łączącym akcentem) lub “harⅿful” (ze znakiem ułamka Unicode).
Przykład: Słowo “ignore” może być zakodowane jako “іgnore” (używając cyrylickiego “і” zamiast łacińskiego “i”) — wyglądając identycznie dla większości ludzkich czytelników i niektórych filtrów, ale potencjalnie przetwarzane inaczej na poziomie tokenizera.
Znaki o zerowej szerokości (takie jak U+200B ZERO WIDTH SPACE lub U+200C ZERO WIDTH NON-JOINER) są niewidoczne w renderowanym tekście. Wstawienie ich między znakami w kluczowych słowach przerywa filtry dopasowywania ciągów bez wpływu na wygląd wizualny lub, w wielu przypadkach, na reprezentację tokenizowaną.
Przykład: “ignore” ze spacjami o zerowej szerokości między każdym znakiem wygląda jak “ignore” po wyrenderowaniu, ale przerywa proste dopasowywanie wzorców ciągów.
Konwersja tekstu na alternatywne kodowania przed przesłaniem:
Skuteczność zależy od tego, czy LLM został wytrenowany do dekodowania tych reprezentacji, co wiele modeli ogólnego przeznaczenia posiada.
Proste, ale czasami skuteczne warianty:
Niektóre tokenizery traktują specjalnie znaki ograniczników. Wprowadzając znaki, które tokenizer interpretuje jako granice segmentów, atakujący mogą manipulować tym, jak model segmentuje dane wejściowe na znaczące jednostki.
Obejście jailbreak: Kodowanie promptów jailbreak przy użyciu technik, które przechodzą przez warstwę filtra bezpieczeństwa, ale są dekodowane przez LLM, umożliwiając obejście zabezpieczeń.
Unikanie filtrów treści: Osadzanie mowy nienawiści, żądań nielegalnych treści lub instrukcji naruszających zasady w zakodowanej formie.
Zaciemnianie wstrzykiwania promptów: Używanie kodowania do ukrywania wstrzykniętych instrukcji przed prostymi filtrami dopasowywania wzorców, jednocześnie zapewniając, że LLM je prawidłowo przetwarza.
Fingerprinting filtrów: Systematyczne testowanie różnych wariantów kodowania w celu identyfikacji, które z nich filtry systemu docelowego wykrywają, a których nie — mapowanie pokrycia filtrów dla bardziej ukierunkowanych ataków.
Zastosuj normalizację Unicode (NFC, NFD, NFKC lub NFKD) do wszystkich danych wejściowych przed filtrowaniem. To konwertuje warianty Unicode na formy kanoniczne, eliminując wiele ataków homoglifów i łączących znaków.
Zaimplementuj jawne mapowanie homoglifów, aby normalizować wizualnie podobne znaki do ich odpowiedników ASCII przed filtrowaniem. Biblioteki do tego celu istnieją w większości języków programowania.
Zamiast (lub oprócz) filtrów opartych na ciągach znaków, użyj filtra opartego na LLM, który działa na reprezentacjach tokenów. Ponieważ te filtry przetwarzają tekst na tym samym poziomie co model docelowy, sztuczki kodowania są mniej skuteczne — filtr widzi tę samą reprezentację co model.
Ocena bezpieczeństwa powinna obejmować systematyczne testowanie filtrów treści pod kątem znanych wariantów kodowania. Jeśli filtr ma blokować “ignore previous instructions”, przetestuj, czy blokuje również homoglify Unicode, warianty o zerowej szerokości, kodowanie Base64 i inne formy zaciemniania.
Loguj czytelną dla człowieka renderowanie znormalizowanych danych wejściowych wraz z surowymi danymi wejściowymi. Rozbieżności między nimi mogą ujawnić ataki kodowania podczas przeglądu incydentów.
Token smuggling i ataki kodowania omijają filtry powierzchniowe. Testujemy te techniki w każdej ocenie bezpieczeństwa chatbota.

Token w kontekście dużych modeli językowych (LLM) to sekwencja znaków, którą model przekształca w reprezentacje numeryczne dla efektywnego przetwarzania. Tokeny...

Bezpieczeństwo LLM obejmuje praktyki, techniki i kontrole służące do ochrony wdrożeń dużych modeli językowych przed unikalną klasą zagrożeń specyficznych dla AI...

Streszczanie tekstu to kluczowy proces AI, który skraca obszerne dokumenty do zwięzłych podsumowań, zachowując najważniejsze informacje i sens. Wykorzystując du...
Zgoda na Pliki Cookie
Używamy plików cookie, aby poprawić jakość przeglądania i analizować nasz ruch. See our privacy policy.