<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh.md">简体中文</a> |
  <a href="README.zh-TW.md">繁體中文</a> |
  <a href="README.ko.md">한국어</a> |
  <a href="README.de.md">Deutsch</a> |
  <a href="README.es.md">Español</a> |
  <a href="README.fr.md">Français</a> |
  <strong>Italiano</strong> |
  <a href="README.da.md">Dansk</a> |
  <a href="README.ja.md">日本語</a> |
  <a href="README.pl.md">Polski</a> |
  <a href="README.ru.md">Русский</a> |
  <a href="README.bs.md">Bosanski</a> |
  <a href="README.ar.md">العربية</a> |
  <a href="README.no.md">Norsk</a> |
  <a href="README.pt-BR.md">Português (Brasil)</a> |
  <a href="README.th.md">ไทย</a> |
  <a href="README.tr.md">Türkçe</a> |
  <a href="README.uk.md">Українська</a> |
  <a href="README.bn.md">বাংলা</a> |
  <a href="README.el.md">Ελληνικά</a> |
  <a href="README.vi.md">Tiếng Việt</a> |
  <a href="README.hi.md">हिन्दी</a>
</p>

<p align="center">
  <br>
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-light.svg">
    <img alt="cve-mcp" src="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg" width="700">
  </picture>
</p>

<h3 align="center">Intelligence CVE e vulnerabilità per agenti IA.</h3>

<p align="center">
  NVD, EPSS, CISA KEV, GitHub Advisory, OSV, Shodan, VulnCheck, Vulners, Nuclei, Metasploit, CIRCL, AttackerKB e MITRE ATT&amp;CK &mdash; unificati in un unico server MCP.<br>
  Il tuo agente IA ottiene <b>intelligence sulle vulnerabilità su richiesta</b>, non un rapporto di 200 pagine.
</p>

<br>

<p align="center">
  <a href="#il-problema">Il problema</a> &bull;
  <a href="#in-cosa-è-diverso">In cosa è diverso</a> &bull;
  <a href="#avvio-rapido">Avvio rapido</a> &bull;
  <a href="#cosa-può-fare-lia">Cosa può fare l'IA</a> &bull;
  <a href="#riferimento-strumenti-41-strumenti">Strumenti</a> &bull;
  <a href="#fonti-dati">Fonti dati</a> &bull;
  <a href="#architettura">Architettura</a> &bull;
  <a href="CONTRIBUTING.md">Contribuire</a> &bull;
  <a href="CHANGELOG.md">Changelog</a>
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/cve-mcp"><img src="https://img.shields.io/npm/v/cve-mcp.svg" alt="npm"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
  <img src="https://img.shields.io/badge/runtime-Bun-f472b6" alt="Bun">
  <img src="https://img.shields.io/badge/protocol-MCP-8b5cf6" alt="MCP">
  <img src="https://img.shields.io/badge/tools-41-f97316" alt="41 Tools">
  <img src="https://img.shields.io/badge/sources-11-ef4444" alt="11 Sources">
</p>

---

## Il problema

L'intelligence sulle vulnerabilità è dispersa in molteplici database. NVD contiene i dettagli CVE. EPSS indica la probabilità di sfruttamento. CISA KEV traccia le vulnerabilità attivamente sfruttate. GitHub Advisory copre i pacchetti open source. OSV mappa le vulnerabilità a versioni specifiche dei pacchetti. Shodan traccia l'esposizione su internet. Nuclei e Metasploit indicano se esiste un exploit funzionante. Nessuno strumento singolo le aggrega, e nessuno funziona con gli agenti IA.

```
Flusso di lavoro tradizionale:
  cercare dettagli CVE su NVD              →  navigare un'interfaccia web macchinosa
  verificare il rischio di sfruttamento EPSS →  API separata, formato separato
  controllare lo stato CISA KEV            →  scaricare manualmente un feed JSON
  cercare gli avvisi GitHub                →  ancora un'altra interfaccia
  interrogare OSV per l'impatto sui pacchetti →  API diversa, schema diverso
  verificare Shodan per l'esposizione      →  abbonamento separato
  cercare exploit Nuclei/MSF               →  ricerca manuale su GitHub
  mappare alle tecniche ATT&CK             →  ricerca separata su MITRE
  correlare tutto                          →  copiare e incollare in un foglio di calcolo
  ──────────────────────────────────
  Totale: più di 30 minuti per CVE, ancora di più per il triage massivo
```

**cve-mcp** fornisce al tuo agente IA 41 strumenti tramite il [Model Context Protocol](https://modelcontextprotocol.io). L'agente interroga 11 fonti in parallelo, correla i dati, rileva segnali di armamentizzazione, calcola i punteggi di rischio e ti dice esattamente cosa conta.

```
Con cve-mcp:
  Tu: "Prioritizza questi 10 CVE per rischio reale di sfruttamento"

  Agente: → recupera i punteggi CVSS da NVD
          → ottiene la probabilità di sfruttamento EPSS per ciascuno
          → verifica CISA KEV per lo sfruttamento attivo
          → incrocia gli avvisi GitHub per le patch
          → "3 sono critici: CVE-2024-3400 (EPSS 97%, in KEV),
             CVE-2023-44487 (HTTP/2 Rapid Reset, EPSS 96%),
             CVE-2021-44228 (Log4Shell, EPSS 97%, in KEV).
             Ecco le patch e le versioni interessate..."
```

---

## In cosa è diverso

Gli strumenti esistenti forniscono dati grezzi. cve-mcp dà al tuo agente IA la capacità di ragionare sulle vulnerabilità.

<table>
<thead>
<tr>
<th></th>
<th>Strumenti tradizionali</th>
<th>cve-mcp</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Interfaccia</b></td>
<td>UI web / CLI / chiamate API dirette</td>
<td>MCP &mdash; l'agente IA chiama gli strumenti in modo conversazionale</td>
</tr>
<tr>
<td><b>Fonti dati</b></td>
<td>Un database alla volta</td>
<td>11 fonti in parallelo: NVD, EPSS, KEV, GHSA, OSV, Shodan, VulnCheck, Vulners, Nuclei, Metasploit, CIRCL</td>
</tr>
<tr>
<td><b>Punteggio di rischio</b></td>
<td>Solo CVSS (gravità, non sfruttabilità)</td>
<td>CVSS &times; EPSS &times; KEV &times; Moltiplicatore exploit (Nuclei/MSF) = rischio reale</td>
</tr>
<tr>
<td><b>Correlazione</b></td>
<td>Copia e incolla manuale</td>
<td>L'agente arricchisce: "CVSS 9.8, EPSS 97%, KEV, template Nuclei esiste, modulo MSF disponibile, mappa a T1190"</td>
</tr>
<tr>
<td><b>Triage massivo</b></td>
<td>Un CVE alla volta</td>
<td>L'agente prioritizza 50 CVE in una singola conversazione</td>
</tr>
<tr>
<td><b>Impatto sui pacchetti</b></td>
<td>Ricerca OSV/GHSA separata</td>
<td>L'agente trova automaticamente pacchetti interessati + versioni</td>
</tr>
<tr>
<td><b>Dipendenze</b></td>
<td>Strumenti CLI pesanti, ambienti Python</td>
<td>2 dipendenze runtime, si esegue con npx</td>
</tr>
</tbody>
</table>

---

## Avvio rapido

### Opzione 1: npx (senza installazione)

```bash
npx cve-mcp
```

### Opzione 2: Clona

```bash
git clone https://github.com/badchars/cve-mcp.git
cd cve-mcp
bun install
```

### Variabili d'ambiente (tutte opzionali)

```bash
# Aumenta il limite di velocità NVD da 5 a 50 richieste ogni 30 secondi
export NVD_API_KEY=your-nvd-api-key

# Abilita la ricerca GitHub Advisory (60 → 5000 richieste/ora)
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# VulnCheck KEV esteso, ricerca CPE, PURL
export VULNCHECK_API_KEY=your-vulncheck-key

# Ricerca vulnerabilità Vulners su oltre 200 fonti
export VULNERS_API_KEY=your-vulners-key

# Valutazioni della comunità AttackerKB
export ATTACKERKB_API_KEY=your-attackerkb-key
```

Tutte sono opzionali. Il server funziona senza di esse — alcuni strumenti avranno semplicemente limiti di velocità più bassi o dati ridotti.

### Connetti al tuo agente IA

<details open>
<summary><b>Claude Code</b></summary>

```bash
# Con npx
claude mcp add cve-mcp -- npx cve-mcp

# Con clone locale
claude mcp add cve-mcp -- bun run /path/to/cve-mcp/src/index.ts
```

</details>

<details>
<summary><b>Claude Desktop</b></summary>

Aggiungi a `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "cve-mcp": {
      "command": "npx",
      "args": ["cve-mcp"],
      "env": {
        "NVD_API_KEY": "optional-key",
        "GITHUB_TOKEN": "optional-token",
        "VULNCHECK_API_KEY": "optional-key",
        "VULNERS_API_KEY": "optional-key",
        "ATTACKERKB_API_KEY": "optional-key"
      }
    }
  }
}
```

</details>

<details>
<summary><b>Cursor / Windsurf / altri client MCP</b></summary>

Stesso formato di configurazione JSON. Punta il comando a `npx cve-mcp` o al tuo percorso di installazione.

</details>

### Inizia a interrogare

```
Tu: "Cosa sai su CVE-2024-3400?"
```

Questo è tutto. L'agente si occupa del resto.

---

## Cosa può fare l'IA

### Risposta agli incidenti

```
Tu: "Siamo stati colpiti da CVE-2024-3400. Dammi tutto."

Agente: → cve_enrich {cveId: "CVE-2024-3400"}
        → NVD: Iniezione di comandi PAN-OS, CVSS 10.0
        → EPSS: 97,2% di probabilità di sfruttamento
        → KEV: Aggiunto il 2024-04-12, scadenza 2024-05-01
        → Shodan: 4 CPEs, esposto su internet
        → Nuclei: Template di rilevamento esiste (critico)
        → Metasploit: Modulo exploit disponibile (rango eccellente)
        → "Critico. Armamentizzato — moduli Nuclei e MSF esistono.
           PAN-OS GlobalProtect, versioni < 10.2.9-h1.
           Applicare la patch immediatamente. Scadenza CISA: 1 maggio."
```

### Prioritizzazione delle vulnerabilità

```
Tu: "Prioritizza questi CVE dalla nostra scansione: CVE-2021-44228, CVE-2024-3400,
     CVE-2023-44487, CVE-2024-21762, CVE-2023-4966"

Agente: → cve_prioritize {cves: [...]}
        → Classifica per CVSS × EPSS × moltiplicatore KEV
        → "#1: CVE-2024-3400 (rischio: 19,44, CVSS 10.0, EPSS 97%, KEV)
           #2: CVE-2021-44228 (rischio: 19,40, CVSS 10.0, EPSS 97%, KEV)
           #3: CVE-2023-4966 (rischio: 19,10, CVSS 9.4, EPSS 97%, KEV)
           Tutti e 5 sono in CISA KEV — applicare le patch a tutti immediatamente."
```

### Audit delle dipendenze

```
Tu: "Controlla se lodash 4.17.20 e django 3.2.0 hanno vulnerabilità note"

Agente: → osv_batch {queries: [
           {package: "lodash", version: "4.17.20", ecosystem: "npm"},
           {package: "django", version: "3.2.0", ecosystem: "PyPI"}
        ]}
        → "lodash 4.17.20: 3 vulnerabilità (inquinamento del prototipo)
           django 3.2.0: 12 vulnerabilità (iniezione SQL, XSS)
           Aggiornare lodash a 4.17.21+, django a 4.2+"
```

### Monitoraggio delle minacce

```
Tu: "Quali sono i CVE più probabilmente sfruttati in questo momento?"

Agente: → cve_trending {limit: 10, minEpss: 0.9}
        → "Top 10 per probabilità di sfruttamento:
           1. CVE-2024-3400 — PAN-OS (EPSS 97,2%, CVSS 10.0, KEV)
           2. CVE-2023-44487 — HTTP/2 Rapid Reset (EPSS 96,5%, CVSS 7.5, KEV)
           ..."
```

### Analisi approfondita CVSS (v3.1 e v4.0)

```
Tu: "Analizza questo vettore CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"

Agente: → cvss_parse {vector: "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"}
        → "CVSS v4.0 — Punteggio: 9.3 (CRITICO)
           Attacco di rete, complessità bassa, nessun requisito di attacco.
           Nessun privilegio, nessuna interazione utente.
           Sistema vulnerabile: impatto totale su C/I/A.
           Sistemi successivi: nessun impatto."
```

### Mappatura ATT&CK

```
Tu: "Mappa CVE-2024-3400 alle tecniche MITRE ATT&CK"

Agente: → cve_to_attack {cweIds: ["CWE-77"]}
        → "CWE-77 (Command Injection) mappa a:
           T1059 — Command and Scripting Interpreter (Execution)
           T1190 — Exploit Public-Facing Application (Initial Access)"
```

---

## Riferimento strumenti (41 strumenti)

<details>
<summary><b>NVD (4)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `nvd_search` | Cerca CVE per parola chiave, gravità, CWE, intervallo di date |
| `nvd_get` | Ottieni dettagli completi CVE (CVSS, CWE, CPE, riferimenti) |
| `nvd_recent` | CVE pubblicati/modificati di recente |
| `cve_by_product` | Cerca CVE per nome prodotto (corrispondenza parola chiave CPE) |

</details>

<details>
<summary><b>EPSS (2)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `epss_score` | Probabilità di sfruttamento EPSS per uno o più CVE |
| `epss_top` | CVE principali per probabilità di sfruttamento |

</details>

<details>
<summary><b>KEV (3)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `kev_check` | Verifica se i CVE sono nel catalogo CISA delle vulnerabilità sfruttate note |
| `kev_search` | Cerca KEV per fornitore, prodotto o parola chiave |
| `kev_recent` | Voci KEV aggiunte di recente |

</details>

<details>
<summary><b>GHSA (2)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `ghsa_search` | Cerca avvisi di sicurezza GitHub per parola chiave, ecosistema, gravità |
| `ghsa_get` | Ottieni dettagli dell'avviso per ID GHSA o ID CVE |

</details>

<details>
<summary><b>OSV (3)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `osv_query` | Interroga le vulnerabilità per una versione specifica del pacchetto |
| `osv_get` | Ottieni dettagli della vulnerabilità per ID OSV/GHSA/CVE |
| `osv_batch` | Interroga più pacchetti in batch |

</details>

<details>
<summary><b>Exploit (1)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `exploit_search` | Cerca exploit PoC pubblici (repository GitHub) |

</details>

<details>
<summary><b>Shodan (3)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `shodan_cve` | Ricerca CVE via Shodan CVEDB (EPSS, KEV, CPE integrati, senza autenticazione) |
| `shodan_product` | Trova CVE per nome prodotto/fornitore via Shodan |
| `shodan_ip_vulns` | Ottieni vulnerabilità note per un indirizzo IP (InternetDB) |

</details>

<details>
<summary><b>VulnCheck (3)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `vulncheck_kev` | Catalogo KEV esteso (~80% più voci rispetto a CISA) |
| `vulncheck_cpe` | Ricerca CVE per stringa CPE |
| `vulncheck_purl` | Ricerca CVE per Package URL (purl) |

</details>

<details>
<summary><b>Vulners (2)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `vulners_lookup` | Dettagli CVE da Vulners (oltre 200 fonti, riferimenti exploit) |
| `vulners_search` | Ricerca full-text nel database Vulners |

</details>

<details>
<summary><b>Nuclei & Metasploit (2)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `nuclei_check` | Verifica se esiste un template di rilevamento Nuclei per un CVE |
| `msf_check` | Verifica se esiste un modulo exploit Metasploit per un CVE |

</details>

<details>
<summary><b>CPE (2)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `cpe_search` | Cerca nel dizionario CPE di NVD per parola chiave |
| `cpe_match` | Ottieni corrispondenze CPE per un CVE specifico |

</details>

<details>
<summary><b>CIRCL (1)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `circl_cve` | Arricchimento CVE da CIRCL (CAPEC, riferimenti alternativi, vettori di impatto) |

</details>

<details>
<summary><b>AttackerKB (1)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `attackerkb_assess` | Valutazioni della comunità di AttackerKB (valore per l'attaccante, sfruttabilità) |

</details>

<details>
<summary><b>ATT&CK (1)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `cve_to_attack` | Mappare ID CWE di CVE a tecniche e tattiche MITRE ATT&CK |

</details>

<details>
<summary><b>CWE (4)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `cwe_lookup` | Cerca debolezza CWE per ID o cerca per parola chiave (DB statico) |
| `cwe_get` | Dettagli completi CWE dall'API MITRE (oltre 1000 CWE, mitigazioni, esempi) |
| `cwe_hierarchy` | Gerarchia padre/figlio CWE dall'API MITRE |
| `cwe_top25` | MITRE CWE Top 25 debolezze software più pericolose |

</details>

<details>
<summary><b>CVSS (1)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `cvss_parse` | Analizza e spiega una stringa vettore CVSS v3.1 o v4.0 con calcolo del punteggio |

</details>

<details>
<summary><b>Meta (6)</b></summary>

| Strumento | Descrizione |
|-----------|-------------|
| `cve_enrich` | Arricchimento completo: NVD + EPSS + KEV + GHSA + OSV + Shodan + Nuclei + MSF in parallelo |
| `cve_prioritize` | Classifica CVE per rischio (CVSS &times; EPSS &times; KEV &times; Moltiplicatore exploit) |
| `cve_trending` | CVE attualmente di tendenza per probabilità di sfruttamento |
| `cve_compare` | Confronto affiancato di due CVE |
| `cve_list_sources` | Elenca tutte le 11 fonti dati e la loro disponibilità |
| `cve_report` | Genera un rapporto vulnerabilità in Markdown |

</details>

---

## Fonti dati

| Fonte | Autenticazione | Cosa fornisce |
|-------|---------------|---------------|
| [NVD](https://nvd.nist.gov/) | Opzionale `NVD_API_KEY` | Dettagli CVE, punteggi CVSS, mappature CWE, prodotti interessati CPE, riferimenti |
| [EPSS](https://www.first.org/epss/) | Nessuna | Punteggio di probabilità di sfruttamento (0-1) e classifica percentile |
| [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | Nessuna | Vulnerabilità sfruttate note con scadenze di rimedio |
| [GitHub Advisory](https://github.com/advisories) | Opzionale `GITHUB_TOKEN` | Avvisi di sicurezza open source, pacchetti interessati, gravità |
| [OSV](https://osv.dev/) | Nessuna | Dati sulle vulnerabilità a livello di pacchetto su oltre 16 ecosistemi |
| [Shodan CVEDB](https://cvedb.shodan.io/) | Nessuna | Ricerca CVE con EPSS/KEV/CPE integrati, scansione vulnerabilità per IP |
| [VulnCheck](https://vulncheck.com/) | Opzionale `VULNCHECK_API_KEY` | KEV esteso (~80% più voci), ricerca vulnerabilità CPE/PURL |
| [Vulners](https://vulners.com/) | Opzionale `VULNERS_API_KEY` | Ricerca vulnerabilità su oltre 200 fonti, riferimenti exploit |
| [Nuclei Templates](https://github.com/projectdiscovery/nuclei-templates) | Nessuna | Verifica esistenza template di rilevamento CVE (gravità, tag) |
| [Metasploit](https://github.com/rapid7/metasploit-framework) | Nessuna | Verifica esistenza moduli exploit (tipo, rango, percorso) |
| [CIRCL](https://cve.circl.lu/) | Nessuna | Arricchimento CVE con mappatura CAPEC, riferimenti alternativi, vettori di impatto |
| [AttackerKB](https://attackerkb.com/) | Opzionale `ATTACKERKB_API_KEY` | Valutazioni della comunità (valore per l'attaccante, classifiche di sfruttabilità) |
| [MITRE ATT&CK](https://attack.mitre.org/) | Nessuna | Mappatura CWE-a-ATT&CK (tattiche, tecniche) |
| [MITRE CWE](https://cwe-api.mitre.org/) | Nessuna | Database completo CWE (oltre 1000 debolezze, gerarchia, mitigazioni) |

### Formula del punteggio di rischio

```
Punteggio di rischio = Punteggio base CVSS × Punteggio EPSS × Moltiplicatore KEV × Moltiplicatore Exploit

Dove:
  Punteggio base CVSS    = 0-10 (gravità da NVD)
  Punteggio EPSS         = 0-1 (probabilità di sfruttamento da FIRST)
  Moltiplicatore KEV     = 2 se in CISA KEV, 1 altrimenti
  Moltiplicatore Exploit = 1.5 se template Nuclei O modulo Metasploit esiste, 1 altrimenti
```

Questo fornisce un punteggio di rischio pratico che bilancia la gravità (CVSS) con la probabilità di sfruttamento nel mondo reale (EPSS), lo sfruttamento attivo noto (KEV) e i segnali di armamentizzazione (strumenti di exploit pubblici).

---

## Architettura

```
src/
├── index.ts                    Punto di ingresso + MCP stdio
├── types/
│   └── index.ts                ToolDef, ToolContext, ToolResult, tipi API
├── protocol/
│   ├── tools.ts                41 definizioni di strumenti (Zod schemas)
│   └── mcp-server.ts           Server MCP + trasporto stdio
├── nvd/
│   ├── index.ts                NVD API v2 — ricerca, ottenimento, recenti
│   └── cpe.ts                  Ricerca prodotto/CPE
├── epss/
│   └── index.ts                EPSS — punteggio, top
├── kev/
│   └── index.ts                KEV — verifica, ricerca, recenti (in cache)
├── ghsa/
│   └── index.ts                GitHub Advisory — ricerca, ottenimento
├── osv/
│   └── index.ts                OSV — interrogazione, ottenimento, batch
├── exploit/
│   └── index.ts                Ricerca PoC tramite repository GitHub
├── shodan/
│   └── index.ts                Shodan CVEDB + InternetDB (senza autenticazione)
├── vulncheck/
│   └── index.ts                VulnCheck KEV, CPE, PURL
├── vulners/
│   └── index.ts                Vulners ricerca + consultazione
├── nuclei/
│   └── index.ts                Verifica esistenza template Nuclei
├── metasploit/
│   └── index.ts                Verifica moduli MSF (metadati in cache)
├── cpe/
│   └── index.ts                API dizionario CPE NVD
├── circl/
│   └── index.ts                Arricchimento CVE CIRCL
├── attackerkb/
│   └── index.ts                Valutazioni AttackerKB
├── attack/
│   └── index.ts                Mappatura CWE → MITRE ATT&CK
├── cwe/
│   └── index.ts                API CWE (MITRE) + fallback statico
├── cvss/
│   └── index.ts                Parser CVSS v3.1 + v4.0 + calcolatore
├── meta/
│   ├── enrich.ts               Arricchimento completo CVE (8 fonti in parallelo)
│   ├── prioritize.ts           Classificazione CVE basata sul rischio
│   ├── trending.ts             CVE di tendenza per EPSS
│   ├── compare.ts              Confronto CVE affiancato
│   └── sources.ts              Controllo stato delle 11 fonti
└── utils/
    ├── rate-limiter.ts          Limitatore di velocità basato su coda
    └── cache.ts                 Cache TTL
```

**Decisioni di progettazione:**

- **Intelligence, non audit** &mdash; A differenza di [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) e [github-security-mcp](https://github.com/badchars/github-security-mcp), questo è uno strumento dati. Nessun CheckResult, nessuna accumulazione di risultati. Ogni query è indipendente e stateless.
- **Arricchimento parallelo** &mdash; `cve_enrich` chiama 8 fonti tramite `Promise.allSettled`. Se una fonte è inattiva, le altre restituiscono comunque dati.
- **Rilevamento armamentizzazione** &mdash; Verifica l'esistenza di template Nuclei e moduli Metasploit per identificare CVE con strumenti di exploit pubblici.
- **Limitatore di velocità condiviso** &mdash; Tutti i moduli NVD condividono una singola istanza `RateLimiter` (6s tra le richieste) per evitare errori 429.
- **Cache KEV + MSF** &mdash; Il catalogo KEV (~1200 voci) e i metadati dei moduli MSF (~15MB) vengono caricati una volta e memorizzati in cache con TTL di 1 ora.
- **CWE doppia modalità** &mdash; API REST MITRE CWE per dettagli completi (oltre 1000 CWE), con fallback statico di oltre 40 voci quando l'API non è raggiungibile.
- **CVSS v3.1 + v4.0** &mdash; Rileva automaticamente la versione dal prefisso del vettore. V4.0 usa l'approccio di punteggio MacroVector.
- **Mappatura ATT&CK** &mdash; Tabella statica CWE-a-tecnica (33 voci CWE → tecniche ATT&CK). Nessuna chiamata API.
- **2 dipendenze** &mdash; `@modelcontextprotocol/sdk` e `zod`. Nient'altro.

---

## Limitazioni

- L'API NVD senza `NVD_API_KEY` è limitata a 5 richieste ogni 30 secondi. Imposta la chiave per l'uso in produzione
- La ricerca GitHub Advisory senza `GITHUB_TOKEN` è limitata a 60 richieste all'ora
- VulnCheck, Vulners e AttackerKB richiedono chiavi API per funzionalità completa
- La ricerca exploit utilizza la ricerca repository GitHub che ha i propri limiti di velocità
- I metadati dei moduli MSF (~15MB) vengono caricati al primo utilizzo — la prima chiamata `msf_check` è più lenta
- Il punteggio CVSS v4.0 usa l'approssimazione MacroVector (la specifica esatta è molto complessa)
- La mappatura ATT&CK copre 33 voci CWE — CWE poco comuni potrebbero non essere mappati
- macOS / Linux (Windows non testato)

---

## Parte della suite di sicurezza MCP

| Progetto | Dominio | Strumenti |
|----------|---------|-----------|
| [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Test di sicurezza basati sul browser | 39 strumenti, Firefox, test di iniezione |
| [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Sicurezza cloud (AWS/Azure/GCP) | 38 strumenti, oltre 60 controlli |
| [github-security-mcp](https://github.com/badchars/github-security-mcp) | Postura di sicurezza GitHub | 39 strumenti, 45 controlli |
| **cve-mcp** | Intelligence delle vulnerabilità | 41 strumenti, 11 fonti |

---

<p align="center">
<b>Solo per test e valutazioni di sicurezza autorizzati.</b><br>
Assicurati sempre di avere l'autorizzazione adeguata prima di testare i sistemi.
</p>

<p align="center">
  <a href="LICENSE">Licenza MIT</a> &bull; Costruito con Bun + TypeScript
</p>
