Enlightn abandoned (Packagist) + no Laravel 13 support. User chose to find a replacement. Ward (Eljakani/ward, Go, MIT, 316★) — same niche, Go binary so no Laravel-version dependency. infosec-vet.md §ПЕРЕСМОТР #70 + spec/plan amendment notes. Node #70 keeps number/niche; tool + type change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
28 KiB
Провенанс-вет внешних инструментов A8 infosec-tooling (IS9)
Дата: 2026-05-21 Вет-код: IS9 (согласно ADR-003 + spec §8) Инструменты: #68 OWASP ZAP MCP, #69 Nuclei MCP, #70 Enlightn Статус: ЗАВЕРШЁН
Назначение документа
Перед установкой любого внешнего инструмента в раздел A8 «Информационная безопасность» выполнен обязательный провенанс-вет (IS9). Основание: ~13 % security-скилов из маркетплейсов несут критичные дефекты, часть пытается красть учётные данные (исследование ToxicSkills, Snyk + SentinelOne 2025). ADR-003 закрепляет принцип: community-инструменты с непроверенным происхождением — defer (именно так были отложены «Claude Code Canary» и «Plugin Security Auditor» в D3).
Документ является артефактом IS9 и читается в Tasks 2–4 плана как единственный авторитетный источник «какой репозиторий/версию устанавливать».
Методология вета
Для каждого инструмента:
- Прочитан README + ключевые исходники через GitHub API / WebFetch (факты, не память).
- Проверены: репозиторий, владелец/организация, лицензия, звёзды, активность коммитов, дата последнего релиза.
- Оценено: что инструмент исполняет (методы, сетевые вызовы, телеметрия, аутентификация).
- Для кандидатов с неприемлемым провенансом — зафиксирована причина отклонения.
Все данные получены из GitHub API (gh api) и WebFetch на дату 2026-05-21. Ссылки указывают на конкретные SHA/теги там, где пин-версия зафиксирована.
#68 — OWASP ZAP MCP (слот DAST)
Кандидат A: официальный ZAP «MCP Integration» add-on
Репозиторий: zaproxy/zap-extensions (org: zaproxy, Apache-2.0)
Родительский проект: zaproxy/zaproxy — OWASP ZAP by Checkmarx
| Параметр | Значение |
|---|---|
| Владелец | Организация zaproxy (OWASP-проект, под управлением Checkmarx с 2022) |
| Лицензия | Apache-2.0 |
| Звёзды (zaproxy/zaproxy) | 15 152 (2026-05-21) |
| Последний коммит в zaproxy | 2026-05-20 (вчера) |
| Статус add-on MCP | v0.1.0, alpha, опубликован 2026-04-02 |
| Релиз zap-extensions | непрерывный (20.05.2026 — webdriver-related releases, 08.05.2026 — automation-v0.60.0) |
Что исполняет (код прочитан):
Источники: addOns/mcp/src/main/java/org/zaproxy/addon/mcp/tools/
Add-on экспонирует 15 MCP-инструментов, все — обращения к локальному ZAP-инстансу по API:
ZapStartScanTool,ZapStartActiveScanTool,ZapStartSpiderTool,ZapStartAjaxSpiderTool— запускают сканирование указанного URL.ZapGetActiveScanStatusTool,ZapGetPassiveScanStatusTool,ZapGetSpiderStatusTool,ZapGetAjaxSpiderStatusTool— читают статус.ZapStopActiveScanTool,ZapStopAjaxSpiderTool,ZapStopSpiderTool— останавливают сканирование.ZapCreateContextTool— создаёт контекст сканирования.ZapGenerateReportTool— генерирует отчёт.ZapInfoTool,ZapVersionTool— информационные.
Весь трафик идёт только к локальному ZAP-инстансу (ZAP API). Никаких внешних URL, токенов или телеметрии в исходниках нет. Это add-on к самому ZAP — не standalone-сервер.
Особенности:
- Статус «alpha» (v0.1.0) — API будет меняться. Официальный блог-пост Simon Bennetts (автора ZAP) от 02.04.2026 предупреждает: «alpha release».
- Устанавливается как ZAP add-on через Marketplace ZAP, не как отдельный MCP-сервер.
- Требует запущенного ZAP-демона (
zaproxy -daemon -port 8080 -config api.key=<key>). - Конфигурация
.mcp.jsonбудет направлять Claude к локальному ZAP API (не к внешнему сервису).
Провенанс-вывод: Провенанс МАКСИМАЛЬНО ЧИСТЫЙ. OWASP + Checkmarx — индустриально признанный security-проект с 15 000+ звёзд и непрерывной активностью. Add-on разработан теми же людьми что и сам ZAP. Код исполняет ТОЛЬКО локальные ZAP API-вызовы.
Кандидат B: dtkmn/mcp-zap-server
| Параметр | Значение |
|---|---|
| Владелец | dtkmn — физическое лицо (Daniel Tse, см. ссылки в README на danieltse.org) |
| Лицензия | Apache-2.0 |
| Звёзды | 54 (2026-05-21) |
| Последний коммит | 2026-05-21 (вчера), v0.8.0 от 10.05.2026 |
| Стек | Java / Spring Boot + Docker Compose |
Что исполняет (README прочитан):
- Отдельный Spring Boot–сервис (Docker Compose), обёртывающий ZAP через HTTP.
- Запускается через
./dev.sh→ Docker Compose стек (ZAP + Spring Boot + Open WebUI + Juice Shop + Petstore). - MCP-endpoint:
http://localhost:7456/mcp. - Требует Docker — несовместимо с native-Windows без Docker Desktop/WSL2. Проект использует native-Windows без Docker (strategy:
project_phase1_strategy.md). - README явно: «This project is not affiliated with or endorsed by OWASP or the OWASP ZAP project».
- Ряд коммитов вида «docs: add sponsorship information to README» (3 из 5 последних), 6 открытых issues.
Провенанс-вывод: Один разработчик, не аффилирован с OWASP, требует Docker. Для нашего native-Windows стека технически несовместим. Дополнительно: провенанс значительно слабее кандидата A.
Решение для #68
ПРИНЯТ Кандидат A — официальный ZAP MCP add-on (zaproxy/zap-extensions, addOns/mcp)
| Поле | Значение |
|---|---|
| Источник | zaproxy/zap-extensions, путь addOns/mcp/ |
| Текущая версия | v0.1.0 (alpha), выпущен 2026-04-02 |
| Pin | add-on устанавливается через ZAP Marketplace — pin по текущей версии в .zap/ конфиге |
| Лицензия | Apache-2.0 |
| Ограничение | alpha-статус: API ещё нестабильно; задокументировать в docs/security/zap-setup.md |
| Кандидат B | ОТКЛОНЁН (Docker-зависимость несовместима с native-Windows; провенанс слабее) |
#69 — Nuclei MCP (слот широкого сканирования)
Движок: projectdiscovery/nuclei
| Параметр | Значение |
|---|---|
| Владелец | Организация projectdiscovery (специализированная security-компания) |
| Лицензия | MIT |
| Звёзды | 28 777 (2026-05-21) |
| Последний коммит | 2026-05-20 |
| Последний релиз | v3.8.0 от 2026-04-18 |
| Телеметрия | Нет по умолчанию; -dashboard флаг для опциональной загрузки результатов в PD Cloud — не активируем |
Движок — чистый провенанс. MIT, активно разрабатывается, 28k+ звёзд.
Кандидат A: cyproxio/mcp-for-security (nuclei-mcp)
| Параметр | Значение |
|---|---|
| Владелец | cyproxio — организация, но... |
| Статус | DEPRECATED — последний коммит 2026-03-30 с сообщением «deprecate: migrate to Bolt. This repository is no longer actively maintained» |
| Лицензия | MIT |
| Звёзды | 611 |
Провенанс-вывод: Репозиторий официально заброшен автором 30.03.2026. Устанавливать депрекированный wrapper-сервер в раздел безопасности — нарушение принципа ADR-003 («community-инструменты с непроверенным происхождением — defer»). ОТКЛОНЁН.
Кандидат B: addcontent/nuclei-mcp
| Параметр | Значение |
|---|---|
| Владелец | addcontent — физическое лицо, 34 публичных репозитория, аккаунт создан 2020-01-11, bio/company/location не заполнены |
| Лицензия | MIT |
| Звёзды | 47 (2026-05-21) |
| Последний коммит | 2025-08-04 (~9 месяцев назад) |
| Последний релиз | v0.1.0 (alpha), 2025-08-04 |
Анализ кода (прочитан go.mod + README):
- Зависит от
projectdiscovery/nuclei/v3 v3.4.7(не самая свежая, v3.8.0 вышла в апреле 2026). - README содержит placeholder
github.com/your-org/nuclei-mcpв Install-инструкциях — признак того, что репозиторий собран по шаблону и не дорабатывался. - Владелец анонимен: нет bio, нет company, нет location, нет признаков профессиональной security-деятельности.
- Последняя активность — 9 месяцев назад (alpha-статус, неполный README).
Провенанс-вывод: Анонимный владелец + заброшенный (9 месяцев без активности) + остатки placeholder-текста в README = непрозрачный провенанс. ОТКЛОНЁН по критерию ADR-003.
Решение для #69: собственная тонкая обвязка (self-authored wrapper)
Оба сторонних wrapper'а отклонены (один — deprecated, другой — анонимный/заброшенный). Движок projectdiscovery/nuclei (MIT, 28k+ звёзд) — чистый. Доступен как Go-бинарь nuclei.exe.
Решение: Запускать nuclei.exe напрямую через тонкую self-authored обвязку в .mcp.json — простой command/args MCP-блок, вызывающий бинарь с нужными флагами. Этот подход:
- Минимизирует attack surface (нет чужого обёрточного кода между Claude и
nuclei.exe). - Является стандартной практикой для CLI-инструментов без готового MCP-сервера.
- Не требует установки дополнительного npm/go-пакета.
- Nuclei.exe — чистый MIT-бинарь от projectdiscovery (известная security-компания).
| Поле | Значение |
|---|---|
| Источник движка | projectdiscovery/nuclei, релиз v3.8.0 |
| URL | https://github.com/projectdiscovery/nuclei/releases/tag/v3.8.0 |
| Pin | v3.8.0 (Windows бинарь: nuclei_3.8.0_windows_amd64.zip) |
| Лицензия | MIT |
| Wrapper | Self-authored (.mcp.json блок с command: "nuclei.exe", args: [...]) |
| Оба кандидата-wrapper | ОТКЛОНЕНЫ (deprecated / анонимный провенанс) |
#70 — Enlightn (слот Laravel security-конфигурации)
enlightn/enlightn
| Параметр | Значение |
|---|---|
| Владелец | Организация enlightn (Enlightn Software, Paras Malhotra) |
| Лицензия | LGPL-3.0 (основной пакет), MIT (security-checker sub-dep) |
| Звёзды | 987 (2026-05-21) |
| Последний релиз | v2.10.0 от 2024-04-05 (~13 месяцев назад) |
| Последний коммит | 2024-04-05 (~13 месяцев без коммитов) |
| Статус на Packagist | «abandoned and no longer maintained» |
Что проверяет (код прочитан, Security-анализаторы):
22 Security-анализатора в src/Analyzers/Security/:
AppDebugAnalyzer.php— APP_DEBUG не включён в продакшнеAppKeyAnalyzer.php— APP_KEY установленCSRFAnalyzer.php— CSRF-защита активнаEncryptedCookiesAnalyzer.php— куки зашифрованыHSTSHeaderAnalyzer.php— HSTS-заголовок установленHttpOnlyCookieAnalyzer.php— HttpOnly flag на кукахLoginThrottlingAnalyzer.php— rate-limit на форме входаMassAssignmentAnalyzer.php— защита от mass-assignmentXSSAnalyzer.php— XSS-защитаFilePermissionsAnalyzer.php,PHPIniAnalyzer.php,EnvAccessAnalyzer.phpVulnerableDependencyAnalyzer.php— CVE в зависимостяхFrontendVulnerableDependencyAnalyzer.php— CVE во frontend-зависимостях- И другие (FillableForeignKey, HashingStrength, UnguardedModels и пр.)
Плюс 19 Performance + 29 Reliability анализаторов (итого 70 в OSS; README заявляет «66» — расхождение несущественно).
Телеметрия: Пакет использует guzzlehttp/guzzle — HTTP-клиент. Sub-dep enlightn/security-checker (MIT) обращается к Security Advisories Database для получения актуальных данных CVE (кэширует локально). Это не телеметрия, а функциональный запрос (как Dependabot). Запрос ограничен базой advisory-данных, не содержит идентификаторов проекта. Outbound: ТОЛЬКО к advisory-db.
Критическое ограничение — совместимость с Laravel 13:
composer.json объявляет "laravel/framework": "^9.0|^10.0|^11.0". Laravel 13 вне объявленного диапазона.
- PR на Laravel 12 (#200, открыт 2025-02-17) — не смержен спустя 3 месяца активных просьб.
- Мейнтейнер не отвечает на issues и PR — множественные жалобы пользователей.
- Packagist: пакет помечен «abandoned».
- Последний коммит: 2024-04-05. Laravel 13 вышел в 2025.
Обходной путь: Composer позволяет установить с --ignore-platform-reqs или через форк. Существуют unofficial forks (напр. ivqonsanada/enlightn, exin/enlightn), но их провенанс — частные лица без верификации.
Провенанс самого пакета: Достаточный. Enlightn Software — реальная компания, Paras Malhotra — публичная личность, пакет с 987 звёздами и 3+ млн установок. Провенанс ПРИНЯТ.
Но функциональность заблокирована: несовместимость с Laravel 13 — технический блок.
Решение для #70
ПРИНЯТ С БЛОКЕРОМ — enlightn/enlightn v2.10.0, с условием по Laravel 13
| Поле | Значение |
|---|---|
| Источник | enlightn/enlightn |
| Pin-версия | v2.10.0 (последний стабильный) |
| Лицензия | LGPL-3.0 (совместима с проприетарным использованием) |
| Телеметрия | Нет; security-checker делает outbound к advisory-db (только CVE-данные) |
| Провенанс | Принят (Enlightn Software, публичный мейнтейнер) |
| Блокер | composer.json ограничивает laravel/framework ^9|^10|^11 — Laravel 13 НЕ входит |
| Путь установки | composer require enlightn/enlightn --dev --ignore-platform-reqs ИЛИ переключиться на форк exin/enlightn (Task 4 spike) |
| Альтернативные форки | ivqonsanada/enlightn, exin/enlightn — оба неверифицированы; провенанс NOT VETTED |
| Рекомендация | Task 4 — проверить --ignore-platform-reqs на реальной установке; если не работает — оценить форк или принять ограниченный subset работающих проверок |
Примечание для Task 4: Несмотря на объявленный диапазон, многие Laravel-пакеты фактически работают на версиях выше заявленного (особенно если Laravel 13 является minor evolution от 11). Задача Task 4 — подтвердить эмпирически. Если установка и php artisan enlightn работают — блокер снимается практически. Если нет — зафиксировать как IS-BLOCKED и рассмотреть форк exin/enlightn (отдельный провенанс-вет).
Итоговая таблица
| # | Инструмент | Репозиторий / источник | Лицензия | Провенанс-заметка | Вердикт | Pin-версия |
|---|---|---|---|---|---|---|
| 68 | OWASP ZAP MCP add-on | zaproxy/zap-extensions, addOns/mcp/ |
Apache-2.0 | OWASP + Checkmarx, 15k+ звёзд, непрерывная активность, код исполняет только локальные ZAP API-вызовы | ПРИНЯТ | v0.1.0 (alpha, устанавливается через ZAP Marketplace) |
| 68 | dtkmn/mcp-zap-server |
Apache-2.0 | Физ. лицо, 54 звезды, не аффилирован с OWASP; требует Docker (несовместим с native-Windows) | ОТКЛОНЁН | — | |
| 69 | Nuclei (self-authored wrapper) | projectdiscovery/nuclei v3.8.0 + own .mcp.json wrapper |
MIT | ProjectDiscovery org, 28k+ звёзд, активна; self-authored wrapper минимизирует attack surface | ПРИНЯТ | v3.8.0 |
| 69 | cyproxio/mcp-for-security |
MIT | Официально deprecated 30.03.2026: «no longer actively maintained» | ОТКЛОНЁН | — | |
| 69 | addcontent/nuclei-mcp |
MIT | Анонимный владелец (нет bio/company/location), заброшен 9+ мес, placeholder в README | ОТКЛОНЁН | — | |
| 70 | enlightn/enlightn |
LGPL-3.0 | Провенанс чистый, НО пакет abandoned (Packagist), composer.json не поддерживает Laravel 13, мейнтейнер не отвечает 3+ мес |
ОТКЛОНЁН → ЗАМЕНЁН на Ward (см. пересмотр ниже, 2026-05-21) | — | |
| 70 | Ward | Eljakani/ward |
MIT | El Jakani Yassine (named, 43 followers), 316★/19 forks, Laravel-News-featured; Go-бинарь → не зависит от версии Laravel (проблема Enlightn снята); локально (OSV.dev только для deps). Caveat: молодой (фев 2026), single-maintainer, без тегов-релизов | ПРИНЯТ (замена #70) | pin по commit SHA (релизов нет) |
Отклонённые провенанс-случаи — сводка
| Кандидат | Причина отклонения |
|---|---|
dtkmn/mcp-zap-server |
Docker-зависимость несовместима с native-Windows; провенанс — физ. лицо, 54 звезды |
cyproxio/mcp-for-security |
Официально deprecated автором 30.03.2026 |
addcontent/nuclei-mcp |
Анонимный владелец + 9 мес. без активности + placeholder-README = непрозрачный провенанс (ADR-003 критерий) |
Примечания к Task 2–4 (исполнитель)
- Task 2 (ZAP): Установить ZAP v2.17.0 (
zaproxy/zaproxy→ latest: v2.17.0, 2025-12-15) + MCP add-on через ZAP Marketplace →Tools > Add-ons > Search: MCP. Потребуется Java 17+. Задокументировать вdocs/security/zap-setup.md. - Task 3 (Nuclei): Скачать
nuclei_3.8.0_windows_amd64.zipиз https://github.com/projectdiscovery/nuclei/releases/tag/v3.8.0. Написать.mcp.jsonблок"nuclei"сcommand: "path/to/nuclei.exe". Задокументировать вdocs/security/nuclei-setup.md. - Task 4 (Enlightn):
composer require enlightn/enlightn:^2.10 --dev --ignore-platform-reqs. Проверить, чтоphp artisan enlightnзапускается и возвращает отчёт. Если работает — блокер практически снят. Если нет — зафиксировать вdocs/security/enlightn-setup.mdкак DEFERRED и провести отдельный вет дляexin/enlightn. - Форки Enlightn (
ivqonsanada/enlightn,exin/enlightn): не прошли вет в рамках этой задачи. Если нужны — провести отдельный IS9-вет как новый sub-артефакт.
ПЕРЕСМОТР #70: Enlightn → Ward (2026-05-21, решение заказчика)
Заказчик выбрал «подобрать замену на GitHub и Anthropic» вместо установки заброшенного Enlightn или неверифицированного форка.
Рассмотрены кандидаты-замены:
| Кандидат | Источник | Вердикт | Причина |
|---|---|---|---|
| Ward | Eljakani/ward (Go, MIT) |
ПРИНЯТ | Прямая замена ниши Enlightn; Go-бинарь → нет зависимости от версии Laravel |
| Larafence | larafence.com | ОТКЛОНЁН | Не выпущен (Q2 2026) + TALL/Livewire-стек (у нас Vue) |
| Psalm + plugin-laravel taint | vimeo/psalm (MIT) |
НЕ для этого слота | Отличный, но это код-SAST (taint) — пересекается с Semgrep #25 (IS3); не config-сканер |
laravel/agent-skills |
laravel/agent-skills (official) |
НЕ scanner | Официальный (Taylor Otwell, 622★) и чистый, но это общий Laravel-скил (laravel/laravel-cloud/laravel-nightwatch), не security-сканер. Опциональное доп. позже, не замена #70 |
sickn33/laravel-security-audit, netresearch/security-audit-skill, edulazaro/laraclaude |
community-скилы | НЕ взяты | Риск ToxicSkills + individual-провенанс; для чувствительного слота не берём |
Ward — провенанс-вет (live gh api, 2026-05-21):
| Параметр | Значение |
|---|---|
| Репозиторий | Eljakani/ward |
| Описание | «Security scanner built for Laravel, detects misconfigurations, vulnerabilities, and exposed secrets with a beautiful TUI» |
| Лицензия | MIT (есть LICENSE) |
| Звёзды / форки | 316 / 19 |
| Язык | Go (бинарь) |
| Создан / последний коммит | 2026-02-15 / 2026-03-07 |
| Релизы | нет тегов → pin по commit SHA |
| Владелец | El Jakani Yassine (named, 43 followers, аккаунт с 2019) |
| Что сканирует | .env (8 проверок) + config/*.php (13) + deps (OSV.dev live) + код (7 категорий: secrets/injection/XSS/debug-артефакты/crypto/config CORS-CSRF-mass-assignment/auth) |
| Сеть | Локально; OSV.dev только для deps (как Enlightn security-checker — не телеметрия) |
Почему Ward лучше Enlightn для нашего случая:
- Go-бинарь (как Nuclei #69) → НЕТ ограничения
composer.jsonпо версии Laravel → работает на Laravel 13 без хаков (--ignore-platform-reqsне нужен). - MIT, named author, активно рекомендуется (Laravel News, 2026), 316★.
- Покрытие шире Enlightn: env + config + deps + код.
Caveat (зафиксирован): молодой проект (3 мес), single-maintainer, без тегов-релизов. Митигация: pin по commit SHA; MIT → можно форкнуть при забрасывании. Записать в docs/security/ward-setup.md (Task 4).
Эффект на план: слот #70 меняет инструмент Enlightn → Ward. Номер #70 и ниша (Laravel config security scanner) сохраняются. Тип меняется: было «Composer dev-dep + php artisan enlightn», стало «Go-бинарь CLI ward (как Nuclei/gitleaks/Trivy)». Граница IS3 (config-сканер vs Larastan #12 типы / Semgrep #25 generic-паттерны) сохраняется. Task 4 переписывается под Ward.
Верификация данных
Все факты получены из live-запросов GitHub API и WebFetch на 2026-05-21:
gh api repos/zaproxy/zaproxy— stars=15152, pushed_at=2026-05-20gh api repos/zaproxy/zap-extensions/contents/addOns/mcp/CHANGELOG.md— v0.0.1 released 2026-04-02; v0.1.0 currentgh api repos/zaproxy/zap-extensions/contents/addOns/mcp/src/main/java/org/zaproxy/addon/mcp/tools/— 15 tool files listedgh api repos/dtkmn/mcp-zap-server— stars=54, Docker-зависимость подтверждена READMEgh api repos/projectdiscovery/nuclei— stars=28777, pushed_at=2026-05-20, license=MITgh api repos/projectdiscovery/nuclei/releases/latest— v3.8.0, 2026-04-18gh api repos/cyproxio/mcp-for-security/commits— последний коммит 2026-03-30 «deprecate: migrate to Bolt»gh api repos/addcontent/nuclei-mcp— stars=47, pushed_at=2025-08-04; README содержитyour-orgplaceholdergh api users/addcontent— bio=null, company=null, location=nullgh api repos/enlightn/enlightn— stars=987, pushed_at=2024-06-15, license=NOASSERTION (LGPL)gh api repos/enlightn/enlightn/releases/latest— v2.10.0, 2024-04-05gh api repos/enlightn/enlightn/contents/composer.json— laravel/framework^9.0|^10.0|^11.0gh api repos/enlightn/enlightn/issues/200— Laravel 12 PR открыт 2025-02-17, не смержен- WebFetch
zaproxy.org/blog/2026-04-02-zap-mcp-server/— alpha announcement, Simon Bennetts - WebFetch
raw.githubusercontent.com/enlightn/enlightn/master/README.md— 66 OSS checks, abandoned status - WebFetch
raw.githubusercontent.com/enlightn/enlightn/master/LICENSE.md— LGPL-3.0, Copyright Enlightn Software / Paras Malhotra - WebFetch
raw.githubusercontent.com/projectdiscovery/nuclei/main/README.md— MIT, optional cloud dashboard, no default telemetry