
Сервер Model Context Protocol для автономного обнаружения уязвимостей
MCPwner — это сервер протокола контекста модели (MCP), который интегрирует инструменты тестирования безопасности в рабочие процессы на основе LLM. Он предоставляет единый интерфейс для сканирования секретов, статического анализа (SAST), анализа состава программного обеспечения (SCA), безопасности инфраструктуры как кода (IaC), фаззинга исходного кода, разведки, динамического тестирования безопасности приложений (DAST) и исследования уязвимостей, включая поиск 0-day.
Вместо ручного объединения инструментов и вставки результатов в вашу LLM, MCPwner стандартизирует и передаёт результаты непосредственно в рабочий контекст модели. Это обеспечивает непрерывное рассуждение, корреляцию и обнаружение путей атак на всём протяжении жизненного цикла исследования безопасности — от картирования поверхностей атак и выявления известных уязвимостей до обнаружения новых векторов атак.
Примечание: Этот проект находится в активной разработке. Узнайте больше о MCP здесь.
![]() | ![]() |
|---|
Следующие инструменты запланированы для будущих выпусков.
Генераторы гаджет-цепочек и полезных нагрузок для использования недостатков десериализации, выявленных в ходе SAST. Зрелые экосистемы гаджет-цепочек существуют для Java, .NET и PHP; Python охвачен генерацией вредоносных pickle-файлов (десериализация Ruby/Node основана на полезных нагрузках и находится в корпусе полезных нагрузок ниже):
Курированные корпуса полезных нагрузок и списков слов для поддержки вышеуказанных инструментов:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### Сканирование репозитория GitHub на предмет секретов```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### Анализ путей атаки```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## Установка
### Предварительные требования
**Системные требования:**
- Docker Engine 20.0+ и Docker Compose 2.0+
- 8 ГБ ОЗУ минимум (рекомендуется 16 ГБ для одновременного запуска нескольких инструментов)
- 20 ГБ свободного места на диске (образы инструментов безопасности имеют большой размер)
- Поддерживаемые платформы: Linux, macOS, Windows (с WSL2)
**MCP-клиент:**
- Claude Desktop, Cursor, Kiro или любой другой MCP-совместимый клиент
### Настройка
1. **Клонируйте репозиторий**: ```bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
После запуска контейнеров Docker добавьте MCPwner в ваш MCP-клиент:
Важно: динамическая регистрация инструментов
MCPwner использует модульную архитектуру с явным согласием. За безопасные инструменты отвечают profiles Docker Compose.
.env (COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc) определяет, какие контейнеры будут запущены. В качестве альтернативы вы можете изменить это и запустить определённые профили через CLI: docker compose --profile sast --profile dast up -d.semgrep), удалите его категорию (sast) из .env и вручную перечислите нужные вам инструменты (bandit,gosec,codeql).utilities (например, Linguist, WireMock, Chromium) считаются постоянными основными зависимостями. Они запускаются безусловно при docker compose up -d, чтобы критически важные меж-инструментальные зависимости (например, определение языка) всегда работали.Расположение файлов конфигурации:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.json в вашем проекте или каталоге настроекУстановка в один клик (требуется запущенный Docker):
Ручная настройка:
Добавьте следующее в ваш файл конфигурации MCP:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
Перезапустите ваш MCP-клиент, чтобы загрузить новую конфигурацию сервера.
### Сканирование локальных проектов
Чтобы сканировать проекты с вашего хоста, смонтируйте их в контейнер, добавив том в `docker-compose.yaml`:```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Затем используйте инструмент create_workspace с:
source_type="local"source="/mnt/projects/my-project"MCPwner автоматически сохраняет метаданные рабочей области и базы данных CodeQL при перезапусках контейнера, используя файловое хранилище в общем томе Docker (/workspaces/.metadata/). Конфигурация не требуется — система загружает существующие данные при запуске и сохраняет после каждой операции, используя атомарные записи для предотвращения повреждения.
Управление очисткой рабочей области:
Инструмент cleanup_workspace обеспечивает детальный контроль:
delete_files=True, delete_metadata=False - Освободить место на диске, но сохранить историю рабочей области (рекомендуется)delete_files=True, delete_metadata=True - Полное удаление рабочей области и метаданныхdelete_files=False, delete_metadata=True - Удалить из списка, но оставить файлы на дискеРезервное копирование:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## Архитектура
MCPwner использует HTTP-основанную связь между контейнерами для поддержки будущих удаленных развертываний. Хотя в настоящее время оптимизировано для локального использования, архитектура может быть адаптирована для удаленных серверных развертываний с минимальными изменениями.
**Принципы проектирования:**
- Изоляция контейнеров для выполнения инструментов безопасности
- Стандартизированные форматы вывода для потребления LLM (SARIF/JSON)
- Расширяемая архитектура плагинов для новых инструментов
- API без сохранения состояния (память управляется пользователем)
**Обзор архитектуры:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
MCPwner предоставляет следующие инструменты через интерфейс MCP:
Управление рабочими пространствами:
create_workspace — инициализация рабочего пространства сканирования из локального пути, Git-URL или репозитория GitHublist_workspaces — список всех доступных рабочих пространствcleanup_workspace — удаление рабочего пространства и связанных с ним данныхЖурнал находок:
Область действия — рабочее пространство, сохраняется на диск (<workspace>/findings/<id>.json) и всегда доступен — без необходимости в контейнере или проверке работоспособности. Это источник истины для многопроцессорного конвейера глубокого исследования: каждая гипотеза, результат PoC и заключение проверки представляют собой запись находки, а не прозу.
upsert_finding — создание или обновление находки. По умолчанию выполняет глубокое слияние с существующей записью, так что один агент может записать свой собственный подобъект (например, poc), не затирая поля другого агента (например, review)list_findings — список всех находок в рабочем пространстве, опционально отфильтрованных по status (например, poc-confirmed, review-approved)get_finding — получение одной находки по идентификаторуSAST (Статический анализ):
run_sast_scan — запуск инструментов статического анализа (Semgrep, Bandit, Gosec, Brakeman, PMD, Psalm, NodeJsScan, Joern, YASA)get_sast_report — получение результатов SAST-сканированияsast_list_tools — список доступных SAST-инструментовОбнаружение секретов:
run_secrets_scan — запуск инструментов сканирования секретов (Gitleaks, TruffleHog, Whispers, detect-secrets, Hawk-Eye)get_secrets_report — получение результатов сканирования секретовsecrets_list_tools — список доступных инструментов сканирования секретовSCA (Анализ состава программного обеспечения):
run_sca_scan — анализ зависимостей на наличие уязвимостей (Grype, Syft, OSV-Scanner, Retire.js)get_sca_report — получение результатов SCA-сканированияsca_list_tools — список доступных SCA-инструментовРекогносцировка:
run_reconnaissance_scan — запуск одного инструмента рекогносцировки (Subfinder, Amass, Nmap, Masscan, httpx, Katana, ffuf, bbot, gau, Arjun, wafw00f, Kiterunner)run_reconnaissance_chain — последовательное выполнение нескольких инструментов рекогносцировкиget_reconnaissance_report — получение результатов рекогносцировкиreconnaissance_list_tools — список доступных инструментов рекогносцировкиCodeQL:
detect_languages — определение языков в кодовой базе с помощью Linguistcreate_codeql_database — создание базы данных CodeQL для анализаlist_databases — список доступных баз данных CodeQLlist_query_packs — список доступных пакетов запросовexecute_query — выполнение конкретных запросов CodeQLБезопасность инфраструктуры и IaC:
run_iac_scan — сканирование инфраструктуры как кода на предмет неверных конфигураций (Checkov, KICS, Terrascan, TFSec, Hadolint)get_iac_report — получение результатов IaC-сканированияiac_list_tools — список доступных инструментов сканирования IaCФаззинг исходного кода:
run_fuzzing_scan — запуск кампании белого ящика с фаззингом, управляемым покрытием, против целевой обвязки (Atheris, Jazzer, Jazzer.js, PHP-Fuzzer)get_fuzzing_report — получение результатов краш-тестов фаззинга (краш-входные данные + стек вызовов)fuzzing_list_tools — список доступных движков фаззинга, отфильтрованных по обнаруженному языкуDAST (Динамическое тестирование безопасности приложений):
run_dast_scan — запуск инструментов динамического тестирования безопасности приложений (sqlmap, NoSQLMap, Commix, Dalfox, SSTImap, SSRFmap, jwt_tool, interactsh)get_dast_report — получение результатов DAST-сканированияdast_list_tools — список доступных DAST-инструментовУтилиты:
run_utilities_scan — запуск утилиты против живой цели (Linguist, WireMock, Mitmproxy, aiohttp, Headless Chromium)get_utilities_report — получение результатов сканирования утилитамиutilities_list_tools — список доступных утилит и их параметров конфигурацииМониторинг и проверка работоспособности:
health_check — проверка доступности сервера и инструментовlist_tools — список всех доступных инструментов и их статусMCPwner выполняет инструменты безопасности, которые могут выполнять интрузивные операции. Используйте только в системах и кодовых базах, которыми вы владеете или на которые имеете явное разрешение на тестирование — несанкционированный доступ незаконен. Ограничьте доступ к MCP-серверу только авторизованными пользователями и рассмотрите возможность сетевой изоляции для производственных развертываний. Просматривайте конфигурации инструментов перед запуском сканирования, так как некоторые инструменты могут генерировать значительный сетевой трафик или нагрузку на систему. Ведите журнал выполнения инструментов и результатов, помня, что сканирования безопасности могут вызывать срабатывания в системах мониторинга. Соблюдайте практику ответственного раскрытия информации при сообщении об уязвимостях, обнаруженных с помощью MCPwner. Регулярно обновляйте Docker-образы и сканируйте контейнеры на уязвимости. Никогда не сохраняйте ключи API, токены или учетные данные в файлах конфигурации — используйте переменные окружения или системы управления секретами.
Кроме того, вы должны сами отвечать за свою безопасность при запуске этих инструментов и доступе к сторонним библиотекам; рекомендуется запускать все в изолированной среде и без специальных прав доступа (минимизированной и защищенной, насколько это возможно).
![]() | ![]() | ![]() | ![]() |
|---|
| bbot | httpx | Katana | gau | Arjun |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| CodeQL | Psalm | Gosec | Bandit | Semgrep |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Brakeman | PMD | NodeJsScan | Joern | YASA |
![]() | ![]() | ![]() | ![]() |
|---|
| Atheris | Jazzer | Jazzer.js | PHP-Fuzzer |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Gitleaks | TruffleHog | detect-secrets | Whispers | Hawk-Eye |
![]() | ![]() | ![]() | ![]() |
|---|
| Grype | Syft | OSV-Scanner | Retire.js |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Checkov | KICS | Terrascan | TFSec | Hadolint |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| sqlmap | NoSQLMap | Commix | Dalfox | SSTImap |
![]() |
|---|
| SSRFmap | jwt_tool | interactsh |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Linguist | WireMock | Mitmproxy | aiohttp | Chromium w. Playwright |