Defending Code Reference Harness — автономный поиск и исправление уязвимостей с Claude

· 2 мин чтения
security llm claude vulnerability-scanning autonomous-agents ci-cd
📂 Исходный код на GitHub

Референсная реализация пайплайна автономного поиска и исправления уязвимостей (recon → find → verify → report → patch) на базе Claude. Включает интерактивные навыки Claude Code и кастомизируемый harness для C/C++ с поддержкой ASAN и gVisor-песочницы.

Defending Code Reference Harness — автономный поиск и исправление уязвимостей с Claude

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-песочницу.

Архитектура пайплайна

Автономный пайплайн проходит через семь стадий:

  1. Build — компиляция целевого проекта в Docker-образ с ASAN (детектор ошибок памяти для C/C++).
  2. Recon — lightweight-агент анализирует исходный код и предлагает разбиение на подсистемы для параллельного поиска.
  3. Find — N агентов работают параллельно, каждый в изолированном контейнере. Агент читает код, генерирует некорректные входные данные и запускает ASAN-бинарник, пока не получит стабильный краш (3 из 3 попыток).
  4. Verify — отдельный grader-агент воспроизводит краш в свежем контейнере. От find-агента к grader'у передаётся только proof-of-concept.
  5. Dedupe — judge-агент сравнивает подтверждённые краши с уже известными багами и определяет: новый баг, дубликат или улучшенный пример известного бага.
  6. Report — report-агент генерирует структурированный анализ эксплуатируемости: класс примитива, достижимость, путь эскалации, серьёзность.
  7. 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