Security Audit Skill — многофазный аудит безопасности от Cloudflare
📂 Исходный код на GitHubМногофазный скилл аудита безопасности для кодирующих агентов от Cloudflare
Security Audit Skill — это скилл для кодирующих агентов от Cloudflare, превращающий агента в полноценного аудитора безопасности. Инструмент оркестрирует изолированных агентов через шестифазный процесс с adversarial валидацией и машиночитаемым форматом вывода. Именно этот скилл стал основой harness-системы Cloudflare для обнаружения уязвимостей, описанной в статье Build your own vulnerability harness. Harness вырос в многоступенчатую fleet-wide систему, а этот скилл — её точка отсчёта для работы с отдельным репозиторием.
Шестифазный процесс аудита
Скилл проводит структурированный аудит в шесть фаз. Каждая фаза имеет чёткие входы, выходы и правила валидации:
Фаза 1 — Reconnaissance. Картирование архитектуры, trust boundary, входных поверхностей, предыдущих свидетельств и детерминированного покрытия. На этом этапе агент анализирует структуру проекта, выявляет компоненты, взаимодействующие с внешним миром, определяет точки расширения и потенциальные зоны риска. Результат — architecture.md с полной картой архитектуры и coverage-ledger.json с единицами покрытия для последующего hunting.
Фаза 2 — Coverage-led hunting. Изолированные hunters получают единицы из ledger, записывают свои проверки и находки. Каждый hunter работает независимо и не видит результатов других. Coverage critics анализируют собранные данные и выявляют пробелы — области кода, которые не были проверены ни одним hunter. Это позволяет целенаправленно направлять усилия на непокрытые части.
Фаза 3 — Candidate validation. Каждый уникальный candidate передаётся свежему verifier, который не знает, кто нашёл эту находку и каким был первоначальный анализ. Верификатор пытается опровергнуть candidate — воспроизвести атаку, найти условие, при котором уязвимость не срабатывает, или подтвердить реальность проблемы.
Фаза 4 — Structured output. Записи с вердиктами confirmed, needs_validation и rejected пишутся в findings.json и валидируются через report-schema.json. Каждый verified record содержит source trace — точную ссылку на код и описание observed result.
Фаза 5 — Independent record verification. Свежие агенты проверяют финальные source claims. При существенных заменах назначается ещё один независимый verifier. Это двойная проверка — агент, подтверждающий запись, не является ни тем, кто нашёл, ни тем, кто верифицировал в фазе 3.
Фаза 6 — Target-neutral reporting. Генерируются REPORT.md, FINDINGS-DETAIL.md и NEEDS-VALIDATION.md на основе verified records и coverage ledger. Отчёты не зависят от конкретного target — формат одинаков для любого репозитория.
Родительский процесс запускает validate-coverage-ledger.cjs после создания ledger и после каждого обновления. validate-findings.cjs запускается в фазе 4 и после каждой замены в фазе 5. Валидаторы zero-dependency и работают на чистом Node.js.
Классы атак
Скилл покрывает широкий спектр attack classes:
| Категория | Что ищет |
|---|---|
| Web protocols & auth | HTTP request framing, cache poisoning, authentication bypass |
| Memory safety & binary | Buffer overflow, use-after-free, kernel-level уязвимости |
| Supply chain & release | Зависимости, CI/CD, signing, обновления, плагины |
| Cloud & deployment | IAM, infrastructure-as-code, контейнеры, serverless |
| AI & LLM | Prompt injection, agent/tool exploits, output handling |
| Client-side | DOM injection, messaging trust, UI redress, prototype pollution |
| Protocols, RPC & messaging | RPC, serialization, queues, webhooks, streaming |
| Resource exhaustion | Shared resources, quotas, queue exhaustion, operator spend |
| Data isolation & lifecycle | Tenant isolation, cache, export, backup, миграция, удаление |
| Desktop, mobile & local IPC | Deep-link, webview, exported components, daemon, local IPC |
Принципы проектирования
Скилл построен на нескольких ключевых принципах, которые отличают его от стандартных инструментов security review:
- Adversarial validation — агент, проверяющий находку, никогда не является тем, кто её нашёл. Это не дополнение к процессу, а архитектурное решение. Изоляция верификатора от hunter исключает когнитивные искажения и ensures, что находка выдержит независимую проверку.
- Boundary failures — подтверждаются только установленные нарушения границ. Если Layer A предотвращает атаку, отсутствие Layer B — это hardening note, не vulnerability. Скилл не выдаёт рекомендации по улучшению — только реальные нарушения.
- Severity requires impact — оценка severity через likelihood x impact, а не отклонение от чеклиста. Находка без оценки impact остаётся как
needs_validationс указанием точного unresolved fact. - Additive coverage — повторные запуски улучшают покрытие. Скилл использует prior ledgers и findings для таргетинга пробелов. В тестовых прогонках Cloudflare один запуск находил примерно половину уязвимостей, обнаруженных за все повторные запуски.
Установка и использование
Установка через Skills CLI:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
Для глобальной установки:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--global
Запуск — просто попросите агента провести аудит:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
Скилл активируется автоматически при совпадении запроса с триггером (security audit, find vulnerabilities, pen-test). Прямой запрос на аудит репозитория использует full audit mode. Вопросы по безопасности и focused vulnerability work используют guidance mode.
Валидаторы и structured output
Репозиторий содержит два zero-dependency валидатора на Node.js:
validate-findings.cjs— валидируетfindings.jsonсхемой изreport-schema.json. Запускается в фазе 4 и после каждой замены в фазе 5.validate-coverage-ledger.cjs— валидируетcoverage-ledger.json. Запускается после создания ledger и после каждого обновления.
Вердикты в findings.json:
confirmed— полный source trace и ограниченный observed resultneeds_validation— точный unresolved fact, без severityrejected— опровергнутый candidate
Требования
- Кодирующий агент с поддержкой tool use и parallel sub-agents
- Node.js для запуска валидаторов
- OS-enforced sandbox для target-controlled builds, tests, процессов, браузеров, эмуляторов, fuzzers и fixtures. Sandbox должен отключать внешнюю сеть, использовать sanitized allowlisted environment, обеспечивать resource limits и разрешать записи только в назначенные scratch paths. Без этих ограничений workflow оставляет lead как
needs_validationвместо выполнения target code.
Повторные запуски
Множественные запуски против одного репозитория аддитивны. Скилл использует prior ledgers и findings для таргетинга пробелов, revalidation изменённого source и переноса current-source evidence без обработки stale или unresolved work как covered.
Все файлы скилла доступны в репозитории: github.com/cloudflare/security-audit-skill. Лицензия MIT.