Interne werking van LLM's voor exploitontwikkelaars
Transformer-architectuur, interne werking van tokenizers, logit-pipelines en trust boundaries vanuit een offensief beveiligingsperspectief.
Het misbruiken van LLM's vereist dezelfde diepgang van begrip die ontwikkelaars van binaire exploits meebrengen naar CPU-architecturen. Deze pagina behandelt de interne werking van transformers, met de focus op aanvalsoppervlakken, gaten in trust boundaries en het bouwen van primitieven.
Aanvalsoppervlakken van een transformer-laag
Elk transformer-blok bevat verschillende rekenfasen, en elke fase biedt andere kansen voor exploitatie en analyse.
Het attention-mechanisme routeert informatie tussen tokenposities via query-key-value-projecties. Vanuit exploitperspectief zijn attention heads individueel aanvalbare circuits: induction heads kunnen worden gekaapt om door de aanvaller geplante patronen te kopiëren, en positionele heads kunnen worden misbruikt via strategische plaatsing van payloads. Door te profileren welke heads in welke functie gespecialiseerd zijn, kun je input maken die specifiek routinggedrag stuurt.
Feed-forward-netwerken (FFN) fungeren als key-value-geheugens die tijdens de training geleerde feitelijke associaties opslaan. Elk FFN-neuron activeert voor specifieke inputpatronen en draagt bij aan de residual stream. Aanvallers kunnen "knowledge neurons" identificeren die verantwoordelijk zijn voor veiligheidsrelevante feiten, en die aanvallen met activation steering of fine-tuning-aanvallen om opgeslagen associaties te wijzigen zonder de algemene vaardigheden aan te tasten.
Layer-normalisatie (LayerNorm of RMSNorm) herschaalt activaties tussen lagen en bepaalt zo de magnitude van de residual stream. Vanuit exploitperspectief creëert normalisatie een flessenhals waarbij vectoren voor activation steering zo gekalibreerd moeten worden dat ze de herschaling overleven. Interventies die vóór de normalisatie worden toegepast, kunnen onvoorspelbaar gedempt of versterkt worden, waardoor injectiepunten ná de norm betrouwbaarder zijn voor activatiemanipulatie.
Attention als informatie-routing
Self-attention bepaalt welke tokens het model "onthoudt" bij het genereren van output. Vanuit het perspectief van een aanvaller is het een mechanisme voor informatie-routing dat je kunt kapen door input te maken die de focus van het model stuurt.
| Type head | Wat het doet | Exploitatie-invalshoek |
|---|---|---|
| Induction heads | Kopiëren [A][B]...[A] → [B]-patronen | Plant trigger-payloadparen vroeg in de context |
| Previous-token heads | Letten op het direct voorafgaande token | Beïnvloeding via manipulatie van het aangrenzende token |
| Positionele heads | Letten op vaste absolute/relatieve posities | Misbruik positieafhankelijke verwerkingsbias |
# Extraheer attention-gewichten om te zien welke tokens de generatie aansturen
outputs = model(**inputs, output_attentions=True)
last_layer_attn = outputs.attentions[-1].squeeze(0).mean(dim=0)
final_pos_attn = last_layer_attn[-1] # attention VANUIT de generatiepositieAanvalsoppervlakken van tokenizers
De tokenizer is de grens tussen voor mensen leesbare tekst en de interne representaties van het model. Begrip ervan is essentieel om payloads te maken die de tokenisatie overleven -- of die juist de artefacten ervan misbruiken.
BPE vs SentencePiece
BPE (GPT-familie) en SentencePiece (LLaMA-familie) verwerken tekst fundamenteel anders:
| Eigenschap | BPE (GPT) | SentencePiece (LLaMA) |
|---|---|---|
| Verwerking van witruimte | Voor-getokeniseerde woorden | Intern (spaties als ▁) |
| Segmentatie | Deterministische merge-regels | Probabilistisch (unigram-model) |
| Onbekende tekens | Byte-level fallback | UTF-8-byte-tokens |
| Scheiding van payloads | Op spaties gebaseerd werkt betrouwbaar | Op spaties gebaseerd gedraagt zich anders |
Belangrijke exploitatie-eigenschappen
- Niet-compositionaliteit -- het tokeniseren van
ABis niet noodzakelijktokenize(A) + tokenize(B) - Grensgevoeligheid -- een wijziging van één teken kan de tokengrenzen volledig verschuiven
- Tokenbotsingen -- verschillende strings kunnen identieke tokensequenties opleveren, wat filterbypass mogelijk maakt
# Vind zero-width-tekens die een woord over tokengrenzen heen opsplitsen
splitters = ["\u200b", "\u200c", "\u200d", "\ufeff", "\u00ad"]
for pos in range(1, len(word)):
for s in splitters:
modified = word[:pos] + s + word[pos:]
if len(tokenizer.encode(modified)) != len(tokenizer.encode(word)):
print(f"Split at {pos} with {repr(s)}")Logit-pipeline en punten waar veiligheid ingrijpt
Het model zet hidden states om in outputwaarschijnlijkheden via een meertraps pipeline. Veiligheidsmechanismen kunnen in elke fase ingrijpen, met verschillende bypass-eigenschappen:
hidden_state → lm_head (linear projection) → logits → softmax → probabilities
| Interventiepunt | Waar | Moeilijkheid om te omzeilen |
|---|---|---|
| Pre-logit (representatie) | Wijzigt hidden states vóór de projectie | Moeilijkst -- verandert de interne representatie |
| Post-logit (bias) | Voegt bias-termen toe om tokens te onderdrukken | Gemiddeld -- detecteerbaar via logit-probing |
| Post-softmax (sampling) | Filtert/herweegt waarschijnlijkheden | Gemiddeld -- afhankelijk van drempelwaarde |
| Post-generatie (output) | Scant de gegenereerde tekst achteraf | Makkelijkst -- content is al gegenereerd |
# Prob de ruwe logits om veiligheidsinterventies te detecteren
outputs = model(**inputs, output_hidden_states=True)
raw_logits = outputs.logits[0, -1, :]
top_k = torch.topk(raw_logits, k=20)
# Als de hoogste ruwe voorspellingen nooit in de output verschijnen, onderdrukt iets zeTrust boundaries van de systeemprompt
De systeemprompt neemt een bevoorrechte positie in de tokensequentie in, maar de autoriteit ervan wordt op geen enkele cryptografische of architectonische manier afgedwongen. Het is gewoon de eerste set tokens in het context-window.
Wanneer de instructieprioriteit afbrokkelt
- Attention-dilutie -- gebruikersinstructies zijn langer/gedetailleerder dan de systeeminstructies
- Format-mimicry -- gebruikersinvoer kopieert de opmaak van de systeemprompt (privilege-escalatie)
- Prioriteitsambiguïteit -- er bestaan meerdere conflicterende instructies op systeemniveau
- Indirecte injectie -- tool-output bevat tekst opgemaakt als instructies
Plaatsing van payloads in het context-window
Het context-window heeft een niet-uniform "attention-landschap" door RoPE-positiecoderingen en het "lost in the middle"-effect (Liu et al., 2023).
| Plaatsing | Invloed | Stealth | Geschikt voor |
|---|---|---|---|
| Begin (tokens 0..N) | Hoog -- concurreert met de systeemprompt | Laag | Kapen van autoriteit |
| Midden | Laag -- "lost in the middle"-effect | Hoog | Verborgen payloads in RAG-contexten |
| Einde (vlak voor generatie) | Hoogst -- recency-bias | Laag | Maximale invloed op de volgende tokens |
Methodologie: workflow voor interne analyse
Profileer de tokenizer van het doelwit
Identificeer de tokenizer-familie (BPE vs SentencePiece), test het grensgedrag met zero-width-tekens en zoek naar tokenbotsingen op veiligheidsrelevante woorden.
Breng het attention-landschap in kaart
Extraheer met een open-weight-model van dezelfde familie de attention-distributies over een context-window dat de promptstructuur van het doelwit nabootst. Identificeer zones met veel en weinig invloed.
Prob de logit-distributies
Vergelijk de ruwe logit-distributies voor onschadelijke en gevoelige prompts. Documenteer tokens die in de ruwe top-k verschijnen maar niet in de gegenereerde output -- die wijzen op safety-filtering na de logits.
Test de grenzen van de systeemprompt
Maak injecties met attention-dilutie, format-mimicry en conflicterende instructies. Meet het bypass-percentage kwantitatief over veel varianten.
Kies de plaatsing van de payload
Kies op basis van de attention-map een plaatsingsstrategie: begin voor autoriteit, midden voor stealth, einde voor invloed.
Je hebt een tokengrens-exploit ontwikkeld die een zero-width space gebruikt om 'password' over twee tokens te splitsen en zo een safety classifier op GPT-4o te omzeilen. Dezelfde techniek faalt tegen een LLaMA-gebaseerde deployment. Wat is de meest waarschijnlijke reden?
Gerelateerde onderwerpen
- Activation Analysis & Hidden State Exploitation -- Modelinterne werking lezen en manipuleren op activatieniveau
- Embedding Space Exploitation -- De vectorrepresentaties aanvallen die ten grondslag liggen aan LLM-verwerking
- Alignment Bypass -- De veiligheidstraining misbruiken die het gedrag van de transformer beperkt
- Advanced Prompt Injection -- Architectonische kennis toepassen om effectieve injecties te maken
Referenties
- Attention Is All You Need (Vaswani et al., 2017) — Het oorspronkelijke paper over de transformer-architectuur
- A Mathematical Framework for Transformer Circuits (Elhage et al., 2021) — Mechanistische interpreteerbaarheid van attention heads
- Lost in the Middle: How Language Models Use Long Contexts (Liu et al., 2023) — Positionele attention-bias die misbruikbaar is voor de plaatsing van payloads
- OWASP Top 10 for LLM Applications — De industriestandaard-taxonomie van LLM-kwetsbaarheden