ANVIL: Anomaly-based Vulnerability Identification without Labelled Training Data
Het artikel introduceert ANVIL, een ongesuperviseerd raamwerk voor kwetsbaarheidsdetectie dat gebruikmaakt van Large Language Models om code-anomalieën te identificeren via gemaskeerde reconstructie en een hybride scoringsmechanisme, waarbij het een superieure prestatie demonstreert ten opzichte van gesuperviseerde detectoren en succesvol voorheen onbekende kwetsbaarheden blootlegt wanneer het wordt geïntegreerd met fuzzers.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je probeert één enkele, licht beschadigde baksteen te vinden in een enorme muur gemaakt van miljoenen perfecte stenen.
Het Probleem: Het "Muntkop of Muntis"-dilemma
Normaal gesproken heb je een team experts nodig die duizenden beschadigde voorbeelden hebben bestudeerd en precies hebben geleerd hoe ze eruitzien. Dat is hoe de meeste huidige computerprogramma's werken: ze zijn "supervised learners" (gesuperviseerde leerders). Maar er is een groot probleem: we hebben niet genoeg voorbeelden van kapotte code om ze goed mee te onderwijzen.
Onlangs hebben we deze superintelligente AI-modellen (Large Language Models of LLM's genoemd) die bijna elk stuk geschreven code ooit hebben gelezen. Je zou kunnen denken: "Geweldig! Ze hebben alles gezien, dus ze moeten de beschadigde stenen wel kunnen herkennen." Maar verrassend genoeg, wanneer je ze simpelweg vraagt: "Is deze regel code kapot?", presteren ze niet beter dan het opgooien van een muntje. Ze zijn geweldig in het schrijven van code, maar slecht in het bekritiseren ervan, omdat ze getraind zijn om patronen na te bootsen, niet om fouten op te sporen.
De Oplossing: ANVIL (Het "Verschil-ontdek"-spel)
De onderzoekers achter dit artikel, ANVIL, besloten het scenario om te draaien. In plaats van de AI te leren hoe "kapotte" code eruitziet, vroegen ze: "Wat denkt de AI dat een normale regel code zou moeten zijn?"
Zo werkt ANVIL, met behulp van een eenvoudige analogie:
- Het Maskeringsspel: Stel je voor dat je een zin uit een verhaal neemt en één regel met een zwarte stift onzichtbaar maakt. Je vraagt de AI vervolgens om te raden wat die verborgen regel was, gebaseerd op alleen de zinnen vóór en na de verborgen regel.
- De Verwachting: Als de verborgen regel een normale, standaard regel code is, zal de AI deze waarschijnlijk correct raden (of heel dichtbij), omdat het dat patroon een miljoen keer heeft gezien.
- De Anomalie: Als de verborgen regel een "kwetsbare" (beschadigde) regel code is, is deze waarschijnlijk vreemd of ongewoon vergeleken met de rest van de trainingsdata. De AI zal er moeite mee hebben om te raden. Het kan iets totaal anders raden, of het zal erg onzeker zijn.
- De Score: ANVIL meet hoeveel de gok van de AI afwijkt van de originele regel. Als de gok er ver naast zit, of als de AI erg onzeker is, markeert ANVIL die regel als "anomaal" (verdacht).
De "Hybride" Detective
De onderzoekers realiseerden zich dat alleen het meten van het verschil niet genoeg is. Soms is een klein verschil (zoals > veranderen in >=) een enorme fout, maar de AI vindt het misschien geen grote zaak. Daarom creëerden ze een "Hybride Score" die werkt als een detective met vier verschillende instrumenten:
- Exacte Match: Heeft de AI het 100% goed gekregen? Zo niet, dan is dat een rood vlaggetje.
- Verwarringsmeter: Hoe onzeker was de AI? Als de AI de ruimte laat voor twijfel, kan de code vreemd zijn.
- Complexiteitscheck: Is de regel code overdreven ingewikkeld? Complexe code is vaak de plek waar fouten zich verstoppen.
- De "Loss"-score: Een wiskundige maatstaf voor hoe "verrast" de AI was door de originele regel.
De Resultaten: De Naald in de Hooiberg Vinden
Het team testte ANVIL op een enorme dataset van echte code.
- De Experts Verslaan: Ze vergeleken ANVIL met de beste bestaande tools die wél trainingsdata vereisen. Ondanks dat ANVIL geen enkele trainingsdata gebruikte, vond het kwetsbaarheden twee keer zo nauwkeurig als de anderen.
- De Context-truc: Ze ontdekten dat het geven van het hele bestand aan de AI eigenlijk verwarrend was (zoals proberen een naald in een hooiberg te vinden door naar de hele schuur te kijken). In plaats daarvan gebruikt ANVIL een "slimme context"-aanpak: het kijkt alleen naar het specifieke blok code (de functie) rondom de verdachte regel. Dit maakte het sneller en nauwkeuriger.
- Succes in de Praktijk: Om te bewijzen dat het in de echte wereld werkt, koppelden ze ANVIL aan een "fuzzer" (een tool die probeert software te breken door er willekeurige data naar te gooien). ANVIL hielp de fuzzer om twee nieuwe, voorheen onbekende kwetsbaarheden te vinden, waarvan er één zo ernstig was dat deze een officiële beveiligings-ID (CVE) kreeg.
De Kern van het Verhaal
ANVIL bewijst dat je een AI niet hoeft te leren wat "slecht" is om het te kunnen vinden. Je hoeft alleen maar te vragen wat "normaal" is. Wanneer de code niet in het "normale" patroon past, is het waarschijnlijk kapot. Het is een slimmere, snellere en algemenere manier om beveiligingslekken te vinden zonder een enorme bibliotheek van eerdere fouten nodig te hebben om van te leren.
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.