Превращаем Claude в ИБ-аналитика с помощью CVE MCP Server

Каждый, кто хоть раз разбирал отчеты сканера уязвимостей, знает эту рутину. Прилетает алерт по условному CVE-2024-3400. Дальше открываешь базу NVD, чтобы глянуть базовый скор CVSS. Следом идет вкладка с EPSS, где нужно оценить вероятность реальной атаки в ближайший месяц. Потом открываешь каталог CISA KEV и проверяешь, эксплуатируют ли дыру прямо сейчас. Если уязвимость свежая, идешь на GitHub искать публичные proof-of-concept эксплойты. Десять вкладок в браузере, бесконечный копипаст идентификаторов и попытки свести все цифры в голове. Когда в бэклоге полсотни таких записей, рабочий день улетает в трубу.
Недавно наткнулся на репозиторий cve-mcp-server от разработчика Mahipal Jangra. Проект решает эту проблему через протокол MCP (Model Context Protocol). Вы подключаете сервер к Claude Desktop или Claude Code, после чего языковая модель получает прямой доступ к 28 инструментам безопасности и двум десяткам внешних источников данных.
Как устроен триаж через одну команду
Главная находка проекта заключается в оркестраторе triage_cve. Вместо того чтобы вручную опрашивать разные базы данных или заставлять модель последовательно дергать десяток утилит, вы задаете один прямой вопрос: «Нужно ли нам срочно патчить CVE-2024-3400?».
Claude делает один вызов triage_cve. Сервер параллельно опрашивает NVD, достает свежие метрики EPSS, сверяется с базой CISA KEV и ищет репозитории с кодом эксплойтов на GitHub. Если официальный API NIST NVD начинает сбоить или упирается в лимиты частоты запросов, сервер незаметно переключается на резервный источник VulnCheck NVD++.
После сбора фактов запускается локальный движок скоринга, который рассчитывает итоговый риск по шкале от 0 до 100:
Итоговый риск = (CVSS × 0.20) + (EPSS × 0.35) + (KEV × 0.30) + (PoC × 0.15)
В формулу заложена понятная инженерная логика:
- Метрика EPSS получила наибольший вес (35%), так как отражает статистическую вероятность реальной эксплуатации. Высокий CVSS 10.0 при минимальном EPSS 0.01 на практике редко требует бросать все задачи посреди ночи.
- Статус CISA KEV дает 30% веса, поскольку подтверждает факты атак в дикой природе.
- Базовый CVSS отвечает за теоретическую тяжесть последствий (20%).
- Наличие готового PoC добавляет 15%, так как снижает барьер входа для атакующих.
Если уязвимость уже числится в каталоге CISA KEV, срабатывает безусловный оверрайд. Итоговый скор автоматически поднимается минимум до 76 баллов со статусом CRITICAL, даже если первоначальный CVSS был скромным. При глубоком анализе с параметром depth="deep" сервер выдает дерево решений по методологии SSVC v2 от CISA, подсказывая конкретное действие: патчить немедленно (Act) или отложить до планового окна (Track).
Что умеет сервер без платных ключей
Приятный момент: проектом можно пользоваться сразу после клонирования репозитория. Четыре базовых источника работают вообще без API-токенов:
- расчет вероятности эксплуатации через EPSS,
- сверка со списком активных угроз CISA KEV,
- поиск уязвимостей в пакетах через OSV.dev,
- сопоставление техник с матрицей MITRE ATT&CK.
Если добавить бесплатный ключ NVD, лимит запросов к государственной базе вырастает с 5 до 50 за 30 секунд. Личный токен GitHub снимает жесткие ограничения на поиск публичных эксплойтов и advisory-отчетов.
Для глубокого расследования инцидентов предусмотрены сетевые интеграции. Подключив ключи от AbuseIPDB, GreyNoise, Shodan и VirusTotal, можно проверять репутацию подозрительных IP-адресов и вредоносных файлов прямо в окне чата.
Проверка зависимостей и сетевой разведки
Помимо триажа отдельных уязвимостей, сервер закрывает еще две частые задачи: аудит пакетов и проверку сетевых индикаторов компрометации.
С помощью инструмента scan_dependencies можно передать модели манифест с версиями библиотек. Сервер делает запрос к OSV.dev и возвращает список проблемных пакетов с рекомендациями по безопасным версиям.
Вы: Проверь зависимости: requests 2.28.0, flask 2.2.0, django 3.2.0, pillow 9.0.0
Claude: Найдено 12 уязвимостей.
Критические проблемы: Django 3.2.0 (SQL-инъекции) и Pillow 9.0.0 (heap overflow).
Рекомендация: обновите django до версии >=4.2.16, а pillow до >=10.3.0.
Если нужно проверить подозрительный адрес из логов веб-сервера, вызываются сетевые утилиты. Связка AbuseIPDB и GreyNoise покажет репутацию хоста, признак выходной ноды Tor и список конкретных CVE, под которые этот адрес сейчас сканирует периметр в интернете.
Архитектура и безопасность
Под капотом у проекта связка из Python 3.10+, библиотеки FastMCP, асинхронного HTTP-клиента httpx и базы aiosqlite для локального кеширования ответов. Кеш здорово экономит лимиты API: записи NVD живут локально 1 час, скоры EPSS хранятся 6 часов, а справочники MITRE ATT&CK сохраняются на сутки.
Разработчик внимательно отнесся к безопасности. Все сетевые соединения идут исключительно наружу по HTTPS, входящие порты по умолчанию не открываются. Внутри встроен фильтр приватных диапазонов: запросы к адресам 127.0.0.1, 10.0.0.0/8 или 192.168.0.0/16 отсекаются до отправки во внешние сервисы. Модель физически не сможет использовать сервер для разведки вашей внутренней инфраструктуры.
Для разбора XML задействован защищенный парсер defusedxml. Все вызовы фиксируются в локальном файле ~/.cve-mcp/audit.log, причем секретные токены и тела ответов в лог не попадают. По умолчанию сервер общается через stdio, но через переменную MCP_TRANSPORT=http его можно переключить в режим HTTP-сервиса и запаковать в Docker.
Как запустить
Установка занимает пару минут:
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
python -m venv venv
source venv/bin/activate
pip install -e .
Для подключения к Claude Desktop добавьте секцию в конфигурационный файл claude_desktop_config.json:
{
"mcpServers": {
"cve-mcp": {
"command": "python",
"args": ["-m", "cve_mcp.server"],
"cwd": "/абсолютный/путь/к/cve-mcp-server",
"env": {
"NVD_API_KEY": "ваш-ключ-nvd",
"GITHUB_TOKEN": "ghp_ваш-токен"
}
}
}
}
В Claude Code сервер регистрируется одной командой в терминале:
claude mcp add cve-mcp -- python -m cve_mcp.server
Ограничения и выводы
Утилита не занимается активным сканированием сети и ничего не пишет во внешние системы. Встроенный парсер векторов пока работает с формулой CVSS v3.1, оценки версии 4.0 выводятся в том виде, в котором их отдает NVD. Некоторые внешние API на бесплатных тарифах довольно скупы на квоты: GreyNoise дает всего 50 запросов в неделю, а VirusTotal ограничивает частоту четырьмя вызовами в минуту.
Репозиторий пригодится бэкенд-разработчикам, системным администраторам и небольшим командам безопасности, которым не хватает ресурсов на тяжелые коммерческие платформы вроде SOAR или Threat Intelligence. Вместо ручного блуждания по десятку сайтов вы получаете готовую сводку и обоснованный приоритет патчей за пару секунд.
Начать работу можно без единого ключа, а дополнительные токены прописать в .env позже, когда возникнет реальная необходимость.
