← Nieuwste papers
🤖 AI

ARQ: Agentic CodeQL Query Refinement for C/C++ Vulnerability Detection

ARQ is een agentisch framework dat automatisch C/C++ CodeQL-queries verfijnt met behulp van op uitvoering gebaseerd bewijs uit gesynthetiseerde programma's en LLM's om het aantal fout-positieven en fout-negatieven aanzienlijk te verminderen zonder gelabelde datasets te vereisen, waarbij tot 119,8% meer true positive detecties worden bereikt en langlopende problemen in officiële repositories worden opgelost.

Oorspronkelijke auteurs: Chunyi Wang, Yunfei Ke, Junfeng Yang, Yun-Yun Tsai, Penghui Li

Gepubliceerd 2026-08-24
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Chunyi Wang, Yunfei Ke, Junfeng Yang, Yun-Yun Tsai, Penghui Li

Oorspronkelijk artikel vrijgegeven aan het publieke domein onder CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.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

Software die onze computers, telefoons en auto's aanstuurt, wordt vaak gebouwd met talen zoals C en C++. Deze hulpmiddelen geven programmeurs nauwkeurige controle over hoe een machine zijn geheugen gebruikt, maar diezelfde kracht maakt het ook gemakkelijk om fouten te maken. Een kleine fout in de manier waarop een programma met geheugen omgaat, kan een deur openzetten voor aanvallers om systemen te laten craschen of gegevens te stelen. Om deze fouten op te vangen voordat ze schade aanrichten, gebruiken beveiligingsexperts geautomatiseerde scanners die code lezen en zoeken naar gevaarlijke patronen. Deze scanners vertrouwen op een reeks regels, geschreven door mensen, die hen precies vertellen hoe een kwetsbaar stuk code eruitziet. Als de regels te strikt zijn, mist de scanner echte gevaren; als ze te los zijn, schreeuwt het over problemen die er niet zijn, wat tijd en vertrouwen verspilt.

Jarenlang was het verbeteren van deze regels een traag, handmatig proces. Experts moeten code lezen, raden waar de scanner zou kunnen falen en de regels handmatig herschrijven. Dit proces is moeilijk omdat de regels perfect moeten zijn, en de code die ze scannen is enorm groot en complex. Een nieuwe aanpak genaamd ARQ verandert de manier waarop dit werk wordt gedaan. In plaats van uitsluitend te vertrouwen op menselijke intuïtie, gebruikt ARQ kunstmatige intelligentie om deze regels automatisch te testen en te corrigeren. Het raadt niet alleen; het voert de door het systeem gegenereerde code uit om te zien of de regels daadwerkelijk werken. Door een lus te bouwen waarbij het systeem testprogramma's genereert, ze uitvoert en vervolgens de resultaten gebruikt om de regels te verbeteren, vindt ARQ fouten die mensen jarenlang over het hoofd hebben gezien.

De onderzoekers achter ARQ begonnen met een simpel maar krachtig idee: een regel is slechts zo goed als haar vermogen om tussen veilige code en gevaarlijke code te onderscheiden. Ze gaven een kunstmatige intelligentie een specifieke regel van een populaire beveiligingsscanner en vroegen het om twee zeer vergelijkbare programma's te maken. Eén programma was ontworpen om veilig te zijn, en het andere was ontworpen om gevaarlijk te zijn. De AI keek vervolgens hoe de scanner op beide reageerde. Als de scanner het veilige programma als gevaarlijk markeerde, was de regel te los. Als het de gevaarlijke code miste, was de regel te strikt. Deze discrepantie tussen wat de scanner zei en wat er daadwerkelijk gebeurde toen de code werd uitgevoerd, werd het bewijs dat de AI nodig had om de regel te verbeteren.

Om er zeker van te zijn dat de AI niet zomaar gokte, gebruikte het systeem een speciaal hulpmiddel genaamd een sanitizer. Dit hulpmiddel werkt als een precisiesensor die een programma observeert terwijl het draait. Als een programma iets onveiligs probeert te doen, zoals het gebruiken van geheugen dat al is vrijgegeven, stopt de sanitizer het programma en rapporteert de fout onmiddellijk. Dit gaf de onderzoekers een grondwaarheid. Ze konden het oordeel van de scanner vergelijken met het rapport van de sanitizer. Als de scanner zei dat een programma veilig was, maar de sanitizer een crash vond, wisten de onderzoekers dat de scanner een fout had gemaakt. De AI gebruikte deze bevestigde fout vervolgens om de regel te herschrijven, waardoor deze slimmer werd.

Dit proces vond plaats in een continue lus. De AI genereerde een nieuw paar testprogramma's, voerde ze uit, controleerde de resultaten en verfijnde de regel opnieuw. Cruciaal was dat elke keer dat de regel veranderde, het systeem deze opnieuw testte tegen alle voorgaande voorbeelden om ervoor te zorgen dat de aanpassing niets kapot maakte dat al wel werkte. Dit voorkwam dat de AI overcorrigeerde en nieuwe problemen creëerde terwijl het oude problemen oploste. Het team testte deze methode op twaalf verschillende beveiligingsregels die worden gebruikt in real-world software. Ze voerden deze regels uit tegen twee grote collecties code die ontworpen zijn om beveiligingstools te testen. De resultaten lieten zien dat de door AI verfijnde regels aanzienlijk meer echte kwetsbaarheden vonden dan de oorspronkelijke door mensen geschreven regels. In sommige gevallen verdubbelde het aantal gedetecteerde dreigingen, terwijl de snelheid van valse alarmen extreem laag bleef, met een nauwkeurigheid van boven de negentigentachtig procent.

De impact van dit werk ging verder dan testdata. De onderzoekers pasten hun verfijnde regels toe op echte, veelgebruikte softwarebibliotheken die een groot deel van het internet aandrijven, zoals tools voor het comprimeren van gegevens en het weergeven van afbeeldingen. De verbeterde regels brachten twee bugs aan het licht die al jaren in deze bibliotheken verborgen zaten, wachtend om gevonden te worden. Bovendien loste het systeem succesvol drie specifieke problemen op die waren gerapporteerd op een publiek software-repository maar die onopgelost waren gebleven gedurende maar liefst zevenentwintig maanden. Deze problemen hadden menselijke experts meer dan twee jaar lang in verwarring gebracht, maar het geautomatiseerde systeem loste ze op door systematisch de detectieregels te testen en aan te passen.

Deze aanpak suggereert een nieuwe manier om de veiligheid van onze digitale infrastructuur te handhaven. In plaats van te wachten tot mensen een gebrek vinden en handmatig een oplossing schrijven, kunnen systemen nu hun eigen regels continu testen tegen echte uitvoering. De methode vereist geen enorme databases met gelabelde fouten of jaren aan historische gegevens om te werken. Het heeft simpelweg de mogelijkheid nodig om code uit te voeren en de resultaten te controleren. Door de kunstmatige intelligentie te funderen in de realiteit van hoe programma's zich daadwerkelijk gedragen, in plaats van alleen hoe ze er op papier uitzien, hebben de onderzoekers een hulpmiddel gecreëerd dat beveiligingsscanners scherp en effectief kan houden naarmate software evolueert. Het werk laat zien dat wanneer kunstmatige intelligentie wordt gekoppeld aan concreet bewijs uit draaiende code, het complexe technische problemen kan oplossen die lang aan menselijke inspanning hebben weerstaan.

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.

Probeer Digest →