Security Audit Skill — многофазный аудит безопасности от Cloudflare

· 2 мин чтения
security agent-skills vulnerability-scanning multi-agent cloudflare
📂 Исходный код на GitHub

Многофазный скилл аудита безопасности для кодирующих агентов от Cloudflare

Security Audit Skill — многофазный аудит безопасности от 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 result
  • needs_validation — точный unresolved fact, без severity
  • rejected — опровергнутый 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.

Источник: https://github.com/cloudflare/security-audit-skill