Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CVE Analyzer Agent

Мультиагентный LLM-анализатор уязвимостей: по CVE ID тянет данные из NVD, объясняет уязвимость простыми словами, оценивает риск и предлагает шаги устранения — одним отчётом за ~15 секунд.

Live Demo

Architecture

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 запрещено выдумывать метрики: промпты требуют строго следовать данным, а уровень риска считается детерминированно по реальному баллу.

Stack

  • Python 3.12
  • LangGraph — оркестрация агентов (StateGraph)
  • LangChain / ChatOpenAI — LLM-вызовы (DeepSeek)
  • FastAPI — REST API
  • httpx — клиент NVD API
  • Pydantic — валидация

Quick Start

  1. Clone the repository:
   git clone https://github.com/Atsaev/cve-agent.git
   cd cve-agent
  1. Install dependencies:
   uv sync
  1. Create .env file:
DEEPSEEK_API_KEY=your_key_here
NVD_TOKEN=your_key_here
  1. Run the API:
   uv run main.py
  1. Open docs: http://localhost:8000/docs

API

POST /analyze

Принимает 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": "═══ ОТЧЁТ ПО УЯЗВИМОСТИ ... ═══"
}

GET /status — статус сервиса

GET /health — healthcheck

Security

Сервис сам ничего не исполняет: анализ — это внешние вызовы NVD API (read-only) и DeepSeek LLM. .env с ключами в .gitignore; NVD_TOKEN опционален (без него — rate limit NVD). Ключи не попадают в промпт и в ответы.

Project Structure

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)

About

Multi-agent CVE analyzer with LangGraph and DeepSeek

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages