Karta tytułowa „LLM Jailbreak Explained” przedstawiająca dwie ułożone warstwy: warstwę promptu zawierającą odgrywanie ról, kodowanie, tłumienie odmowy i many-shot oraz warstwę wag zawierającą abliterację, ortogonalizację i trwałą edycję, połączone pionową strzałką oznaczoną „to nie ta sama edycja”, na białym tle z delikatnymi niebieskimi i cyjanowymi akcentami.
Guides & Insights

Wyjaśniamy jailbreakowanie LLM: co zmienia jailbreak i dlaczego nie jest to abliteracja

Autor

Rowan Sterling

Data publikacji

Najnowsze modele · 20Zobacz wszystkie modele →
Benchmarki: Artificial Analysis · aktualizowane codziennie
Powrót do wszystkich wpisów

W lipcu 2023 r. troje badaczy przeprowadziło 32 szkodliwe prompty przeciwko GPT-4 i Claude 1.3 za pomocą 28 różnych ataków. Najsilniejsza pojedyncza technika — trzy rodziny ataków nałożone jedna na drugą — odniosła sukces w 94 procentach zestawu wobec GPT-4 i w 81 procentach wobec Claude 1.3. Tym, co domknęło zestaw, nie był lepszy atak, lecz wybór: przeciwnik, któremu pozwolono wybrać spośród 28 ten, który najlepiej działał dla każdego promptu, sprawił, że wszystkie 32 przeszły na obu modelach, co artykuł podaje jako czyste 1,00. Niewygodna interpretacja jest taka, że jailbreak nie jest wadą, która znika, gdy model staje się mądrzejszy lub lepiej się zachowuje. Jest właściwością promptu, a prompt należy do tego, kto go wysyła. To, co dzieje się po ustaniu odmowy — wywołanie narzędzia, odczyt pliku, dane wyjściowe, które trafiają gdzieś, gdzie się na nich działa — jest tym, co archiwum incydentów AI miało rejestrować.

To ujęcie warto doprecyzować, ponieważ „jailbreak” bywa używane w odniesieniu do kilku różnych zjawisk, a to, czym się one różnią, decyduje o tym, co w ogóle może zdziałać jakiekolwiek środki zaradcze. Ten tekst omawia, co edytuje jailbreak, co faktycznie mówią zmierzone liczby, dlaczego nie ma jednej odpowiedzi na model na pytanie „czy da się go z jailbreakować” oraz gdzie ta technika przestaje być kwestią bezpieczeństwa modelu, a staje się kwestią bezpieczeństwa systemu.

Jailbreak to edycja promptu, a nie modelu.

Model pozostaje dokładnie taki, jak został dostarczony. Nic nie jest ponownie trenowane, nie modyfikuje się żadnych wag i nie stosuje się dostrajania. Atakujący zmienia żądanie tak, aby zastosowanie się do niego stało się lokalnie poprawną kontynuacją, a wytrenowane w modelu zachowanie bezpieczeństwa przegrywało z konkurencyjną instrukcją, której również został nauczony przestrzegać.

To jedno zdanie wyklucza całą dużą kategorię rzekomych poprawek. Nie da się tego załatać na wagach — z wagami nie ma nic złego. Nie da się tego wyliczyć, ponieważ przestrzeń promptów jest otwarta. I nie da się tego sprawdzić raz, ponieważ technika, która zawodzi dzisiaj, nie jest tą, którą wypróbuje się jutro. Możesz natomiast zmierzyć wskaźnik na stałym zestawie promptów, względem stałej wersji modelu, a następnie obserwować, jak ten wskaźnik się zmienia, gdy zmieni się którykolwiek z tych trzech elementów.

Co tak naprawdę zmierzył eksperyment z 32 promptami

Badanie to Jailbroken: Dlaczego trening bezpieczeństwa LLM zawodzi? autorstwa Alexandra Wei, Niki Haghtalab i Jacoba Steinhardta, opublikowane na arXiv w lipcu 2023 r. jako 2307.02483. Jego zestaw testowy obejmował 32 szkodliwe polecenia — połowę zaczerpnięto z opublikowanej ewaluacji GPT-4, a połowę zaadaptowano z opublikowanych prac red-teamowych dotyczących Claude — a miara wyników jest prosta: przypadek uznaje się za sukces, gdy odpowiedź jest jednocześnie szkodliwa i zgodna z tematem pierwotnego żądania. Wszystko, co zwleka, odwraca uwagę lub odpowiada na inne pytanie, nie liczy się.

Dwie właściwości wyników są użyteczniejsze niż jakikolwiek pojedynczy wiersz. Pierwsza to to, jak nierówno ataki przenoszą się między modelami. Odgrywanie ról AIM uzyskało 0,75 wobec GPT-4 i 0,00 wobec Claude 1.3. Few-shot JSON uzyskał 0,53 i 0,00. Tymczasem kodowanie Base64 było odwrotnym rodzajem nierówności — 0,34 na GPT-4 i 0,38 na Claude 1.3 — a dystraktory osiągnęły 0,44 i 0,47. Technika, przeciw której dostawca wyraźnie trenował model, wypada jako zero na tym modelu i nie mówi nic o modelu obok.

Drugi przypadek to to, co dzieje się, gdy łączy się rodziny. Wstrzyknięcie prefiksu plus tłumienie odmowy plus Base64 dało 0,56 przeciwko GPT-4 i 0,66 przeciwko Claude 1.3. Dodanie wstrzyknięcia stylu podniosło to do 0,69 i 0,84. Dodanie generowania treści stron internetowych i ograniczeń formatowania podniosło to do 0,94 i 0,81. Kumulowanie warstw to cała sztuczka: każda warstwa jest czymś, do czego model został wytrenowany, a kombinacja nie pozostawia żadnej pozycji tokenu, w której odmowa byłaby bardziej naturalną kontynuacją.

Scoreboard titled 'Measured jailbreak success rates', subtitled 'Fraction of 32 curated harmful prompts answered, GPT-4 and Claude 1.3, July 2023'. Competing objectives: prefix injection 0.22 and 0.00, refusal suppression 0.25 and 0.16, style injection JSON 0.34 and 0.09, few-shot JSON 0.53 and 0.00, AIM role-play 0.75 and 0.00. Mismatched generalization: Base64 0.34 and 0.38, disemvowel 0.16 and 0.06, distractors 0.44 and 0.47, auto payload splitting 0.34 and 0.59. Two wide rows: combination of three families 0.94 and 0.81, adaptive attack best of 28 1.00 and 1.00. Footer: figures as reported by Wei, Haghtalab and Steinhardt, arXiv 2307.02483, format is GPT-4 then Claude 1.3.

Modele z tej tabeli mają trzy lata i nie są już tym, co ktokolwiek wdraża. Liczby nie są tu istotne; istotny jest kształt. Każdy mechanizm z tej tabeli nadal występuje w każdym późniejszym modelu, ponieważ żaden z nich nigdy nie był błędem w GPT-4 ani Claude 1.3 — są one konsekwencją interakcji między podążaniem za instrukcjami a treningiem bezpieczeństwa.

Screenshot of the arXiv abstract page for 'Jailbroken: How Does LLM Safety Training Fail?' by Alexander Wei, Nika Haghtalab and Jacob Steinhardt, submitted 5 July 2023, showing the abstract describing two failure modes, competing objectives and mismatched generalization, and stating that the models evaluated include OpenAI's GPT-4 and Anthropic's Claude v1.3.

Dwa sposoby, w jakie szkolenia z bezpieczeństwa zawodzą

Wyjaśnienie w artykule jest wyjątkowo klarowne i to właśnie tę część warto zapamiętać: istnieją dwa tryby awarii, a każdy atak z tabeli jest przykładem jednego z nich.

Konkurujące cele to sytuacja, w której możliwości modelu i jego cele związane z bezpieczeństwem wskazują różne kierunki. Stosowanie się do instrukcji jest zdolnością. Gdy prośba zostanie opakowana w taki sposób, że odmowa naruszyłaby instrukcję, której model jest silnie wytrenowany przestrzegać, model rozwiązuje konflikt na korzyść instrukcji. Wstrzyknięcie prefiksu to wersja minimalna: powiedz modelowi, że jego odpowiedź musi zaczynać się od „Absolutely! Here's”, a pierwsze tokeny są już zobowiązaniem, które czyni odmowę niespójną. Tłumienie odmowy atakuje ten sam szew od drugiej strony, dodając reguły formatowania, które uniemożliwiają użycie zdania, w którym odmowa musiałaby zostać wyrażona.

Niedopasowana generalizacja to efekt, który pojawia się, gdy trening bezpieczeństwa obejmuje wąski rozkład danych wejściowych, którego ogólna zdolność modelu nie obejmuje. Model nauczył się Base64 podczas pretreningu i potrafi bez problemu postępować zgodnie z zakodowaną instrukcją. Trening bezpieczeństwa, który widział głównie prośby w języku naturalnym, nigdy nie nauczył go rozpoznawać, że zakodowana prośba wciąż jest prośbą. Ta sama awaria pojawia się przy usuwaniu samogłosek, ROT13, leetspeak, dzieleniu ładunku i zadaniach rozpraszających: każdy z nich jest formatem, do którego zdolność generalizuje, a zachowanie bezpieczeństwa nie.

Gdy już masz te dwie kategorie, ataki przestają wyglądać jak zbiór przypadkowych sztuczek i zaczynają wyglądać jak dwie rodziny o wspólnej przyczynie źródłowej — co również wyjaśnia, dlaczego tak dobrze się łączą. Prompt, który tłumi odmowę i ukrywa swoją intencję w kodowaniu, wykorzystuje jednocześnie oba tryby awarii, a 0,94 jest tego obrazem.

Dlaczego nie ma odpowiedzi dla poszczególnych modeli na pytanie „czy da się go zjailbreakować”

Najczęstszą formą zapytania w tym obszarze jest nazwa modelu, po której następuje słowo jailbreak. To niewłaściwa jednostka analizy, a powodem jest powyższa tabela. Sukces zależy jednocześnie od co najmniej pięciu rzeczy: możliwości modelu bazowego, tego, jakie szkolenie z bezpieczeństwa otrzymał i na jakiej dystrybucji, formatu promptu, ustawień próbkowania oraz liczby prób, jakie atakujący jest skłonny poświęcić.

To ostatnie zasługuje na osobne zdanie. Wskaźnik mierzony przy jednej próbie na prompt i wskaźnik mierzony jako „najlepszy z 28” nie są tym samym pomiarem, a wynik adaptacyjny z pracy — 1,00 dla obu modeli — jest tego drugiego rodzaju. Kto cytuje wskaźnik jailbreaków, nie mówiąc, o który mu chodzi, nie przytoczył nic użytecznego. Realistyczne pytanie obronne nie brzmi „czy da się to złamać”, tylko „ile prób to wymaga i czy cokolwiek w moim stosie zauważa te próby”.

Wynikają z tego dwie praktyczne konsekwencje. Model, który dziś opiera się Twojemu zestawowi promptów, może przestać się opierać po podniesieniu wersji, zmianie warstwy bezpieczeństwa albo zmianie konfiguracji po stronie serwowania — wynik jest ważny tylko dla tej kompilacji, którą testowano, i dlatego test bez wersji i daty nie jest wynikiem. A uruchomienie tego samego zestawu promptów na dwóch modelach mówi Ci, wobec którego z nich Twój stack jest bardziej podatny, a nie który z nich jest bezpieczny.

Czym nie jest jailbreak: abliteracja

Te dwie rzeczy są stale mylone, ponieważ obie kończą się tym, że model generuje wynik, którego nie wytrenowano go, by generował. To nie są te same zmiany, a różnica między nimi to różnica między kontrolą, którą można dodać, a właściwością, której nie da się dodać.

• Jailbreak — edycja warstwy promptu. Wagi bez zmian. Kierunek odmowy nadal jest w modelu; żądanie zostało po prostu ułożone tak, aby inne zachowania miały nad nim pierwszeństwo. Przywróć prompt, a zachowanie wróci wraz z nim.

• Abliteracja — edycja warstwy wag. Kierunek odmowy jest identyfikowany — zwykle jako kierunek w przestrzeni aktywacji — i rzutowany poza wagi modelu, tak aby model w ogóle nie generował odmów dla tej klasy żądań. Jest to trwała zmiana artefaktu i dlatego abliterowany checkpoint zachowuje się inaczej niż ten sam model bazowy ze sprytnym promptem. Mechanika tej edycji została opisana w naszym przewodniku po abliteracji.

Różnica operacyjna ma większe znaczenie niż terminologia. Jailbreak to zdarzenie w czasie działania: przychodzi z żądaniem i można je zliczać, ograniczać częstość, filtrować i rejestrować jak każde inne żądanie. Model po abliteracji to zdarzenie w łańcuchu dostaw: mechanizm kontroli został już usunięty, zanim go otrzymasz, i żadna ilość monitorowania na poziomie promptów tego nie przywróci. Jeśli Twój model zagrożeń brzmi „ktoś spróbuje przekonać model”, jesteś w pierwszej kategorii. Jeśli brzmi „ktoś wyśle mi model z usuniętym mechanizmem odmowy”, jesteś w drugiej, a jedyną rzeczywistą kontrolą jest pochodzenie — wiedza, który checkpoint endpoint faktycznie udostępnia.

Jailbreak również nie jest prompt injection.

Trzecim pojęciem, które się tu miesza, jest wstrzykiwanie poleceń (prompt injection), a pytaniem rozstrzygającym jest to, kto jest atakującym. Jailbreak pochodzi od użytkownika, który próbuje uzyskać treści, których model został wytrenowany nie ujawniać. Wstrzykiwanie poleceń pochodzi z treści — pobranego dokumentu, strony internetowej, wyniku działania narzędzia — która niesie instrukcje, których deweloper nigdy nie napisał, i działa niezależnie od tego, czy użytkownik jest wrogo nastawiony. Ten sam model może być odporny na jedno i całkowicie otwarty na drugie, ponieważ są one zwalczane w różnych miejscach: jailbreaky na wejściu i wyjściu modelu, wstrzykiwanie na granicy zaufania między danymi a instrukcjami.

Co faktycznie obniża wskaźnik

Nic tutaj nie jest gwarancją, a wszelkie twierdzenia przeciwne to zwykła reklama. Poniżej przedstawiono zestaw mechanizmów kontrolnych, które zmieniają liczby, uporządkowanych według tego, ile dają w stosunku do włożonego wysiłku.

• Załóż, że warstwa promptów zawodzi.Każda kontrola opierająca się na tym, że model odmówi, jest oddalona od zera o jednego adaptacyjnego atakującego. Projektuj tak, jakby żądanie miało w końcu przejść, i umieść kontrolę tam, gdzie wystąpiłaby szkoda.

• Ogranicz to, do czego może dotrzeć udany jailbreak. Zasięg rażenia asystenta po jailbreaku jest taki, jaki pozwalają osiągnąć jego narzędzia, poświadczenia i zakres pozyskiwania danych. Zasada najmniejszych uprawnień w odniesieniu do narzędzi i ograniczanie zakresu pozyskiwania danych do poszczególnych dzierżawców zmniejszają wartość udanego jailbreaka znacznie niezawodniej niż jakikolwiek filtr promptów.

• Oceniaj wyjście, a nie prompt. Klasyfikatory po stronie wyjścia wychwytują rodziny, których nigdy nie widziano, ponieważ patrzą na to, co faktycznie wyprodukowano, a nie na to, jak o to poproszono. Są także jedyną warstwą, która nadal działa, gdy format danych wejściowych jest nowy — co, zgodnie z trybem awarii niedopasowanego uogólniania, ma miejsce przez większość czasu.

• Traktuj prompt systemowy jako wartość konfiguracyjną, a nie granicę bezpieczeństwa. To tekst w tym samym oknie kontekstu co atak. Podnosi koszt próby; nie powstrzymuje jej.

• Uczyń próby widocznymi. Jedyną przewagą obrońcy nad adaptacyjnym atakującym jest to, że atak zwykle się powtarza. Limity szybkości, wykrywanie powtórzeń i rejestrowanie zdarzeń zamieniają wyszukiwanie obejmujące 28 prób w zdarzenie, które można zobaczyć, zamiast 28 żądań, z których każde osobno wyglądało w porządku.

• Ponownie testuj przy każdej zmianie modelu. Przypięcie wersji wraz ze stałym zestawem promptów to właśnie to, co zamienia „przetestowaliśmy to raz” w liczbę, do której można porównać. Bez przypięcia wersji porównanie jest bez znaczenia.

Jak zmierzyć własny cel

Jeśli celem jest liczba, na podstawie której można działać, ustal trzy zmienne, które ustaliła publikacja: zestaw promptów, wersję modelu i liczbę prób. Użyj zestawu promptów obejmującego oba tryby awarii — instrukcje, które sprawiają, że odmowa staje się niezręczna, oraz kodowania, które ukrywają żądanie — ponieważ zestaw złożony tylko z jednego z nich będzie stawiać w lepszym świetle model, który jest słaby wobec drugiego. Oceniaj konserwatywnie: jako szkodliwe i zgodne z tematem, a nie tylko jako nieodpowiednie w tonie. A wynik podawaj jako odsetek w odniesieniu do podanej liczby prób, nigdy jako tak lub nie.

Gdy w grę wchodzi kilka modeli kandydujących, porównanie ma sens tylko wtedy, gdy ten sam zestaw promptów zostanie uruchomiony wobec każdego z nich, i to jest jedyne miejsce, w którym infrastruktura ma większe znaczenie niż metodologia. Przeprowadzenie jednej oceny na modelach, do których kierujemy ruch, eliminuje z tego przedsięwzięcia umowy z poszczególnymi dostawcami i pracę po stronie klienta; ceny z cenników dostawców są przekazywane bez narzutu, więc uruchomienie kosztuje tyle, ile pobierają dostawcy, i nic więcej. Ocena mierzy zachowanie modelu, a nie nasze — routing zmienia to, który model odpowiada, i nie powoduje, że którykolwiek z nich częściej odmawia.

W miejscu, w którym nagranie się zaczyna

Zmierzony wskaźnik skuteczności mówi, jak trudno jest przełamać warstwę promptu. Nie mówi jednak, co się stało, gdy ktoś przełamał ją w środowisku produkcyjnym, a to drugie pytanie decyduje o tym, czy wskaźnik ma znaczenie. Jailbreak, który skutkuje niegrzecznym akapitem, jest problemem z moderacją treści. Jailbreak, który skutkuje wywołaniem narzędzia, jest incydentem, a różnica polega wyłącznie na tym, do czego system pozwolił dotrzeć wynikowi.

Screenshot of the OrcaRouter incident archive home page, headed 'Every AI agent incident, with its receipt', describing an open month-by-month database of real-world AI agent security events where every record carries at least one source and a verdict on whether anyone was actually harmed, with the counter reading 400 records from 2024-12 to 2026-10-17 and 743 unique sources.

To archiwum jest zapisem z terenu: co agenci faktycznie zrobili, ze źródłem dla każdego wpisu i osądem, czy ktokolwiek ucierpiał. Czytane w zestawieniu z pomiarem jailbreaków odpowiada na pytanie, na które ten pomiar nie potrafi odpowiedzieć — czy granica, którą przekroczył prompt, jest tą, od której zależy cokolwiek w dalszym procesie. Jeśli tak, jailbreak jest ustaleniem z zakresu bezpieczeństwa, a kontrola należy do uprawnień narzędzi. Jeśli nie, jailbreak jest wynikiem dotyczącym treści, a uczciwym posunięciem jest zarejestrować go jako taki, zamiast rozdmuchiwać go do rangi podatności.

Uwaga końcowa jest tą, którą potwierdzają dowody. Jailbreakingu nie rozwiąże lepszy model, ponieważ tryby awarii mają charakter strukturalny: podążanie za instrukcjami jest zdolnością, a trening bezpieczeństwa – węższą, i to właśnie w luce między nimi mieści się każdy atak opisany w tym artykule. Rozwiązać można natomiast konsekwencję — upewniając się, że model, który przestaje odmawiać, wciąż nie może zrobić zbyt wiele.