Многоагентная среда статического анализа безопасности приложений для ИИ-агентов программирования: картографирует кодовые базы, ищет классы уязвимостей, связывает и проверяет находки, а также формирует отчёты в форматах SARIF, JSON и PDF.
Многоагентный инструмент проверки безопасности приложений для Claude Code (а позднее и для других ИИ-агентов). Один навык-маршрутизатор направляет работу в полноценный конвейер наступательной безопасности, который картирует кодовую базу, ищет уязвимости с помощью базы знаний по каждому классу, выстраивает цепочки находок в эскалации, проверяет реальное воздействие и формирует отчёты в README / JSON / SARIF / doc / PDF.
Область применения: этот инструмент выполняет статический анализ (обзор исходного кода, трассировку потоков данных, построение PoC/полезных нагрузок) для кода, которым вы владеете или который уполномочены тестировать. Он не атакует живые сторонние системы.
security-harness/ # a plugin marketplace └── plugins/security-harness/ ├── skills/ │ ├── sh-router # single entry point - routes any appsec request │ ├── sh-security-review # the pipeline orchestrator (Stages 0-5) │ └── sh-kb-* (15) # per-vuln-class knowledge bases ├── agents/ │ ├── sh-recon # map: Graft graph + stack/SBOM/CVE + attack surface │ ├── sh-hunter # find: source→sink hunting, one per class (parallel) │ ├── sh-chainer # escalate: combine findings into attack chains │ ├── sh-verifier # confirm: offensive + seceng + dev verification + PoC │ └── sh-reporter # deliver: README/JSON/SARIF/HTML/PDF/doc └── references/ # shared contracts (finding schema, SARIF map, state files, rubrics)
### Охватываемые классы уязвимостей (навыки `sh-kb-*`)
access-control (IDOR/BOLA/priv-esc) · sqli · xss · ssrf · injection (cmd/code/SSTI/LDAP) · auth (session/JWT)
· deserialization · path-traversal (LFI/RFI) · secrets · csrf · xxe · open-redirect · crypto · race-conditions
· file-upload. Зависимые CVE/SBOM обрабатываются на этапе разведки.
## Установка
Харнесс поставляется для нескольких агентов. Полные сведения об упаковке и контрольный
список релиза находятся в [`docs/DISTRIBUTION.md`](https://github.com/dmdhrumilmistry/security-harness/blob/main/docs/DISTRIBUTION.md).
**Claude Code** — добавьте этот репозиторий как маркетплейс плагинов и установите плагин:```
/plugin marketplace add dmdhrumilmistry/security-harness
/plugin install security-harness
/plugin marketplace add принимает любой из вариантов: GitHub owner/repo (как выше), полный git URL
(https://github.com/dmdhrumilmistry/security-harness.git) или локальный путь к клону
(например, /plugin marketplace add ./security-harness из каталога, содержащего вашу копию).
Затем выполните /plugin install security-harness и перезагрузите по запросу.
Gemini CLI — нативное расширение, манифест в корне репозитория:```bash gemini extensions install https://github.com/dmdhrumilmistry/security-harness
**opencode, Codex или любой агент [agentskills.io](https://agentskills.io)** — скопируйте
навыки в каталог обнаружения. Codex дополнительно подхватывает `AGENTS.md` самостоятельно:```bash
git clone https://github.com/dmdhrumilmistry/security-harness
cd security-harness
python3 scripts/sync-agent-skills.py --install agents # ~/.agents/skills
python3 scripts/sync-agent-skills.py --install opencode # ~/.config/opencode/skills
Graft устанавливается и настраивается автоматически пайплайном. Этап 0 запускает npm install -g @nanonets/graft, если он отсутствует (требуется Node/npm), затем graft init <target> --no-agents --no-global
для регистрации MCP-сервера Graft и хуков свежести для целевого репозитория. Сам граф (<target>/graft/,
автоматически добавляемый в gitignore) строится во время разведки. Для ручной предварительной установки: npm install -g @nanonets/graft. Структурная сборка Graft бесплатна и не требует API-ключа; опциональный проход LLM --deep использует GRAFT_API_KEY /
GRAFT_PROVIDER / GRAFT_MODEL, если они заданы.
Остальные инструменты также автоматически устанавливаются Этапом 0 при их отсутствии (через любой доступный на машине менеджер пакетов — winget/choco/scoop, brew, apt, npm/pip/go — см. references/tooling-setup.md). Установки анонсируются, предпочитаются методы без повышения прав и они никогда не блокируют запуск: всё, что не удаётся установить, просто помечается как недоступное, и пайплайн переключается на резервный вариант. Этап 0 устанавливает только то, что заполняет отсутствующую группу возможностей:
syft · CVE: один из grype
(предпочтительно), trivy или osv-scannerwkhtmltopdf или pandoc (для PDF/DOCX); иначе вы получаете report.html (или PDF через headless-Chrome).Все они опциональны — пайплайн изящно деградирует до нативного поиска + разбора манифестов, если ничего не установлено.
Вызовите роутер с запросом на естественном языке:``` /sh-router full security review of ./api /sh-router find SQLi and IDOR in src/ /sh-router just map this codebase # recon only
Или вызовите конвейер напрямую:```
/sh-security-review . classes:sqli,access-control,ssrf depth:deep
/sh-security-review . stage:report # regenerate reports for the latest run
Каждый этап выполняется на модели, подобранной под его когнитивную нагрузку, поэтому токены тратятся там, где качество обнаружения действительно от них зависит, и экономятся на механической работе. Это поведение по умолчанию — аргументы не требуются.
| Этап | Модель по умолчанию |
|---|---|
| recon | sonnet |
| hunt (для каждого класса) | haiku для классов шаблонов (secrets, crypto, open-redirect, csrf) · sonnet для трассировки source→sink (sqli, xss, ssrf, injection, path-traversal, xxe, file-upload, auth) · opus для классов глубокой логики (access-control, race-conditions, deserialization) |
| chain | opus |
| verify | opus (шлюз точности — остаётся сильным) |
| report | haiku |
Переопределяется аргументом models: (также передаётся через роутер):```
/sh-security-review . # default tiered map above
/sh-security-review . models:max # every stage + hunter on opus (max quality, max cost)
/sh-security-review . models:cheap # aggressive downshift (trades some verify precision)
/sh-security-review . models:verify=opus,hunt=sonnet # per-stage overrides
/sh-security-review . models:report=sonnet,hunt.pattern=sonnet # per-hunter-tier override
Этапы: `setup, recon, hunt, chain, verify, report`. Модели: `opus, sonnet, haiku, inherit`. Для `hunt`
указание модели без уточнения сводит всех охотников к ней; `hunt.pattern` / `hunt.trace` / `hunt.logic` нацелены на один уровень.
Другие способы экономии токенов встроены: recon порождает охотников только для классов с реальной поверхностью атаки, охотники
запрашивают граф Graft вместо чтения целых файлов, а `findings.json`/SARIF генерируются
детерминированным скриптом, а не моделью.
### Вывод
Всё сохраняется в `<target>/.security-harness/<run-id>/`:
- `recon.md`, `codebase-map.json` — карта (стек, SBOM, CVE, поверхность атаки).
- `findings.jsonl` → `chains.md` → `verified.jsonl` — рабочее состояние (см. `references/state-files.md`).
- `reports/` — `README.md`, `findings.json`, `results.sarif`, `report.html`, `report.pdf` (+ `report.docx`).
Каждая опубликованная находка содержит полезную нагрузку, PoC, вердикт верификации, идентификаторы CWE/OWASP, CVSS и
митигацию на уровне кода.
## Ревью pull request
`sh-pr-review` проверяет отдельный pull request, а не всю кодовую базу, публикует
результат в виде inline-комментариев **в самом PR** и устанавливает статус коммита `security/pr-review`,
который может применяться branch protection.