Мультиагентный LLM-анализатор уязвимостей: по CVE ID тянет данные из NVD, объясняет уязвимость простыми словами, оценивает риск и предлагает шаги устранения — одним отчётом за ~15 секунд.
- UI (лаборатория): https://atsaev-dev.ru/cve/
- API docs: https://atsaev-dev.ru/cve/docs
CVE input
↓
Analyst Agent — real metrics from NVD (code) + LLM объяснение СТРОГО по данным
↓
Risk Agent — deterministic CVSS level (code, реальный балл из NVD) + LLM оценка по EPSS
↓
Mitigation Agent — LLM: шаги устранения (срочность по уровню риска)
↓
Reporter Agent — deterministic: отчёт с реальными метриками (code)
Все метрики (CVSS v2/v3.1/v4, векторы, CWE) берутся напрямую из NVD, вероятность эксплуатации (EPSS) — из FIRST.org. LLM запрещено выдумывать метрики: промпты требуют строго следовать данным, а уровень риска считается детерминированно по реальному баллу.
- Python 3.12
- LangGraph — оркестрация агентов (StateGraph)
- LangChain / ChatOpenAI — LLM-вызовы (DeepSeek)
- FastAPI — REST API
- httpx — клиент NVD API
- Pydantic — валидация
- Clone the repository:
git clone https://github.com/Atsaev/cve-agent.git
cd cve-agent- Install dependencies:
uv sync- Create
.envfile:
DEEPSEEK_API_KEY=your_key_here
NVD_TOKEN=your_key_here
- DeepSeek API key: https://platform.deepseek.com
- NVD API key: https://nvd.nist.gov/developers/request-an-api-key
- Run the API:
uv run main.py- Open docs: http://localhost:8000/docs
Принимает CVE ID и (опционально) описание/severity/CVSS, возвращает полный анализ.
Example:
{
"cve_id": "CVE-2021-44228",
"description": "Log4Shell RCE in Apache Log4j",
"severity": "CRITICAL",
"cvss_score": 10.0
}Response:
{
"cve_id": "CVE-2021-44228",
"analysis": "...",
"risk_assessment": "CRITICAL — requires immediate action\n\n...",
"mitigation": "...",
"report": "═══ ОТЧЁТ ПО УЯЗВИМОСТИ ... ═══"
}Сервис сам ничего не исполняет: анализ — это внешние вызовы NVD API (read-only) и DeepSeek LLM. .env с ключами в .gitignore; NVD_TOKEN опционален (без него — rate limit NVD). Ключи не попадают в промпт и в ответы.
cve-agent/
├── agents/
│ └── analyzer.py — LangGraph-граф: 4 агента
├── api/
│ └── main.py — FastAPI application
├── models/
│ └── state.py — AgentState (TypedDict)
├── tools/
│ └── cve_tools.py — NVD-запрос, CVSS-уровень, формат отчёта
├── main.py — entry point
└── static/
└── index.html — landing page (UI)