De security-audit-skill is een extensie die coding-agents in staat stelt om als security auditors te fungeren. De tool is gebaseerd op het vulnerability discovery harness van Cloudflare en hanteert een rigoureus proces in zes fasen: verkenning, jacht op basis van dekking, validatie van kandidaten, gestructureerde output, onafhankelijke verificatie en doel-neutrale rapportage.
Kernpunten van de skill:
- Methodologie: Er wordt gewerkt met specifieke jachtklassen voor diverse domeinen zoals AI/LLM, webprotocollen, cloud-deployment, geheugenveiligheid en supply chain.
- Verificatie: Bevindingen worden geclassificeerd als Confirmed, Needs_validation of Rejected. Een belangrijk principe is adversariële validatie, waarbij de verifiërende agent nooit dezelfde is als de ontdekkende agent.
- Technische vereisten: De tool vereist een coding agent die tool-gebruik en parallelle sub-agents ondersteunt, Node.js voor validatie, en een strikte OS-sandbox voor het veilig uitvoeren van tests en builds.
- Installatie: De skill kan eenvoudig worden toegevoegd via de Skills CLI via een GitHub-repository.
Security-audit-skill: Beveiligingsaudits voor coding-agents
Deze skill vormde de basis voor het vulnerability discovery harness van Cloudflare, zoals beschreven in Build your own vulnerability harness. Waar dat harness uitgroeide tot een systeem voor het gehele netwerk, is deze skill het startpunt voor een enkele repository.
Wat de skill doet
De skill voert een gestructureerde audit uit in zes fasen:
- Verkenning (Reconnaissance): Het in kaart brengen van de architectuur, vertrouwensgrenzen, invoeroppervlakken, eerder bewijs en deterministische dekking in
architecture.md en coverage-ledger.json.
- Jacht op basis van dekking (Coverage-led hunting): Het toewijzen van geïsoleerde 'hunters' aan eenheden uit het ledger, het vastleggen van hun controles en het gebruik van 'coverage critics' om gaten in de dekking te vinden.
- Validatie van kandidaten (Candidate validation): Elke unieke kandidaat wordt overgedragen aan een nieuwe verifieerder die probeert de bevinding te weerleggen.
- Gestructureerde output (Structured output): Bevestigde records, records die validatie behoeven (
needs_validation) en afgewezen records worden weggeschreven naar findings.json en gevalideerd tegen report-schema.json.
- Onafhankelijke verificatie van records (Independent record verification): Nieuwe agents verifiëren de uiteindelijke bronclaims. Bij materiële vervangingen wordt een tweede onafhankelijke verifieerder ingezet.
- Doel-neutrale rapportage (Target-neutral reporting): Op basis van de geverifieerde records en het coverage ledger worden
REPORT.md, FINDINGS-DETAIL.md en NEEDS-VALIDATION.md gegenereerd.
De hoofdagent voert validate-coverage-ledger.cjs uit na het maken van het ledger en na elke volgende update ervan. Daarnaast wordt validate-findings.cjs uitgevoerd in fase 4 en na elke vervanging in fase 5.
Verdicts
Er wordt een onderscheid gemaakt tussen drie soorten resultaten:
- Confirmed: Bevat een volledig spoor naar de bron en een afgebakend geobserveerd resultaat.
- Needs_validation: Bevat een exact onopgelost feit en heeft geen toegewezen ernst (severity).
- Rejected: Een kandidaat die is weerlegd.
Meerdere runs op dezelfde repository zijn additief. De skill gebruikt eerdere ledgers en bevindingen om gaten te targeten, gewijzigde broncodes opnieuw te valideren en bewijzen uit de huidige bron mee te nemen, zonder dat verouderd of onopgelost werk als 'gedekt' wordt beschouwd.
Bestanden
| Bestand | Doel |
SKILL.md | Installatie, kernprincipes, platformterminologie, workflow-overzicht en audit-anti-patronen. |
RECONNAISSANCE.md | Prompts voor fase 1 (verkenning) en instructies voor synthese. |
HUNTING.md | Orchestratie van fase 2, jachtmethodologie en validatieregels. |
ATTACK-CLASSES.md | Prompts voor core, wildcard en voor de hand liggende aanvalsklassen. |
MEMORY-SAFETY-AND-BINARY.md | Jachtklassen voor geheugenveiligheid, binaire bestanden en kernel voor native targets. |
AI-AND-LLM.md | Jachtklassen voor prompt-injectie, agents/tools en output-afhandeling voor LLM-gebaseerde targets. |
WEB-PROTOCOL-AND-AUTH.md | Jachtklassen voor HTTP-request-framing, cache en authenticatieprotocollen. |
CLIENT-SIDE.md | Jachtklassen voor DOM-injectie, messaging-trust, UI-redress en prototype-pollution voor client-side/browser targets. |
SUPPLY-CHAIN-AND-RELEASE.md | Jachtklassen voor afhankelijkheden, CI, releases, ondertekening, updates, plugins en extensies. |
CLOUD-AND-DEPLOYMENT.md | Jachtklassen voor IAM, infrastructure-as-code, containers, serverless, ingress en runtime-configuraties. |
PROTOCOLS-RPC-AND-MESSAGING.md | Jachtklassen voor RPC, serialisatie, queues, brokers, webhooks en streaming-protocollen. |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | Jachtklassen voor gedeelde resources, quota, queues, workers en operator-spend. |
DATA-ISOLATION-AND-LIFECYCLE.md | Jachtklassen voor tenant-isolatie, cache, zoekfuncties, export, backup, migratie, verwijdering en herstel. |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | Jachtklassen voor native apps, deep-links, webviews, geëxporteerde componenten, helpers, daemons en lokale IPC. |
VALIDATION-AND-REPORTING.md | Validatie van kandidaten (fase 3–6), gestructureerde output, record-verificatie en rapportage. |
report-schema.json | JSON-schema voor alle drie de verdicts in findings.json. |
validate-findings.cjs | Validator zonder afhankelijkheden voor findings.json in fase 4 en 5. |
validate-findings.test.cjs | Tests voor de findings-validator en controles op producer-compatibele fixtures. |
validate-coverage-ledger.cjs | Validator zonder afhankelijkheden voor coverage-ledger.json in fase 1–5. |
validate-coverage-ledger.test.cjs | Tests voor de coverage-ledger validator. |
Installatie
Installeer de skill via de Skills CLI:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
Voor een installatie op gebruikersniveau kan de vlag --global worden toegevoegd:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--global
Gebruik npx skills --help voor opties met betrekking tot agent-selectie en niet-interactieve opties.
Gebruik
Start de coding agent in (of gericht op) de codebase die geaudit moet worden en geef een opdracht voor een beveiligingsaudit, bijvoorbeeld:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
De skill activeert automatisch wanneer het verzoek overeenkomt met de trigger (zoals "security audit", "find vulnerabilities", "pen-test the code", etc.). Een direct verzoek voor een codebase-audit of pen-test activeert de volledige audit-modus. Specifieke beveiligingsvragen en gericht werk aan kwetsbaarheden gebruiken de begeleidingsmodus (guidance mode), tenzij er expliciet om rapport-artefacten wordt gevraagd.
In de volledige audit-modus is de standaard output-directory ~/security-audit-skill/<repo-name>/run-<N>, tenzij er een andere directory wordt opgegeven. De workflow schrijft alleen binnen de doelrepository als er expliciet een directory is gekozen die door versiebeheer wordt genegeerd.
Vereisten
- Een coding agent met een model dat tool-gebruik en parallelle sub-agents ondersteunt.
- Node.js voor de validators van de findings en de coverage-ledger.
- Een door het OS afgedwongen sandbox voor target-controlled builds, tests, processen, browsers, emulators, fuzzers en fixtures. Deze moet extern netwerkverkeer uitschakelen, een gesaniteerde allowlist-omgeving gebruiken, resource-limieten afdwingen en schrijfacties alleen toestaan naar toegewezen scratch-paden. Zonder deze controles houdt de workflow de status van een lead op
needs_validation in plaats van de target-code uit te voeren.
Ontwerpprincipes
- Alleen bevestigde grensfouten: Bevestig alleen vastgestelde fouten in de grensbewaking. Houd een lead die gebaseerd is op de bron maar geblokkeerd is, op
needs_validation met het exacte onopgeloste feit.
- Adversariële validatie: De agent die een bevinding controleert, is nooit dezelfde agent die de bevinding heeft gedaan.
- Ernst vereist impact: Ernst wordt bepaald door waarschijnlijkheid x impact, niet door afwijkingen van een checklist.
- Gaten in defense-in-depth zijn geen kwetsbaarheden: Als laag A de aanval voorkomt, is de afwezigheid van laag B een opmerking over hardening, geen kwetsbaarheid.
- Meerdere runs verbeteren de dekking: In testruns vond één enkele run ongeveer de helft van de kwetsbaarheden die herhaalde runs in totaal vonden.
Contact & Licentie
Voor vragen, feedback of het vergelijken van aantekeningen over AI-gestuurde security-tooling: security-ai-research@cloudflare.com
Licentie: MIT.
Security-audit-skill: Beveiligingsaudits voor coding-agents
Deze skill vormde de basis voor het vulnerability discovery harness van Cloudflare, zoals beschreven in Build your own vulnerability harness. Waar dat harness uitgroeide tot een systeem voor het gehele netwerk, is deze skill het startpunt voor een enkele repository.
Wat de skill doet
De skill voert een gestructureerde audit uit in zes fasen:
- Verkenning (Reconnaissance): Het in kaart brengen van de architectuur, vertrouwensgrenzen, invoeroppervlakken, eerder bewijs en deterministische dekking in
architecture.md en coverage-ledger.json.
- Jacht op basis van dekking (Coverage-led hunting): Het toewijzen van geïsoleerde 'hunters' aan eenheden uit het ledger, het vastleggen van hun controles en het gebruik van 'coverage critics' om gaten in de dekking te vinden.
- Validatie van kandidaten (Candidate validation): Elke unieke kandidaat wordt overgedragen aan een nieuwe verifieerder die probeert de bevinding te weerleggen.
- Gestructureerde output (Structured output): Bevestigde records, records die validatie behoeven (
needs_validation) en afgewezen records worden weggeschreven naar findings.json en gevalideerd tegen report-schema.json.
- Onafhankelijke verificatie van records (Independent record verification): Nieuwe agents verifiëren de uiteindelijke bronclaims. Bij materiële vervangingen wordt een tweede onafhankelijke verifieerder ingezet.
- Doel-neutrale rapportage (Target-neutral reporting): Op basis van de geverifieerde records en het coverage ledger worden
REPORT.md, FINDINGS-DETAIL.md en NEEDS-VALIDATION.md gegenereerd.
De hoofdagent voert validate-coverage-ledger.cjs uit na het maken van het ledger en na elke volgende update ervan. Daarnaast wordt validate-findings.cjs uitgevoerd in fase 4 en na elke vervanging in fase 5.
Verdicts
Er wordt een onderscheid gemaakt tussen drie soorten resultaten:
- Confirmed: Bevat een volledig spoor naar de bron en een afgebakend geobserveerd resultaat.
- Needs_validation: Bevat een exact onopgelost feit en heeft geen toegewezen ernst (severity).
- Rejected: Een kandidaat die is weerlegd.
Meerdere runs op dezelfde repository zijn additief. De skill gebruikt eerdere ledgers en bevindingen om gaten te targeten, gewijzigde broncodes opnieuw te valideren en bewijzen uit de huidige bron mee te nemen, zonder dat verouderd of onopgelost werk als 'gedekt' wordt beschouwd.
Bestanden
| Bestand | Doel |
SKILL.md | Installatie, kernprincipes, platformterminologie, workflow-overzicht en audit-anti-patronen. |
RECONNAISSANCE.md | Prompts voor fase 1 (verkenning) en instructies voor synthese. |
HUNTING.md | Orchestratie van fase 2, jachtmethodologie en validatieregels. |
ATTACK-CLASSES.md | Prompts voor core, wildcard en voor de hand liggende aanvalsklassen. |
MEMORY-SAFETY-AND-BINARY.md | Jachtklassen voor geheugenveiligheid, binaire bestanden en kernel voor native targets. |
AI-AND-LLM.md | Jachtklassen voor prompt-injectie, agents/tools en output-afhandeling voor LLM-gebaseerde targets. |
WEB-PROTOCOL-AND-AUTH.md | Jachtklassen voor HTTP-request-framing, cache en authenticatieprotocollen. |
CLIENT-SIDE.md | Jachtklassen voor DOM-injectie, messaging-trust, UI-redress en prototype-pollution voor client-side/browser targets. |
SUPPLY-CHAIN-AND-RELEASE.md | Jachtklassen voor afhankelijkheden, CI, releases, ondertekening, updates, plugins en extensies. |
CLOUD-AND-DEPLOYMENT.md | Jachtklassen voor IAM, infrastructure-as-code, containers, serverless, ingress en runtime-configuraties. |
PROTOCOLS-RPC-AND-MESSAGING.md | Jachtklassen voor RPC, serialisatie, queues, brokers, webhooks en streaming-protocollen. |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | Jachtklassen voor gedeelde resources, quota, queues, workers en operator-spend. |
DATA-ISOLATION-AND-LIFECYCLE.md | Jachtklassen voor tenant-isolatie, cache, zoekfuncties, export, backup, migratie, verwijdering en herstel. |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | Jachtklassen voor native apps, deep-links, webviews, geëxporteerde componenten, helpers, daemons en lokale IPC. |
VALIDATION-AND-REPORTING.md | Validatie van kandidaten (fase 3–6), gestructureerde output, record-verificatie en rapportage. |
report-schema.json | JSON-schema voor alle drie de verdicts in findings.json. |
validate-findings.cjs | Validator zonder afhankelijkheden voor findings.json in fase 4 en 5. |
validate-findings.test.cjs | Tests voor de findings-validator en controles op producer-compatibele fixtures. |
validate-coverage-ledger.cjs | Validator zonder afhankelijkheden voor coverage-ledger.json in fase 1–5. |
validate-coverage-ledger.test.cjs | Tests voor de coverage-ledger validator. |
Installatie
Installeer de skill via de Skills CLI:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
Voor een installatie op gebruikersniveau kan de vlag --global worden toegevoegd:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--global
Gebruik npx skills --help voor opties met betrekking tot agent-selectie en niet-interactieve opties.
Gebruik
Start de coding agent in (of gericht op) de codebase die geaudit moet worden en geef een opdracht voor een beveiligingsaudit, bijvoorbeeld:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
De skill activeert automatisch wanneer het verzoek overeenkomt met de trigger (zoals "security audit", "find vulnerabilities", "pen-test the code", etc.). Een direct verzoek voor een codebase-audit of pen-test activeert de volledige audit-modus. Specifieke beveiligingsvragen en gericht werk aan kwetsbaarheden gebruiken de begeleidingsmodus (guidance mode), tenzij er expliciet om rapport-artefacten wordt gevraagd.
In de volledige audit-modus is de standaard output-directory ~/security-audit-skill/<repo-name>/run-<N>, tenzij er een andere directory wordt opgegeven. De workflow schrijft alleen binnen de doelrepository als er expliciet een directory is gekozen die door versiebeheer wordt genegeerd.
Vereisten
- Een coding agent met een model dat tool-gebruik en parallelle sub-agents ondersteunt.
- Node.js voor de validators van de findings en de coverage-ledger.
- Een door het OS afgedwongen sandbox voor target-controlled builds, tests, processen, browsers, emulators, fuzzers en fixtures. Deze moet extern netwerkverkeer uitschakelen, een gesaniteerde allowlist-omgeving gebruiken, resource-limieten afdwingen en schrijfacties alleen toestaan naar toegewezen scratch-paden. Zonder deze controles houdt de workflow de status van een lead op
needs_validation in plaats van de target-code uit te voeren.
Ontwerpprincipes
- Alleen bevestigde grensfouten: Bevestig alleen vastgestelde fouten in de grensbewaking. Houd een lead die gebaseerd is op de bron maar geblokkeerd is, op
needs_validation met het exacte onopgeloste feit.
- Adversariële validatie: De agent die een bevinding controleert, is nooit dezelfde agent die de bevinding heeft gedaan.
- Ernst vereist impact: Ernst wordt bepaald door waarschijnlijkheid x impact, niet door afwijkingen van een checklist.
- Gaten in defense-in-depth zijn geen kwetsbaarheden: Als laag A de aanval voorkomt, is de afwezigheid van laag B een opmerking over hardening, geen kwetsbaarheid.
- Meerdere runs verbeteren de dekking: In testruns vond één enkele run ongeveer de helft van de kwetsbaarheden die herhaalde runs in totaal vonden.
Contact & Licentie
Voor vragen, feedback of het vergelijken van aantekeningen over AI-gestuurde security-tooling: security-ai-research@cloudflare.com
Licentie: MIT.