Defending Code Reference Harness — автономный поиск и исправление уязвимостей с Claude
📂 Исходный код на GitHubРеференсная реализация пайплайна автономного поиска и исправления уязвимостей (recon → find → verify → report → patch) на базе Claude. Включает интерактивные навыки Claude Code и кастомизируемый harness для C/C++ с поддержкой ASAN и gVisor-песочницы.
Defending Code Reference Harness — открытый проект от Anthropic, представляющий собой референсную реализацию автономного пайплайна для поиска и устранения уязвимостей в исходном коде с помощью Claude. Проект основан на опыте работы Anthropic с командами безопасности нескольких организаций и включает как интерактивные навыки для Claude Code, так и полностью автоматизированный пайплайн.
Что внутри
Проект состоит из двух основных компонентов:
- Интерактивные навыки Claude Code —
/quickstart,/threat-model,/vuln-scan,/triage,/patch,/customize. Они работают в режиме чтения-записи файлов и не требуют песочницы. Подходят для моделирования угроз, статического сканирования, триажа и генерации патчей. - Автономный пайплайн (
harness/) — полный цикл recon → find → verify → report → patch, изначально настроенный на поиск уязвимостей памяти в C/C++ с использованием Docker и ASAN. Пайплайн запускается черезbin/vp-sandboxedи требует gVisor-песочницу.
Архитектура пайплайна
Автономный пайплайн проходит через семь стадий:
- Build — компиляция целевого проекта в Docker-образ с ASAN (детектор ошибок памяти для C/C++).
- Recon — lightweight-агент анализирует исходный код и предлагает разбиение на подсистемы для параллельного поиска.
- Find — N агентов работают параллельно, каждый в изолированном контейнере. Агент читает код, генерирует некорректные входные данные и запускает ASAN-бинарник, пока не получит стабильный краш (3 из 3 попыток).
- Verify — отдельный grader-агент воспроизводит краш в свежем контейнере. От find-агента к grader'у передаётся только proof-of-concept.
- Dedupe — judge-агент сравнивает подтверждённые краши с уже известными багами и определяет: новый баг, дубликат или улучшенный пример известного бага.
- Report — report-агент генерирует структурированный анализ эксплуатируемости: класс примитива, достижимость, путь эскалации, серьёзность.
- Patch — patch-агент пишет исправление, а grader проверяет: код собирается, исходный PoC больше не вызывает краш, тесты проходят, свежий find-агент не может обойти фикс.
Безопасность
Критически важный аспект проекта — изоляция агентов:
- Интерактивные навыки (
/threat-model,/vuln-scan,/triage,/patchна статических находках) только читают и пишут файлы — работают без песочницы. - Автономный пайплайн выполняет код цели, поэтому отказывается запускаться вне gVisor-песочницы. Каждый агент работает в контейнере с ограниченным egress (только Claude API).
- Настройка песочницы:
scripts/setup_sandbox.shустанавливает gVisor, собирает образы агентов и верифицирует изоляцию. Требуется Docker.
Быстрый старт
git clone https://github.com/anthropics/defending-code-reference-harness
cd defending-code-reference-harness
claude
# 30-секундное введение + первый запуск на canary-таргете
> /quickstart
# Моделирование угроз
> /threat-model bootstrap targets/canary
# Статическое сканирование
> /vuln-scan targets/canary
# Триаж находок
> /triage targets/canary/VULN-FINDINGS.json
# Генерация патчей
> /patch ./TRIAGE.json --repo targets/canary
Для автономного пайплайна:
python3 -m venv .venv && .venv/bin/pip install -e .
./scripts/setup_sandbox.sh
export ANTHROPIC_API_KEY=sk-ant-...
bin/vp-sandboxed run drlibs --model <model-id> --runs 3 --parallel --stream --auto-focus
bin/vp-sandboxed patch results/drlibs/<timestamp>/ --model <model-id>
Кастомизация
Хотя референс настроен на C/C++ и ASAN, архитектура пайплайна универсальна. Для адаптации под другой язык или класс уязвимостей нужно ответить на три вопроса:
| Вопрос | C/C++ (референс) | Ваш стек |
|---|---|---|
| Что сигнализирует о находке? | ASAN crash signature | exception / canary file / DNS callback |
| Как выглядит proof-of-concept? | crashing input file | HTTP-запросы / список транзакций / test harness |
| Как собрать и запустить таргет? | Dockerfile (clang + ASAN) |
ваш билд в контейнере |
Навык /customize модифицирует harness под ваш стек, создавая targets/<your-service>/ с нужной конфигурацией.
Рекомендуемый график внедрения
| Этап | Срок | Что делаем |
|---|---|---|
| Step 1 | День 1 | Модель угроз + статическое сканирование + триаж + черновики патчей |
| Step 2 | День 2 | Запуск автономного пайплайна на известно-уязвимой C/C++ библиотеке |
| Step 3 | Дни 3-5 | Кастомизация пайплайна под свой стек, smoke-тест |
| Step 4 | Неделя 2 | Автономное сканирование, триаж и патчинг в боевом режиме |
Что дальше
Anthropic рекомендует после первоначального ramp-up инвестировать в: приоритизацию репозиториев по критичности и истории CVE, выделенную инфраструктуру для сканирования, интеграцию в SDLC (регулярные или CI-сканирования), эксперименты с моделями.
Ссылки
- Репозиторий: https://github.com/anthropics/defending-code-reference-harness
- Блог-пост с best practices: https://claude.com/blog/using-llms-to-secure-source-code
- Companion cookbook (SDK-only): https://platform.claude.com/cookbook/claude-agent-sdk-06-the-vulnerability-detection-agent
- Claude Security (managed): https://claude.com/product/claude-security