Дата публикации
ai_products

Anthropic выложила в open source эталонный пайплайн для поиска уязвимостей с Claude

Что нового

Anthropic выложила на GitHub открытый репозиторий Defending Code Reference Harness — эталонный пайплайн для автономного поиска и исправления уязвимостей в коде с помощью Claude.

Главные факты:

  • Это референс-реализация, а не готовый продукт. Репозиторий не поддерживается и не принимает pull‑request’ы.
  • Под капотом — связка нескольких «агентов» Claude, которые проходят полный цикл: recon → find → verify → report → patch.
  • Из коробки пайплайн заточен под C/C++ и поиск ошибок памяти с помощью ASAN (AddressSanitizer) внутри Docker.
  • В репозитории есть набор интерактивных «скиллов» Claude Code: /quickstart, /threat-model, /vuln-scan, /triage, /patch, /customize.
  • Отдельно Anthropic продвигает коммерческий продукт Claude Security — управляемый сервис, который ищет и чинит уязвимости в ваших репозиториях, с многоступенчатой верификацией и жизненным циклом: triage → проверка фикса → генерация патча.
  • Открытый репозиторий можно использовать с любым доступом к Claude API: Anthropic, Amazon Bedrock, Google Vertex AI, Azure.
  • Встроенная модель угроз и sandbox: автономный пайплайн по умолчанию работает только внутри gVisor‑контейнера с ограниченным egress (только доступ к Claude API).
  • Для командной работы Anthropic описала «план внедрения» на две недели: от первого статического скана до автономного цикла «сканирование → triage → патчинг».

Антропик честно разделяет продукты: Claude Security — платный управляемый сервис, а Defending Code Reference Harness — открытый образец, как построить такую систему у себя.

Как это работает

Два уровня: интерактивные скиллы и автономный пайплайн

Репозиторий даёт два варианта работы:

  1. Интерактивные скиллы Claude Code:
    • /quickstart — быстрый онбординг и первый прогон по «канарейке» (демо‑таргет).
    • /threat-model — построение модели угроз и определение зоны атаки.
    • /vuln-scan — статический поиск уязвимостей по коду, с опорой на модель угроз.
    • /triage — проверка, дедупликация и ранжирование найденных проблем.
    • /patch — генерация кандидатных патчей по результатам triage.
    • /customize — перенос эталонного пайплайна на вашу технологическую стек и кодовую базу.

Эти скиллы работают в стиле «copilot для security»: вы запускаете команду в Claude Code, одобряете каждый шаг, а агент читает/пишет файлы в репозитории.

  1. Автономный пайплайн (harness/):
    • Полностью автоматизированный цикл recon → find → verify → report → patch.
    • Запускается внутри gVisor‑sandbox через bin/vp-sandboxed.
    • Из коробки настроен на C/C++ с ASAN и Docker.

Семь стадий пайплайна под капотом

Пайплайн внутри harness/ проходит через семь чётких этапов:

  1. Build

    • Собирает цель в Docker‑образ с включённым ASAN.
    • Использует Dockerfile таргета, компилятор clang и ASAN для детекта ошибок памяти.
  2. Recon

    • Лёгкий агент читает исходники в изолированном контейнере.
    • Предлагает разбиение на focus areas — отдельные подсистемы парсинга входных данных.
    • Это нужно, чтобы параллельные агенты find не гонялись за одним и тем же багом.
    • Если флаг --auto-focus не включён, пайплайн берёт focus_areas из config.yaml цели.
  3. Find

    • Несколько агентов запускаются параллельно, каждый в своём контейнере.
    • Каждый агент:
      • читает исходники,
      • генерирует «ломаные» входные данные,
      • гоняет бинарник с ASAN, пока не получит стабильный крэш (3 из 3 запусков).
  4. Verify

    • Отдельный агент‑грейдер поднимает новый контейнер.
    • Повторяет крэш, используя только proof of concept (PoC), который выдал агент find.
    • Это отсеивает баги, завязанные на случайное состояние окружения.
  5. Dedupe

    • Агент‑«судья» сравнивает подтверждённые крэши с уже найденными.
    • Решает, это новый баг, лучший пример старого или дубликат, который можно пропустить.
  6. Report

    • Агент‑репортёр пишет структурированный отчёт по каждой уникальной уязвимости.
    • В отчёте — класс примитива, достижимость, путь эскалации, серьёзность.
  7. Patch (отдельная команда)

    • Агент‑патчер генерирует патч.
    • Агент‑грейдер проверяет:
      • что код собирается,
      • что исходный PoC больше не падает,
      • что тесты таргета проходят,
      • что новый агент find не может обойти фикс.

Безопасность и sandbox

Anthropic жёстко разделила безопасные и опасные операции.

Безопасные скиллы (можно без sandbox, если вы одобряете каждый шаг):

  • /quickstart, /threat-model, /vuln-scan, /triage — только чтение и запись файлов.
  • /patch на статических результатах (TRIAGE.json или VULN-FINDINGS.json) — тоже только файловые операции.
  • /customize — меняет код harness и запускает команды проверки, но не исполняет целевой код автономно.

Опасные части (нужен gVisor):

  • Автономный пайплайн, включая /patch на результатах пайплайна, исполняет целевой код.
  • Поэтому он отказывается работать вне gVisor‑sandbox, если вы явно не переопределите это поведение.
  • gVisor‑контейнеры ограничены по сети: egress только к Claude API.

Подробности Anthropic вынесла в docs/security.md и docs/agent-sandbox.md.

Что это значит для вас

Для кого это вообще нужно

  1. Security‑команды и AppSec

    • Можно быстро собрать у себя внутренний «мини‑Claude Security».
    • Пайплайн помогает:
      • строить модель угроз,
      • искать баги в C/C++ с подтверждением через ASAN,
      • генерировать отчёты и патчи.
    • Подходит, если у вас уже есть CI/CD и контейнерная инфраструктура.
  2. Команды, пишущие на C/C++

    • Особенно если у вас много парсинга бинарных протоколов, медиаформатов, криптографии.
    • Пайплайн хорошо ложится на библиотеки уровня libpng, libjpeg, крипто‑библиотеки и т.п.
    • Можно запускать автономные волны сканирования и получать стабильные крэши + PoC.
  3. Инженеры, которые хотят встроить Claude в свои security‑процессы

    • Репозиторий показывает, как правильно:
      • разбить задачу на агентов,
      • построить промпты,
      • организовать sandbox и верификацию.
    • Это хороший шаблон, если вы строите свой продукт вокруг Claude API.

Где инструмент полезен

  • Быстрый старт с ИИ‑аудитом кода:

    • День 1: модель угроз, статический скан, triage, черновики патчей.
    • Без сложной инфраструктуры: всё через Claude Code и локальный репозиторий.
  • Автоматизированный fuzzing‑подобный поиск уязвимостей:

    • Автономный пайплайн с ASAN даёт не только подозрения, а воспроизводимые крэши.
    • Это удобно для баг‑баров и внутренних программ bug bounty.
  • Приоритизация и triage находок:

    • /triage умеет:
      • объединять дубликаты из разных запусков,
      • переоценивать серьёзность с учётом вашей модели угроз,
      • пытаться маршрутизировать баги владельцам компонентов.
  • Эксперименты с автопатчингом:

    • /patch генерирует фиксы и сразу прогоняет проверки.
    • Это не магия «почини всё одним кликом», но хороший способ получить рабочий черновик.

Где лучше не рассчитывать на чудо

  • Полностью автономный triage и патчинг ещё не решены до конца.

    • Anthropic прямо пишет: это остаётся проблемой.
    • Серьёзность и приоритет — это бизнес‑решения, которые ИИ за вас не примет.
    • Патчи не всегда подходят для апстрима, их нужно ревьюить.
  • Не все кодовые базы будут работать «из коробки».

    • Harness нацелен на C/C++ и память.
    • Для других языков и классов уязвимостей нужно настраивать:
      • что считается «сигналом находки» (исключение, запись в файл‑канарейку, DNS‑колбек и т.п.),
      • как выглядит PoC (HTTP‑последовательность, транзакции, тестовый хук),
      • как собирать и запускать цель в контейнере.
  • Без инженерного времени пользы не будет.

    • Anthropic прямо закладывает 1–2 недели на то, чтобы команда:
      • разобралась в пайплайне,
      • адаптировала его к своей инфраструктуре,
      • выстроила регулярные волны сканирования и патчинга.

Доступность и ограничения

  • Репозиторий открыт на GitHub и доступен из России.
  • Для полноценной работы нужен доступ к Claude API — напрямую или через Bedrock, Vertex AI, Azure.
  • Если ваш провайдер или Anthropic блокируют доступ из России, понадобится VPN или прокси‑слой в другой юрисдикции.
  • Нужны Docker и возможность запускать gVisor (то есть не всякий корпоративный ноутбук под строгой политикой подойдёт).

Место на рынке

Anthropic фактически делает две вещи:

  1. Продаёт готовый сервис Claude Security для компаний, которым нужен «под ключ» поиск и исправление уязвимостей в коде.
  2. Отдаёт в open source Defending Code Reference Harness как эталон, на котором можно строить свои пайплайны.

Прямых численных сравнений с другими решениями в исходных материалах нет, но можно обозначить позиционирование по функциям:

  • По сравнению с классическими SAST‑инструментами:

    • Здесь есть не только статический анализ, но и исполняемый пайплайн с ASAN, который даёт подтверждённые крэши.
    • Есть автогенерация патчей и отчётов через Claude.
    • Зато нет «коробочной» интеграции с десятками языков и фреймворков: нужно настраивать под свой стек.
  • По сравнению с полностью управляемыми security‑платформами:

    • Claude Security берёт на себя хостинг, сканирование нескольких проектов, управление жизненным циклом находок.
    • Harness — это конструктор, который вы сами запускаете, поддерживаете и интегрируете в CI/CD.
  • По сравнению с «ИИ‑копилотами» для кода:

    • Большинство копилотов помогает писать и рефакторить код.
    • Здесь фокус на поиске уязвимостей и их подтверждении с помощью автономных агентов.

Если у вас уже есть зрелый AppSec‑стек, harness ближе к «исследовательскому проекту» и базе для своих продуктов. Если вы только строите процессы, проще начать с управляемых решений вроде Claude Security и использовать репозиторий как учебник.

Установка

Репозиторий ставится стандартно через Git и Python‑виртуальное окружение.

git clone https://github.com/anthropics/defending-code-reference-harness
cd defending-code-reference-harness

claude
# 30-sec intro + guided first run on the canary target
> /quickstart
> /quickstart how do I port the pipeline to Java ?
> /quickstart how do I triage all these bugs ?

Безопасность и sandbox

Для автономного пайплайна нужно один раз настроить sandbox:

# One-time setup
python3 -m venv .venv && .venv/bin/pip install -e .
./scripts/setup_sandbox.sh # installs gVisor, builds the agent images, and verifies isolation; note: requires Docker

export ANTHROPIC_API_KEY=sk-ant-... # or CLAUDE_CODE_OAUTH_TOKEN; the pipeline requires one in env

После этого можно запускать пайплайн через bin/vp-sandboxed.

Как запустить

День 1: модель угроз, статический скан и triage

Anthropic предлагает начать с интерактивных скиллов. Они только читают и пишут файлы, sandbox не обязателен.

# Pin every subagent to the model you want
export CLAUDE_CODE_SUBAGENT_MODEL=<model-id>

claude
# 0. intro + guided first run
> /quickstart

# 1. Build a threat model (aim before you shoot)
> /threat-model bootstrap targets/canary

# 2. Run a static scan, scoped by that threat model
> /vuln-scan targets/canary

# 3. Verify, dedupe, and rank what came back
> /triage targets/canary/VULN-FINDINGS.json

# 4. Generate candidate fixes for the verified findings
> /patch ./TRIAGE.json --repo targets/canary

Этот поток создаёт артефакты:

  • THREAT_MODEL.md
  • VULN-FINDINGS.{json,md}
  • TRIAGE.{json,md}
  • директорию PATCHES/ с кандидатными патчами.

На демо‑таргете (targets/canary) /triage может отбросить все находки как ложные. Файл entry.c специально уязвим, а /triage умеет игнорировать тестовый/фикстурный код.

Чтобы увидеть полный цикл confirm/dedupe/false positive, можно запустить:

/triage .claude/skills/triage/fixtures/canary-findings.json --repo targets/canary

или направить Step 1‑скиллы на ваш код.

День 2: первый автономный запуск на C/C++ библиотеке

Дальше Anthropic предлагает перейти от ручных скиллов к автономному пайплайну.

# Run the recon → find → verify → report loop
bin/vp-sandboxed run drlibs --model <model-id> --runs 3 --parallel --stream --auto-focus

# Generate a candidate patch for each finding
bin/vp-sandboxed patch results/drlibs/<timestamp>/ --model <model-id>

# Or, ask Claude Code to launch the pipeline and watch the run for you
claude
> run the pipeline on drlibs and explain findings as they come

Результаты попадают в results/drlibs/<timestamp>/. С флагом --stream первые отчёты появятся в reports/bug_NN/ через несколько минут.

Команда run порождает автономных агентов. Каждый агент работает в gVisor‑контейнере с egress только к Claude API. Агент‑спавнящие подкоманды не стартуют вне sandbox, если вы явно не переопределите это.

Дни 3–5: кастомизация пайплайна под ваш сервис

Сначала прогоните Step 1‑скиллы по вашему коду (они безопасны):

claude
> /quickstart how do I customize this for ~/code/my-service ?
> /threat-model bootstrap-then-interview ~/code/my-service
> /vuln-scan ~/code/my-service
> /triage ~/code/my-service/VULN-FINDINGS.json --repo ~/code/my-service

Затем используйте полученные артефакты в /customize, который подправит harness под вашу кодовую базу:

> /customize use ~/code/my-service/{THREAT_MODEL.md,VULN-FINDINGS.json} and ./TRIAGE.md

После этого появится директория targets/my-service/. Проверить её можно «smoke‑запуском» пайплайна:

bin/vp-sandboxed run my-service --model <model-id> --runs 1

В docs/customizing.md описано, какие файлы меняются и зачем.

Неделя 2: регулярные волны сканирования, triage и патчинг

Когда таргет готов, можно запускать полноценный цикл.

# Scan - run a wave of parallel runs against your target
bin/vp-sandboxed run my-service --model <model-id> --runs 5 --parallel --stream --auto-focus

# Triage - dedupe and rank every finding across all waves using your threat model
> /triage results/my-service/ --repo ~/code/my-service --auto --votes 5

# Patch - generate and validate fixes, starting with what triage ranked the highest
> /patch results/my-service/<timestamp>/ --model <model-id>

Здесь важно соблюдать те же правила sandbox, что и на шаге 2.

Каждый отдельный запуск пайплайна уже сам верифицирует и дедуплицирует свои находки. /triage, запущенный на results/, работает поверх этого: объединяет дубликаты между разными волнами и статическими результатами /vuln-scan, пересчитывает серьёзность с учётом вашей модели угроз и пытается раздать баги владельцам компонентов.

Быстрая доставка патчей делает внешний цикл продуктивнее: когда найденные баги закрыты, модель переключается на новые, обычно более глубокие проблемы. Со временем количество находок падает, а их сложность растёт.

Anthropic подчёркивает, что полностью автономный triage и патчинг пока недостижимы. /patch поднимает планку качества, но решение о приоритете и финальной интеграции патчей всё равно принимает ваша команда. Многие партнёры называют именно эти шаги основным «узким местом» и закладывают на них ощутимое инженерное время.

Куда развиваться дальше

После первоначального онбординга команды, с которыми работает Anthropic, обычно вкладываются в несколько направлений:

  • Углубление интеграции с CI/CD и системами учёта задач.
  • Расширение набора таргетов и языков, для которых настроен пайплайн.
  • Тонкая настройка threat‑моделей и правил triage под свой риск‑профиль.
  • Эксперименты с новыми детекторами (не только ASAN) и сигналами находок.

Defending Code Reference Harness в этом смысле — не готовый продукт, а рабочий чертёж. Если вы уже используете Claude в разработке, это хороший способ научить его не только писать код, но и системно искать и закрывать уязвимости в ваших проектах.


Читайте также