One Successful Run Is Not an Exploit: Replaying LLM-Written Exploit Scripts with the Model Out of the Loop
Dit artikel toont aan dat succes bij een enkele run in op LLM gebaseerde offensieve beveiligingsbenchmarks vaak misleidend is door aan te tonen dat, hoewel gegenereerde exploit-scripts zeer stabiel zijn wanneer ze zonder het model worden afgespeeld, de werkelijke instabiliteit in het generatieproces ligt in plaats van in de scripts zelf, wat een scheiding tussen modelprestaties en artefactbetrouwbaarheid noodzakelijk maakt voor een nauwkeurige evaluatie.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteur. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de wereld van computerbeveiliging is er een constante race tussen degenen die verdedigingen bouwen en degenen die proberen ze te breken. Wanneer een computersysteem een verborgen zwakte heeft, een kwetsbaarheid genoemd, kan een bekwame aanvaller een klein stukje code schrijven om deze te exploiteren en ongeautoriseerde toegang te verkrijgen. Vandaag de dag gebruiken onderzoekers kunstmatige intelligentie om deze stukjes code automatisch te schrijven. Deze AI-systemen, vaak agenten genoemd, krijgen een uitdaging en een set regels, en zij proberen een script te genereren dat er succesvol in slaagt om in te breken in een testsysteem. Als het script zelfs maar één keer werkt, wordt dit volgens de standaardmanier van succesmeting in dit vakgebied geteld als een overwinning. De aanname is geweest dat als een AI een script kan schrijven dat één keer werkt, het een betrouwbare manier heeft gevonden om het systeem te breken. Maar deze aanname laat een cruciale vraag onbeantwoord: als je exact hetzelfde script neemt en het nog een keer draait op een vers systeem, zal het dan een tweede keer werken?
Een onderzoeker zette zich in om deze vraag te beantwoorden door te veranderen hoe deze door AI gegenereerde scripts werden getest. In plaats van de AI te vragen om het steeds opnieuw te proberen, wat de vaardigheid van de AI zou testen om na te denken en zich aan te passen, besloot de onderzoeker de scripts zelf te testen. De onderzoeker nam de winnende scripts die de AI al had geproduceerd en draaide ze herhaaldelijk op gloednieuwe, schone kopieën van de doelsystemen, zonder de AI in de tweede ronde te laten deelnemen. Deze aanpak is als het nemen van een sleutel die een deur één keer succesvol heeft geopend en die vervolgens op een dozijn nieuwe, identieke deuren probeert om te zien of hij nog steeds past. De onderzoeker wilde weten of de sleutel echt goed was, of dat hij alleen werkte vanwege een specifieke, tijdelijke conditie van de eerste deur.
De studie omvatte veertien verschillende beveiligingsuitdagingen, variërend van eenvoudige inlogfouten tot complexere problemen waarbij het systeem gebruikersinvoer op gevaarlijke wijze verwerkt. De AI kreeg de opdracht om deze uitdagingen op te lossen, en het slaagde erin om 196 verschillende pogingen werkende scripts te genereren. De onderzoeker nam vervolgens elk van deze 196 scripts en draaide ze tien keer elk op verse systemen, wat een totaal van 1.960 testruns opleverde. De resultaten waren treffend duidelijk: in 1.950 van die runs werkte het script precies zoals de eerste keer. Dit betekent dat in de overgrote meerderheid van de gevallen, zodra de AI een oplossing vond, die oplossing een stabiel, betrouwbaar stuk code was dat hergebruikt kon worden. Het script vertrouwde niet op geluk of een vluchtig moment van succes; het was een solide instrument dat consistent werkte.
Echter, de studie bracht ook een fascinerende uitzondering aan het licht die verklaart waarom de oude manier van testen ontoereikend was. Er was één script van de 196 dat elke keer dat het op een vers systeem werd gedraaid, faalde. Het was een "dood" script dat de deur niet kon openen. Toch, toen de onderzoeker de volledige sequentie van stappen die de AI had genomen om dat script te creëren doorliep — het herhalen van de eerdere pogingen van de AI in volgorde voordat het uiteindelijke script werd uitgevoerd — werkte het script plotseling elke keer perfect. De reden was subtiel en verborgen. Het script vertrouwde op de interne staat van het computersysteem, specifiek een lijst met klassen die de programmeertaal van het systeem in het geheugen hield. De eerdere pogingen van de AI hadden onbedoeld items aan deze lijst toegevoegd, waardoor de posities van de items verschoven. Het uiteindelijke script was hard-coded om specifieke items op specifieke posities te zoeken. Op een vers systeem waren die posities leeg of bevatten ze de verkeerde dingen. Maar nadat de eerdere stappen waren uitgevoerd, was de lijst gegroeid en verschoven, waardoor de juiste items precies daar plaatste waar het script ze verwachtte. Het succes behoorde toe aan de hele reis, niet alleen aan de laatste stap.
Deze ontdekking benadrukt een groot verschil tussen hoe de AI denkt en hoe de door de AI geproduceerde code zich gedraagt. De onderzoeker vond dat het vermogen van de AI om een oplossing te genereren vrij instabiel was. In veel gevallen zou de AI er niet in slagen een oplossing te vinden bij de eerste poging, wel slagen bij de tweede, en dan weer falen bij de derde. Als je alleen naar het generatieproces van de AI zou kijken, zou je veel inconsistentie zien. Maar zodra de AI erin slaagde een script te schrijven dat werkte, was dat script zelf bijna altijd stabiel. De instabiliteit zat in het denkproces, niet in het gecreëerde instrument. Dit betekent dat een enkele succesvolle run door een AI niet bewijst dat de AI consequent goed is in het vinden van oplossingen, maar het bewijst wel dat de specifieke oplossing die het vond meestal betrouwbaar is.
De onderzoeker testte ook of deze scripts zouden werken als het aangevallen computersysteem iets anders was, zoals het draaien van een nieuwere versie van de programmeertaal. De onderzoeker bouwde de doelsystemen opnieuw met een iets nieuwere versie van de software en draaide de scripts opnieuw. Bijna alle scripts werkten nog steeds, maar één script dat perfect betrouwbaar was op het oude systeem, faalde volledig op het nieuwe systeem. Dit toonde aan dat zelfs een kleine verandering in de omgeving een script kon breken dat perfect leek, wat het idee versterkte dat het succes van een script verbonden is aan de specifieke condities waaronder het werd gecreëerd.
De belangrijkste les uit dit werk is dat we de manier waarop we het succes van AI in beveiliging beoordelen, moeten veranderen. Een enkel succes is niet genoeg om een script een exploit te noemen. Om echt te weten of een AI een echte kwetsbaarheid heeft gevonden, moeten we verifiëren dat het door de AI geschreven script herhaaldelijk op eigen kracht werkt, zonder de hulp van de AI. De studie laat zien dat hoewel het generatieproces van de AI vaak wankel en onvoorspelbaar is, de scripts die het weet te produceren zijn, meestal solide en betrouwbaar zijn. De enige keer dat een script niet op eigen kracht werkte, kwam omdat het afhankelijk was van een verborgen staat die door de eerdere pogingen van de AI was achtergelaten, een detail dat een enkele testrun nooit zou onthullen. Door de handeling van het schrijven van de code te scheiden van de handeling van het uitvoeren ervan, gaf de onderzoeker een duidelijker beeld van wat deze AI-systemen daadwerkelijk in staat zijn, waarbij werd aangetoond dat de instrumenten die ze bouwen vaak betrouwbaarder zijn dan het proces dat hen bouwt.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.