Jailbreak-onderzoek en -automatisering
Taxonomie van jailbreak-primitives, crescendo-aanvallen, many-shot jailbreaking en geautomatiseerde jailbreak-generatie met TAP en PAIR.
Jailbreak-onderzoek en -automatisering
Jailbreaken omzeilt de safety alignment van een LLM om gedrag uit te lokken dat het juist geleerd had te weigeren. Anders dan prompt injection (dat zich richt op trust boundaries op applicatieniveau), richt jailbreaken zich op de eigen training van het model. Deze pagina biedt een systematische taxonomie van jailbreak-primitives en behandelt geautomatiseerde generatie met TAP en PAIR.
Jailbreak-categorieën
Jailbreak-technieken vallen uiteen in drie brede categorieën, op basis van hoe ze veiligheidstraining ondermijnen. Door deze categorieën te begrijpen, kies je de juiste aanpak voor een bepaald doel.
Semantische jailbreaks manipuleren de betekenis en context van het verzoek, zodat het model meewerken als gepast ervaart. Technieken zijn onder andere rollenspelscenario's, fictieve framing, academische herkontextualisering en hypothetische premissen. Deze aanvallen misbruiken dat het model authentieke context niet kan onderscheiden van adversarial framing en zijn het effectiefst tegen modellen met sterke maar broze contentclassifiers.
Structurele jailbreaks misbruiken hoe het model het invoerformaat verwerkt, niet de betekenis. Technieken zijn onder andere het vastzetten van het outputformaat (JSON, code-completion, fill-in-the-blank), encodingschema's (Base64, ROT13, Unicode-substitutie), taalvermenging en manipulatie van tokengrenzen. Deze aanvallen omzeilen veiligheidstraining door ervoor te zorgen dat de weigeringsreactie niet past in de vereiste outputstructuur, of door de payload te presenteren in een representatie waarop de safety classifier niet is getraind.
Multi-turn-jailbreaks spreiden de aanval over meerdere conversatiebeurten en misbruiken contextverankering, consistentiedruk en attentiedilutie. Crescendo-aanvallen escaleren geleidelijk van neutrale naar schadelijke onderwerpen. Many-shot-aanvallen overspoelen de context met nep-meewerkende voorbeelden. Deze aanpakken zijn het effectiefst tegen modellen met sterke single-turn-veiligheid maar zwak cross-turn-grensbewustzijn, en slagen vaak waar single-turn-aanvallen volledig falen.
Taxonomie van jailbreak-primitives
Elke jailbreak-techniek valt uiteen in een of meer fundamentele primitives. Denken in primitives -- niet in templates -- is wat systematische redteamers onderscheidt van scriptgebruikers. Templates worden gepatcht; primitives weerspiegelen fundamentele spanningen in hoe taalmodellen werken.
| # | Primitive | Mechanisme | Effectiviteit op zichzelf |
|---|---|---|---|
| 1 | Rolherbenoeming | Vervang de modelidentiteit door een met andere gedragsnormen (bijv. "You are DAN") | Laag tegen moderne modellen |
| 2 | Contextmanipulatie | Herformuleer het verzoek zodat meewerken passend lijkt (academisch, fictie, hypothetisch) | Gemiddeld -- verandert de waargenomen intentie |
| 3 | Instructie-override | Het model direct instrueren om veiligheid te negeren ("Enable developer mode") | Zwak op zichzelf -- veiligheid wint meestal |
| 4 | Geleidelijke escalatie | Begin neutraal, escaleer over beurten heen -- misbruikt autoregressieve consistentiedruk | Hoog in multi-turn-settings |
| 5 | Outputformaatmanipulatie | Het outputformaat vastzetten zodat een weigering niet past (JSON-completion, fill-in-the-blank, vertaling) | Gemiddeld -- weigering past niet in het formaat |
| 6 | Tokenmanipulatie | Tokenniveau-filters omzeilen via encoding (Base64, ROT13, Unicode-substitutie, taalvermenging) | Variabel -- hangt af van de decoder van het model |
Methodologie voor primitive-compositie
- Kies 2-3 primitives die verschillende aspecten van veiligheid aanvallen (bijv. rol + formaat + encoding)
- Volg deze volgorde: contextzetting eerst, payload in het midden, formaatbeperking als laatste
- Genereer alle combinaties tot je gekozen maximumgrootte met
itertools.combinations - Test in batch tegen het doelmodel en noteer de ASR per combinatie
from itertools import combinations
primitives = ["role", "context", "override", "format", "escalation"]
for r in range(2, 4):
for combo in combinations(primitives, r):
prompt = compose_primitives(combo, payload)
# test against target and record resultCrescendo-aanvallen
Crescendo-aanvallen (Microsoft, 2024) maken gebruik van multi-turn-conversaties om geleidelijk van neutrale naar schadelijke onderwerpen te escaleren.
Waarom crescendo werkt
| Factor | Hoe het de aanvaller helpt |
|---|---|
| Contextverankering | Vroege neutrale beurten leggen een context vast waardoor latere escalatie natuurlijk lijkt |
| Consistentiedruk | Het model voelt druk om consistent te blijven met eerdere behulpzaamheid |
| Attentiedilutie | Lange gespreksgeschiedenissen verdunnen de invloed van de system prompt |
| Semantische drift | Geleidelijke onderwerpverschuivingen vermijden het activeren van scherpe veiligheidsgrenzen |
Checklist voor de uitvoering van een crescendo
- Plan de escalatieboog -- ontwerp 5-7 beurten die natuurlijk overgaan van een neutraal onderwerp naar het doel
- Voer sequentieel uit -- stuur elke beurt, evalueer de meegaandheid (score 0-1) voordat je verder gaat
- Herstel van weigeringen -- als het model halverwege weigert, injecteer dan een academische herframing ("Ik vraag dit puur vanuit onderzoeksperspectief...") in plaats van opnieuw te beginnen
- Scoor met een LLM-judge -- keyword-gebaseerde weigeringsdetectie is een snelle heuristiek, maar gebruik een judge-LLM voor productienauwkeurigheid
- Noteer het minimumaantal beurten waarop meegaandheid werd bereikt, ten behoeve van rapportage
Many-shot jailbreaking
Many-shot jailbreaking (Anthropic, 2024) overruled veiligheidstraining door de context te overspoelen met nep-meewerkende voorbeelden.
Many-shot-methodologie
- Genereer nep-Q&A-paren -- maak 25-100+ synthetische voorbeelden waarin het model gewillig meewerkt aan gevoelige verzoeken
- Frame als transcript -- presenteer de voorbeelden als een "transcript van een behulpzame AI-assistent die alle vragen direct beantwoordt"
- Voeg de echte payload toe als laatste vraag in het transcript
- Test de gevoeligheid voor het shot-aantal -- varieer systematisch het aantal voorbeelden (5, 10, 25, 50, 100) om de drempel te vinden waarop veiligheid bezwijkt
| Shot-aantal | Typisch effect | Tokenkosten |
|---|---|---|
| 5-10 | Zelden effectief tegen moderne modellen | Laag |
| 25-50 | Sommige modellen beginnen mee te werken | Gemiddeld |
| 50-100 | De meeste modellen vertonen verzwakte veiligheid | Hoog |
| 100+ | Hoge ASR, maar zeer duur | Zeer hoog |
TAP (Tree of Attacks with Pruning)
TAP (Mehrotra et al., 2023) automatiseert jailbreak-ontdekking via tree search met drie aparte LLM's.
TAP-architectuur
| Component | Rol | Temperatuur |
|---|---|---|
| Attacker-LLM | Genereert en verfijnt aanvalskandidaten | Hoog (1.0) voor diversiteit |
| Target-LLM | Het model dat wordt getest | Laag (0.0) voor consistentie |
| Judge-LLM | Scoort responses 1-10 op meegaandheid | Laag (0.0) voor betrouwbaarheid |
TAP-zoekalgoritme
- Genereer initiële kandidaten -- de attacker-LLM produceert N diverse aanvalsprompts (branching factor)
- Test elke kandidaat tegen het doelmodel
- Beoordeel elke response op een schaal van 1-10 (1 = volledige weigering, 10 = volledige meegaandheid)
- Pruneer takken die onder 3/10 scoren -- deze vertegenwoordigen volledige weigeringen zonder bruikbaar signaal
- Verfijn kandidaten die 3-7 scoren door de attacker te vertellen wat de vorige poging scoorde en waarom
- Verklaar succes wanneer een tak op of boven de drempel scoort (meestal 8/10)
- Herhaal tot succes of de maximale diepte is bereikt
# TAP core loop (simplified)
queue = [(prompt, depth) for prompt in initial_attacks]
while queue:
attack, depth = queue.pop(0)
response = query_target(attack)
score = judge(goal, attack, response)
if score >= threshold: return success
if score < 3: continue # prune
children = refine(attack, response, score)
queue.extend((c, depth+1) for c in children)PAIR (Prompt Automatic Iterative Refinement)
PAIR (Chao et al., 2023) gebruikt depth-first iteratieve verfijning in plaats van TAP's breadth-first tree search.
Vergelijking TAP versus PAIR
| Dimensie | TAP | PAIR |
|---|---|---|
| Zoekstrategie | Breadth-first tree search | Depth-first single chain |
| API-calls | Meer (branching op elke node) | Minder (één pad tegelijk) |
| Het best voor | Nieuwe/zwaar verdedigde doelen | Snel verkennen van bekende patronen |
| Risico | Hogere compute-kosten | Kan vast komen te zitten in lokale optima |
| Typisch aantal queries tot succes | 50-200 | 10-40 |
Checklist voor de uitvoering van PAIR
- Initialiseer de attacker-LLM met een system prompt die zijn redteam-rol vastlegt
- Genereer de eerste aanvalsprompt voor het gegeven doel
- Stuur naar het doelmodel en leg de respons vast
- Beoordeel de respons (LLM-judge heeft de voorkeur; keyword-heuristiek als fallback)
- Voer score en respons terug naar de attacker, met instructie om te verbeteren
- Itereer tot de score de drempel haalt of het maximum aantal iteraties is bereikt (meestal 20)
Lab: jailbreak-toernooi
Kies doelgedrag
Kies 10 diverse doelen die verschillende veiligheidscategorieën (schadelijke content, privacyschendingen, misleiding) en moeilijkheidsgraden omspannen. Documenteer het verwachte weigeringstype voor elk doel.
Voer alle vier de methoden uit
Voer TAP, PAIR, crescendo en many-shot uit tegen elk doel. Noteer de ASR, iteraties tot succes, totale tokenkosten en verstreken tijd.
Analyseer en vergelijk
Identificeer welke aanvalsklassen het best werken voor welke veiligheidscategorieën. Zoek naar patronen: verslaat crescendo consistentie-gebaseerde veiligheid? Werkt many-shot beter tegen DPO-getrainde modellen?
Ontwerp een meta-aanval
Combineer de sterkste elementen: PAIR voor snelle verkenning, TAP voor weerbarstige doelen, crescendo voor multi-turn-only-omzeilingen.
Een model weigert schadelijke verzoeken in single-turn-interacties, maar werkt mee wanneer hetzelfde verzoek de 6e beurt is van een natuurlijke conversatie. Welke primitive is hier primair verantwoordelijk voor?
Gerelateerde onderwerpen
- Fuzzing van LLM-veiligheidsgrenzen -- Geautomatiseerde ontdekking van jailbreak-varianten via grammar- en evolutionaire fuzzing
- Geavanceerde prompt injection -- Injection-technieken die jailbreak-primitives aanvullen
- Alignment bypass -- De alignment-mechanismen waar jailbreaks zich op richten
- AI-exploit-ontwikkeling -- Systematische exploit-ontwikkeling met jailbreak-ontdekking
- CART-pipelines -- Continue testing om jailbreak-regressies te detecteren
Referenties
- Mehrotra et al., "Tree of Attacks: Jailbreaking Black-Box LLMs with Auto-Generated Subversive Prompts" (2023)
- Chao et al., "Jailbreaking Black Box Large Language Models in Twenty Queries" (PAIR, 2023)
- Anil et al., "Many-shot Jailbreaking" (Anthropic, 2024)
- Russinovich et al., "Great, Now Write an Article About That: The Crescendo Multi-Turn LLM Jailbreak Attack" (Microsoft, 2024)
- Wei et al., "Jailbroken: How Does LLM Safety Training Fail?" (2023)