- Дата публикации
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 — открытый образец, как построить такую систему у себя.
Как это работает
Два уровня: интерактивные скиллы и автономный пайплайн
Репозиторий даёт два варианта работы:
- Интерактивные скиллы Claude Code:
/quickstart— быстрый онбординг и первый прогон по «канарейке» (демо‑таргет)./threat-model— построение модели угроз и определение зоны атаки./vuln-scan— статический поиск уязвимостей по коду, с опорой на модель угроз./triage— проверка, дедупликация и ранжирование найденных проблем./patch— генерация кандидатных патчей по результатам triage./customize— перенос эталонного пайплайна на вашу технологическую стек и кодовую базу.
Эти скиллы работают в стиле «copilot для security»: вы запускаете команду в Claude Code, одобряете каждый шаг, а агент читает/пишет файлы в репозитории.
- Автономный пайплайн (harness/):
- Полностью автоматизированный цикл recon → find → verify → report → patch.
- Запускается внутри gVisor‑sandbox через
bin/vp-sandboxed. - Из коробки настроен на C/C++ с ASAN и Docker.
Семь стадий пайплайна под капотом
Пайплайн внутри harness/ проходит через семь чётких этапов:
-
Build
- Собирает цель в Docker‑образ с включённым ASAN.
- Использует
Dockerfileтаргета, компиляторclangи ASAN для детекта ошибок памяти.
-
Recon
- Лёгкий агент читает исходники в изолированном контейнере.
- Предлагает разбиение на focus areas — отдельные подсистемы парсинга входных данных.
- Это нужно, чтобы параллельные агенты find не гонялись за одним и тем же багом.
- Если флаг
--auto-focusне включён, пайплайн берётfocus_areasизconfig.yamlцели.
-
Find
- Несколько агентов запускаются параллельно, каждый в своём контейнере.
- Каждый агент:
- читает исходники,
- генерирует «ломаные» входные данные,
- гоняет бинарник с ASAN, пока не получит стабильный крэш (3 из 3 запусков).
-
Verify
- Отдельный агент‑грейдер поднимает новый контейнер.
- Повторяет крэш, используя только proof of concept (PoC), который выдал агент find.
- Это отсеивает баги, завязанные на случайное состояние окружения.
-
Dedupe
- Агент‑«судья» сравнивает подтверждённые крэши с уже найденными.
- Решает, это новый баг, лучший пример старого или дубликат, который можно пропустить.
-
Report
- Агент‑репортёр пишет структурированный отчёт по каждой уникальной уязвимости.
- В отчёте — класс примитива, достижимость, путь эскалации, серьёзность.
-
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.
Что это значит для вас
Для кого это вообще нужно
-
Security‑команды и AppSec
- Можно быстро собрать у себя внутренний «мини‑Claude Security».
- Пайплайн помогает:
- строить модель угроз,
- искать баги в C/C++ с подтверждением через ASAN,
- генерировать отчёты и патчи.
- Подходит, если у вас уже есть CI/CD и контейнерная инфраструктура.
-
Команды, пишущие на C/C++
- Особенно если у вас много парсинга бинарных протоколов, медиаформатов, криптографии.
- Пайплайн хорошо ложится на библиотеки уровня
libpng,libjpeg, крипто‑библиотеки и т.п. - Можно запускать автономные волны сканирования и получать стабильные крэши + PoC.
-
Инженеры, которые хотят встроить 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 недели на то, чтобы команда:
- разобралась в пайплайне,
- адаптировала его к своей инфраструктуре,
- выстроила регулярные волны сканирования и патчинга.
- Anthropic прямо закладывает 1–2 недели на то, чтобы команда:
Доступность и ограничения
- Репозиторий открыт на GitHub и доступен из России.
- Для полноценной работы нужен доступ к Claude API — напрямую или через Bedrock, Vertex AI, Azure.
- Если ваш провайдер или Anthropic блокируют доступ из России, понадобится VPN или прокси‑слой в другой юрисдикции.
- Нужны Docker и возможность запускать gVisor (то есть не всякий корпоративный ноутбук под строгой политикой подойдёт).
Место на рынке
Anthropic фактически делает две вещи:
- Продаёт готовый сервис Claude Security для компаний, которым нужен «под ключ» поиск и исправление уязвимостей в коде.
- Отдаёт в 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.mdVULN-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 в разработке, это хороший способ научить его не только писать код, но и системно искать и закрывать уязвимости в ваших проектах.