Files
portal/docs/security/infosec-vet.md
T

351 lines
28 KiB
Markdown
Raw Normal View History

# Провенанс-вет внешних инструментов 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 плана как единственный авторитетный источник «какой репозиторий/версию устанавливать».
---
## Методология вета
Для каждого инструмента:
1. Прочитан README + ключевые исходники через GitHub API / WebFetch (факты, не память).
2. Проверены: репозиторий, владелец/организация, лицензия, звёзды, активность коммитов, дата последнего релиза.
3. Оценено: что инструмент **исполняет** (методы, сетевые вызовы, телеметрия, аутентификация).
4. Для кандидатов с неприемлемым провенансом — зафиксирована причина отклонения.
Все данные получены из 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-assignment
- `XSSAnalyzer.php` — XSS-защита
- `FilePermissionsAnalyzer.php`, `PHPIniAnalyzer.php`, `EnvAccessAnalyzer.php`
- `VulnerableDependencyAnalyzer.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](https://github.com/enlightn/enlightn/pull/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~~ | `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~~ | `cyproxio/mcp-for-security` | MIT | **Официально deprecated** 30.03.2026: «no longer actively maintained» | **ОТКЛОНЁН** | — |
| 69 | ~~addcontent/nuclei-mcp~~ | `addcontent/nuclei-mcp` | MIT | Анонимный владелец (нет bio/company/location), заброшен 9+ мес, placeholder в README | **ОТКЛОНЁН** | — |
| 70 | ~~Enlightn~~ | `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 для нашего случая:**
1. **Go-бинарь** (как Nuclei #69) → НЕТ ограничения `composer.json` по версии Laravel → работает на Laravel 13 без хаков (`--ignore-platform-reqs` не нужен).
2. MIT, named author, активно рекомендуется (Laravel News, 2026), 316★.
3. Покрытие шире 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-20
- `gh api repos/zaproxy/zap-extensions/contents/addOns/mcp/CHANGELOG.md` — v0.0.1 released 2026-04-02; v0.1.0 current
- `gh api repos/zaproxy/zap-extensions/contents/addOns/mcp/src/main/java/org/zaproxy/addon/mcp/tools/` — 15 tool files listed
- `gh api repos/dtkmn/mcp-zap-server` — stars=54, Docker-зависимость подтверждена README
- `gh api repos/projectdiscovery/nuclei` — stars=28777, pushed_at=2026-05-20, license=MIT
- `gh api repos/projectdiscovery/nuclei/releases/latest` — v3.8.0, 2026-04-18
- `gh 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-org` placeholder
- `gh api users/addcontent` — bio=null, company=null, location=null
- `gh 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-05
- `gh api repos/enlightn/enlightn/contents/composer.json` — laravel/framework `^9.0|^10.0|^11.0`
- `gh 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