Hoe je AI echte codekwetsbaarheden laat vinden zonder bergen valse positieven
Als je ooit een LLM op broncode hebt gericht met een "vind kwetsbaarheden"-prompt, herinner je je waarschijnlijk het resultaat. Het model produceert typisch een muur van theoretische observaties: ontbrekende OWASP-checklist-validatie hier, nog een laag sanitering zou hier kunnen worden toegevoegd, en deze variabele is verdacht genoemd. In de praktijk blijkt 90% van dergelijke bevindingen ruis te zijn die simpelweg de tijd van ontwikkelaars verspilt.
Het Cloudflare-team heeft security-audit-skill open source gemaakt. Het is een set instructies en pijplijn voor codeeragents, die ze gebruikten om hun interne harness te bouwen voor continue repository-auditing.
Wat is het hoofdprobleem met reguliere AI-auditing
De meeste statische analyzers en eenvoudige neurale netwerk-prompts hebben last van twee problemen: ze verifiëren exploitability niet en hallucineren context. Het neurale netwerk ziet een gevaarlijke functie maar merkt niet op dat invoergegevens al gefilterd worden door drie lagen erboven.
Cloudflare nam de tegenovergestelde aanpak en bouwde de skill op strikte principes:
- Rapporten worden alleen gegenereerd voor wat daadwerkelijk exploiteerbaar is. Zinsnedes als "theoretisch zou een aanvaller kunnen" worden onmiddellijk uitgefilterd.
- De persoon die de bug vond heeft niet het recht om deze te valideren. Een apart onafhankelijk agent draait in de rol van advocaat van de duivel voor verificatie.
- De afwezigheid van een tweede beschermingslaag wordt niet als kwetsbaarheid beschouwd als de eerste laag de aanvalsvector betrouwbaar blokkeert.
- Criticaliteitsbeoordeling is gebaseerd op echte impact, niet op formele checklist-overeenkomsten.
Hoe de zesfasen-pijplijn werkt
In plaats van één lange prompt breekt het gereedschap het werk op in zes opeenvolgende stadia. Parallelle sub-agents werken binnen, elk met een strikt gedefinieerde taak.
+-------------------------------------------------------------+
| 1. Recon -> Карта архитектуры и точек входа |
| 2. Hunt -> Параллельные атаки по разным векторам |
| 3. Validate -> Попытка опровергнуть каждую находку |
| 4. Report -> Формирование читаемых отчетов |
| 5. Structured -> Генерация findings.json со схемой |
| 6. Verify -> Сверка фактов со свежими агентами |
+-------------------------------------------------------------+
1. Recon
Agents onderzoeken het project, definiëren vertrouwensgrenzen, identificeren entry points en brengen de algehele architectuur in kaart. Het resultaat is een bestand architecture.md dat dient als kaart voor aanvallende agents.
2. Hunt
Meerdere agents testen de codebase parallel vanuit verschillende invalshoeken. Het project wordt opgesplitst in aparte bestanden met prompts voor verschillende aanvalsklassen:
- Injecties, toegangscontrole en bedrijfslogica.
- Webprotocol-specificaties, caching en authenticatie (
WEB-PROTOCOL-AND-AUTH.md). - Client-side bedreigingen zoals DOM-injecties en prototype pollution (
CLIENT-SIDE.md). - Geheugenveiligheid en binaire kwetsbaarheden voor native code (
MEMORY-SAFETY-AND-BINARY.md). - LLM-systeemproblemen: prompt injection, context leaks en tool call-manipulatie (
AI-AND-LLM.md).
Elk hunting-agent kan extra processen spawnen om verdachte call chains verder te onderzoeken.
3. Adversariële validatie
De nuttigste fase. Verse agents ontvangen een lijst met potentiële bugs en proberen actief te bewijzen dat een aanval niet zal werken. Als bescherming aanwezig is of de vector wordt geblokkeerd door een naburige module, wordt de bevinding meedogenloos doorgehaald.
4. Rapport & Gestructureerde output
Bestanden REPORT.md en FINDINGS-DETAIL.md worden gegenereerd met gedetailleerde traces voor Medium-level en hogere kwetsbaarheden, samen met findings.json. De gestructureerde JSON wordt gevalideerd door script validate-findings.cjs op basis van Node.js zonder externe afhankelijkheden.
5. Onafhankelijke verificatie
Finale kwaliteitscontrole. Agents met schone context verifiëren regel voor regel de claims in het rapport tegen de daadwerkelijke code om hallucinaties in regelnummers of functienamen te elimineren.
Installatie en uitvoering
Het pakket maakt verbinding via Skills CLI met elke codeeragent die tool calls en parallelle sub-agents ondersteunt.
Projectinstallatie:
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit
Globale installatie voor het hele systeem:
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit --global
Daarna open je simpelweg de codebase in je agent en schrijf je in gewone tekst:
security audit this codebase
of specificeer een specifieke directory en rapportpad:
do a security review, output to ~/audits/my-project
Interessant detail: runs kunnen worden gecumuleerd. De auteurs ontdekten tijdens het testen dat één run ongeveer de helft van echte problemen vindt vanwege willekeur in traversalepaden. De skill kan eerdere findings.json lezen, reeds bekende bugs overslaan en onverkende code-takken verkennen.
Voor wie is dit
Het gereedschap vereist een capabel model met ondersteuning voor parallelle tool calls, dus draaien op zwakke lokale setups zal waarschijnlijk niet werken.
Maar als je al agents gebruikt voor refactoring of tests schrijven, is het toevoegen van een rol als nauwgezette security-auditor een geweldig idee voor een release of grote merge. De aanpak van het splitsen van rollen tussen "aanvaller" en "skeptic" vermindert merkbaar de handmatige inspanning voor het omgaan met valse positieven.
Gerelateerde projecten