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:

  1. Verkenning (Reconnaissance): Het in kaart brengen van de architectuur, vertrouwensgrenzen, invoeroppervlakken, eerder bewijs en deterministische dekking in architecture.md en coverage-ledger.json.
  2. 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.
  3. Validatie van kandidaten (Candidate validation): Elke unieke kandidaat wordt overgedragen aan een nieuwe verifieerder die probeert de bevinding te weerleggen.
  4. 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.
  5. Onafhankelijke verificatie van records (Independent record verification): Nieuwe agents verifiëren de uiteindelijke bronclaims. Bij materiële vervangingen wordt een tweede onafhankelijke verifieerder ingezet.
  6. 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

BestandDoel
SKILL.mdInstallatie, kernprincipes, platformterminologie, workflow-overzicht en audit-anti-patronen.
RECONNAISSANCE.mdPrompts voor fase 1 (verkenning) en instructies voor synthese.
HUNTING.mdOrchestratie van fase 2, jachtmethodologie en validatieregels.
ATTACK-CLASSES.mdPrompts voor core, wildcard en voor de hand liggende aanvalsklassen.
MEMORY-SAFETY-AND-BINARY.mdJachtklassen voor geheugenveiligheid, binaire bestanden en kernel voor native targets.
AI-AND-LLM.mdJachtklassen voor prompt-injectie, agents/tools en output-afhandeling voor LLM-gebaseerde targets.
WEB-PROTOCOL-AND-AUTH.mdJachtklassen voor HTTP-request-framing, cache en authenticatieprotocollen.
CLIENT-SIDE.mdJachtklassen voor DOM-injectie, messaging-trust, UI-redress en prototype-pollution voor client-side/browser targets.
SUPPLY-CHAIN-AND-RELEASE.mdJachtklassen voor afhankelijkheden, CI, releases, ondertekening, updates, plugins en extensies.
CLOUD-AND-DEPLOYMENT.mdJachtklassen voor IAM, infrastructure-as-code, containers, serverless, ingress en runtime-configuraties.
PROTOCOLS-RPC-AND-MESSAGING.mdJachtklassen voor RPC, serialisatie, queues, brokers, webhooks en streaming-protocollen.
RESOURCE-EXHAUSTION-AND-AVAILABILITY.mdJachtklassen voor gedeelde resources, quota, queues, workers en operator-spend.
DATA-ISOLATION-AND-LIFECYCLE.mdJachtklassen voor tenant-isolatie, cache, zoekfuncties, export, backup, migratie, verwijdering en herstel.
DESKTOP-MOBILE-AND-LOCAL-IPC.mdJachtklassen voor native apps, deep-links, webviews, geëxporteerde componenten, helpers, daemons en lokale IPC.
VALIDATION-AND-REPORTING.mdValidatie van kandidaten (fase 3–6), gestructureerde output, record-verificatie en rapportage.
report-schema.jsonJSON-schema voor alle drie de verdicts in findings.json.
validate-findings.cjsValidator zonder afhankelijkheden voor findings.json in fase 4 en 5.
validate-findings.test.cjsTests voor de findings-validator en controles op producer-compatibele fixtures.
validate-coverage-ledger.cjsValidator zonder afhankelijkheden voor coverage-ledger.json in fase 1–5.
validate-coverage-ledger.test.cjsTests 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.