Tankeledere
En Prompt Injection Angreb, Man Ikke Kan Forhindre: Ønsketænkning eller Virkelig Bekymring?

I denne artikel ønsker jeg at inddrage læseren i en tankeeksperiment. Jeg vil påstå, at i ikke så fjern fremtid vil en bestemt type prompt injection angreb være effektivt umulig at forhindre. Mit argument vil være mere spekulativt end konkretp, så jeg prøver ikke at overbevise dig om noget. I stedet inviterer jeg dig til at udforske disse tanker. Før jeg begynder, som enhver overbevisende forfatter ville gøre, ønsker jeg at diskutere skak og skakmotorer.
Overmenneskelige Skakmotorer og en Påstand om Menneskelig Erfaring
En af de flotte aspekter af skak, der mangler i andre discipliner, er evnen til objektivt at måle en spillers kvalitet eller styrke. ELO-ratingsystemet, der bruges til dette formål, har sine fejl, men det giver en meget god omtrentlig vurdering, der holder over tid. En rating på 2700 eller derover er almindeligt anerkendt som verdensklasse (top 30 i verden). Verdens bedste spiller er lige under 2850. Ingen menneske har nogensinde opnået en rating på 2900.
I midten af 90’erne så vi den første AI-motor (Deep Blue), der nåede et verdensklasse niveau. Den praktiske konsekvens af denne milepæl var den bredt anvendte brug af motorer af spillere på alle niveauer til træning og analyse. Faktisk blev motorbrug essentiel for verdens bedste spillere. Men for flere generationer af disse verdensklasse-motorer var gennemgang af deres anbefalede træk (dvs. output) afgørende. Der blev endda oprettet et særligt format kaldet “avanceret skak” i hvilket mennesker konkurrerede med en motor ved deres side, og menneske + maskine-kombinationen blev betragtet som overlegen i forhold til maskinen alene.
Det tog omkring 20 år og nogen kritisk fremgang i Deep Learning og Reinforcement Learning, før skakmotorerne nåede overmenneskeligt niveau (omkring 3200 ELO). Men så snart denne sfære blev brudt omkring 2017, skete der noget meget overraskende. Vel, faktisk to ting skete. Den første ting var helt forventet; motorerne blev den de facto-kilde til “sandheden” i 99% af alle stillinger. I praksis betød det, at vi indtrådte “æraen for blind tillid” til motoren. Disse dage er det næsten umuligt for et menneske at foreslå et betydeligt bedre træk end motoren. Så underholdende “avanceret skak” var, er det nu en meningsløs øvelse; mennesker ville bidrage næsten intet til spillet. Men den anden ting var chokerende for de fleste skakspillere. Disse overmenneskelige neurale (dvs. dybe neurale netværk) motorer ville nogen gange spille i en stil, der bedst kan beskrives som “romantisk”. Med andre ord ville de foretage træk, hvis værdi kun kunne værdsættes mange, mange træk senere, langt ud over hvad nogen menneske eller verdensklasse-motorer kunne beregne. Det føltes meget, som om motorerne havde udviklet en “følelse” eller en “intuition” for visse stillinger. Bortset fra, at denne intuition ikke er noget, et menneske kunne nogensinde fatte eller efterligne.
Udtrykt anderledes kan en overmenneskelig neural motor foretage træk, der er uden for den kognitive horisont for et menneske. Dette er det kritiske punkt her; problemet er ikke et spørgsmål om forklarbarhed. Snarere kan et menneske simpelthen ikke forstå, hvorfor en motor anbefaler et træk uden at spille stillingen ud og observere udfaldet mange træk senere, dvs. rulle hele sekvensen af mulige spiludfald ud. Som følge heraf har vi en uovervindelig kapacitetsforskel. Det er objektivt optimalt at acceptere motoroutput uden gennemgang. Jeg kan sammenfatte min påstand som følger:
Skak er en eksistensbevis for, at overmenneskelig AI ville operere effektivt autonomt i visse domæner. At aktivere AI-systemet til at træffe beslutninger uden menneskelig gennemgang ville være den optimale måde at implementere sådant et system på.
Da min påstand måske kan synes åbenbar eller ubemærkelsesværdig, ønsker jeg at fremhæve et par nuancer. Antag, at vi har et AI-system, der viser overmenneskelig niveau på en kompleks, kritisk opgave med konkrete, uafvendelige konsekvenser. Der er to implikationer af min påstand:
- Systemet ville blive implementeret til at træffe beslutninger for opgaven uden menneskelig gennemgang, på trods af den indbyggede risiko
- Indsigt, der er erhvervet fra overvågning af sådant et system, ville ikke forhindre en skadelig beslutning; skaden ville allerede være sket
Systemoutput-gennemgang og -overvågning er præcis de sidste to forsvarslag mod prompt injection. Derfor kan vores hypotetiske prompt injection angreb blot omgå disse lag ved at målrette det pågældende system.
Dette er et meget realistisk scenarie i mit sind. Et overmenneskeligt AI-system i et bestemt domæne er ikke AGI, og de fleste eksperter mener, at sådanne systemer er lige om hjørnet. Vi har heller ikke behøvet at antage, at beslutningerne er tidskritiske, kun at opgaven er kompleks nok til at gøre menneskelig gennemgang uoverkommelig.
Selvfølgelig har vi kun omgået to forsvarslag indtil nu, og heldigvis for os er der blevet udviklet flere andre. For at imødegå resten, lad os dykke ned i de kerneelementer, der gør prompt injection svært at forsvare imod.
Hvad er Prompt Injection?
Prompt injection er en manipulation af et Large Language Model (LLM) gennem tilrettelagte input, der får LLM til uvilkårligt at udføre angriberens intentioner. Det kan betragtes som social engineering for AI. Afgørende er det ikke en konventionel software-fejl. En prompt injection angreb udnytter en inbygget LLM-sårbarhed. Da LLM’er behandler både system- og brugerprompter som tekstsekvenser, kan de ikke intrinsisk skelne mellem legitime og skadelige instruktioner. Sårbarheden er derfor effektivt by-design, snarere end by-accident.
Prompt Injection Teknikker
Prompt injection er generelt anerkendt som #1 risiko for LLM-applikationer. Der er flere årsager til, at dette er tilfældet. Den mest åbenlyse faktor er varieteten af injektionsteknikker, der er blevet udviklet. Omtrent grupperet i fire kategorier, er de mest kendte teknikker:
- Syntaksbaseret: brug af specialtegn, emojis eller alternativ sprog
- Indirekte: brug af eksterne kilder (hent fra side), kodning (base 64) eller multimodal reference (tekst i billede)
- “Lad os forestille os”: introduktion af en manipulerende stil ved f.eks. rollespil, hypotetisk, følelsesappel, etisk ramme og formatændring
- Brutalt: eksplicit forsøg på at “tvinge” modelinstruktioner ved brute force, forstærkning eller negativ prompt
Varieteten alene udgør en udfordring for applikationsudviklere, men disse angreb har også fortsat med at udvikle sig hurtigt. Den venstre side af diagrammet nedenfor påstås at beskrive standen til tidligt 2023, mens den højre side afspejler naturen af angreb i dag.

LLM-applikationsudviklere må også tage den standard brugervenlighed vs. sikkerhedstradeoff i betragting. De kunne helt sikkert introducere hvert forsvarslag og designmønster, men til hvilken pris? Forsvarslag tilføjer betydelig latency og introducerer Falske Positiver (FP) – forkert flagning af sikre prompter som skadelige – begge faktorer har en negativ indvirkning på brugeroplevelsen. Som følge heraf er en vis grad af kompromis uundgåelig i praksis, og der er ingen “silver bullet”-løsning.
Men i denne artikel er jeg ikke rigtig interesseret i dette evindelige kat- og musespil. Snarere er jeg ved at undersøge, om et angreb kan være umuligt at forhindre i princippet. Fra udviklerens/forforskerens perspektiv er der kun én vigtig indsigt:
Adskillelse af instruktioner fra data i prompten er fundamental for at imødegå prompt injection-risiko
Vi kan antage, at kompromiser ikke er en faktor, og enhver forsvarslag eller teknik kan bruges. Under denne (stærke) antagelse er det muligt at opfinde en situation, hvor instruktion-data-adskillelse i en prompt er effektivt umulig?
DNA-Analogien
Så snart problemet var formuleret i termer af instruktion-data-adskillelse, var min første tanke at bruge biologi som analogi.
Overvej en celle og et stykke DNA (kendt som et gen). Genet giver instruktioner til at bygge et protein gennem transkription og translation. Det kodificerer også informationen (data), der påvirker strukturen og funktionen af proteinet. Som sådan giver genet samtidig instruktioner til, hvad der skal bygges, og hvordan det skal bygges, eller sådan mente jeg. Men dette er blot forkert, da et gen ikke beslutter, hvordan det skal fortolke sig selv. Der er ingen ekvivalent til instruktionsfølgen i biologi på gen-niveau. “Hvordan” er fuldstændigt externaliseret til den cellulære maskine.
Derfor, selv om jeg ikke kan ryste følelsen af, at fremtidige generationer af LLM’er – eller mere præcist, de systemer, de udvikler sig til – ville ligne biologiske maskiner i langt højere grad, fungerer den foreslåede analogi ikke. Vi kan ikke erstatte en celle med en LLM og et gen med en prompt og derefter udføre en injektion i genet, der ville føre til, at et “skadet” protein blev bygget. Det synes mere produktivt at holde fast ved naturligt sprog og opgaver, der kræver semantisk fortolkning.
At fjerne forsvarslagene
Det burde ikke komme som en overraskelse, at flerlagede forsvarsstrategier betragtes som mere effektive til at stoppe prompt injection angreb. Billedet nedenfor viser de mest almindelige forsvarslag i rækkefølge, og de tilhørende teknikker, der bruges i hvert lag.

Vi har allerede diskuteret de sidste to lag (output, overvågning) ovenfor, så lad os fokusere på de første fire.
Under betragtning af input-laget er det rimeligt at antage, at sanering eller validering af prompten ville være ret succesfuld i opdagelse af indirekte angreb. Men hvis injektionen leveres direkte, og som foreslået ovenfor, ved at stole på semantisk fortolkning, kan sanering være irrelevant (intet at sanere), og validering er umulig som standard, da beregningen må være fuldført for at identificere problemet.
Der er væsentligt ingen grænser for de sikkerhedsforanstaltninger, du kunne opbygge i detektionslaget. Faktisk kunne du endda bruge en dedikeret LLM til injektionsdetektion. Men igen vil det være svært for en klassifikator eller en afvigelsesdetektor at flagge en prompt som mistænkelig, når giften er listigt gemt inden for semantikken.
Model-laget kan være ret effektivt, når omfanget af opgaver er smalt, og finjustering er gennemførlig. En lignende argumentation kunne gøres for system-laget, når brugen af værktøjer er forudsigelig. Men intuitivt ville ingen af disse løfte en alarm, hvis injektionen kaster afvigerne.
Hus af kort
Min intention, da jeg startede med at skrive denne artikel, var at beskrive et “umuligt at forhindre” prompt injection angreb i brede træk. Måske endte jeg med at følge en “ikke-konstruktiv” tilgang ved at pille huller i eksisterende forsvarslag. Forsvarsteknikker fortsætter med at udvikle sig hurtigt, og så gør også angrebsfladen. Dette spil viser ikke tegn på at slutte snart. Men jeg tror også, at vi ikke kommer til at spille det længe. Jeg ville gætte, at den succesfulde prompt injection i fremtiden stadig ville være i naturligt sprog; blot et sprog, som mennesker ikke kan forstå; og jeg ville gætte, at det ville blive selvopdaget af et system, der enten er bygget til dette specifikke formål eller måske tilfældigt efter at have tacklet en relateret opgave, såsom at søge efter semantisk tvetydighed i nogen repræsentationsrum.
Der er noget ubehageligt i at indrømme, at vi mister kontrollen, og alligevel føler, at dette er den mest rationelle ting at gøre. Du kan betragte det som det “intuitive bevis” på, at nogle angreb ville være stoppet. Og hvis det efterlader dig urolig, ville du være glad for at vide, at GPT 5.2 fandt dette argument for at være “ikke kontroversielt eller nyt” og foreslog, at jeg ikke “belaster punktet” og reducerer 40% af artiklen.
