Plataforma de inteligencia de vulnerabilidades en tiempo real contra la base de datos oficial NVD (National Vulnerability Database) v2.0.
Incluye dashboard web con React, gráficas interactivas, análisis con IA (Claude) y CLI para terminal.
Diseñada para pentesters, investigadores de seguridad y equipos Blue/Red Team.
- Características
- Arquitectura
- Requisitos
- Instalación
- Uso CLI
- Uso Web
- API REST
- Despliegue
- Variables de Entorno
- Estructura del Proyecto
| Módulo | Función |
|---|---|
| 🔍 Búsqueda por keyword | Consulta CVEs por tecnología (linux, apache, openssl...) |
| 🎯 Búsqueda por CVE-ID | Consulta directa por CVE-XXXX-XXXXX |
| 🔢 Filtro por versión | Afina resultados por versión específica (ej. 2.4.51) |
| 📅 Filtro por año | Limita resultados por año de publicación |
| Critical / High / Medium / Low según score CVSS | |
| 🤖 Análisis con IA | Análisis de amenaza, vector de ataque y remediación via Claude |
| 📊 Gráficas interactivas | Donut de severidades + histograma de scores CVSS |
| 📄 Reportes automáticos | Genera JSON y CSV con cada búsqueda |
| 🎨 CLI coloreada | Interfaz terminal via pwntools |
| 🌐 API REST | Backend FastAPI consumible desde cualquier cliente |
┌─────────────────────────────────────────────────┐
│ Browser / CLI │
└────────────────┬───────────────┬────────────────┘
│ │
React UI (Vite) cve-notifier.py
│ │
┌────────▼───────────────▼────────┐
│ FastAPI server.py │
│ /api/search /api/ai/analyze │
└────────┬───────────────┬────────┘
│ │
NVD API v2.0 Anthropic API
(nvd.nist.gov) (claude-sonnet)
- Python 3.8+
- Node.js 18+
- Conexión a internet (acceso a
services.nvd.nist.govyapi.anthropic.com) - API Key de Anthropic (para análisis con IA)
1. Clona el repositorio
git clone https://github.com/tu-usuario/cve-notifier.git
cd cve-notifier2. Instala dependencias Python
pip install -r requirements.txt3. Instala dependencias del frontend
cd frontend
npm install
cd ..4. Configura tu API Key de Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."Obtén tu key en https://console.anthropic.com
La interfaz de terminal original sigue funcionando exactamente igual:
python3 cve-notifier.py <query>python3 cve-notifier.py linux
python3 cve-notifier.py apache
python3 cve-notifier.py opensslpython3 cve-notifier.py CVE-2023-44487
python3 cve-notifier.py CVE-2021-44228[+] Consultando NVD: apache
[+] Encontrados 20 registros
[CVE-2024-38475]
Severity: 9.1
CWEs: CWE-284
Links:
-> https://httpd.apache.org/security/vulnerabilities_24.html
-> https://nvd.nist.gov/vuln/detail/CVE-2024-38475
Desc: Improper escaping in the Apache HTTP Server...
---------------------------------------------
Los reportes se guardan automáticamente en data/:
data/reporte_apache_2025-04-09.json
data/reporte_apache_2025-04-09.csv
Terminal 1 — Backend:
uvicorn server:app --reload --port 8000Terminal 2 — Frontend:
cd frontend
npm run devcd frontend && npm run build && cd ..
uvicorn server:app --host 0.0.0.0 --port 8000Búsqueda avanzada
- Keyword o CVE-ID en el campo principal
- Campo de versión para filtrar (ej.
2.4,3.11.2) - Selector de año de publicación
- Selector de severidad mínima
Tarjetas de resultados
- Score CVSS con badge de color por nivel
- CWEs asociados como tags
- Descripción resumida
- Links directos a referencias
Análisis con IA (clic en cualquier CVE)
- Resumen de amenaza
- Vector de ataque concreto
- Sistemas y versiones afectadas
- Pasos de remediación ordenados por prioridad
- Rating de riesgo contextualizado
Checkbox "Save results"
- Activa el guardado automático en
data/al buscar
El backend expone los siguientes endpoints:
Busca CVEs por keyword o ID.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
q |
string | ✅ | Keyword o CVE-ID |
version |
string | ❌ | Filtro de versión |
severity |
string | ❌ | critical, high, medium, low |
year |
string | ❌ | Año de publicación (ej. 2024) |
save |
bool | ❌ | Guarda resultado en data/ |
curl "http://localhost:8000/api/search?q=nginx&severity=critical&year=2024"{
"results": [
{
"id": "CVE-2024-7347",
"severity": 9.8,
"cwes": ["CWE-787"],
"description": "...",
"urls": ["https://..."],
"published": "2024-08-14"
}
],
"total": 1
}Consulta directa por ID exacto.
curl "http://localhost:8000/api/cve/CVE-2021-44228"Genera análisis de IA para un CVE.
curl -X POST "http://localhost:8000/api/ai/analyze" \
-H "Content-Type: application/json" \
-d '{
"cve_id": "CVE-2021-44228",
"prompt": "Analyze this CVE: Log4Shell..."
}'{
"cve_id": "CVE-2021-44228",
"analysis": "THREAT SUMMARY\nLog4Shell es una vulnerabilidad crítica..."
}Lista los reportes guardados en data/.
curl "http://localhost:8000/api/reports"FastAPI genera docs automáticamente en:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Sube el proyecto a GitHub
- Crea
Procfileen la raíz:web: uvicorn server:app --host 0.0.0.0 --port $PORT - Crea
build.shen la raíz:#!/bin/bash cd frontend && npm install && npm run build && cd .. pip install -r requirements.txt
- Conecta el repo en railway.app
- Añade la variable
ANTHROPIC_API_KEYen el panel de Railway
FROM node:20-alpine AS builder
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm install
COPY frontend/ .
RUN npm run build
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY src/ ./src/
COPY server.py .
COPY --from=builder /app/frontend/dist ./frontend/dist
EXPOSE 8000
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]docker build -t cve-notifier .
docker run -p 8000:8000 -e ANTHROPIC_API_KEY=sk-ant-... cve-notifier# Instalar y correr
git clone https://github.com/tu-usuario/cve-notifier && cd cve-notifier
pip install -r requirements.txt
cd frontend && npm install && npm run build && cd ..
# Systemd service
sudo nano /etc/systemd/system/cve-notifier.service[Unit]
Description=CVE Notifier
After=network.target
[Service]
WorkingDirectory=/root/cve-notifier
ExecStart=uvicorn server:app --host 0.0.0.0 --port 8000
Environment=ANTHROPIC_API_KEY=sk-ant-...
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl enable cve-notifier && sudo systemctl start cve-notifierNginx reverse proxy:
server {
server_name tudominio.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}SSL gratuito con Certbot:
certbot --nginx -d tudominio.com| Variable | Requerida | Descripción |
|---|---|---|
ANTHROPIC_API_KEY |
✅ | API key para análisis con IA. Obtener en console.anthropic.com |
cve-notifier/
│
├── server.py ← Backend FastAPI (API REST + proxy IA)
├── cve-notifier.py ← CLI original con pwntools
├── requirements.txt ← Dependencias Python
├── Procfile ← Para Railway
├── build.sh ← Build script para Railway
├── Dockerfile ← Imagen Docker multi-stage
│
├── src/
│ ├── __init__.py
│ ├── api.py ← Cliente NVD API v2.0
│ ├── parser.py ← Parser de respuestas NVD
│ └── storage.py ← Guardado JSON y CSV
│
├── frontend/ ← React + Vite
│ ├── package.json
│ ├── vite.config.js ← Proxy /api → :8000
│ ├── index.html
│ └── src/
│ ├── main.jsx
│ ├── App.jsx
│ ├── index.css
│ └── components/
│ ├── Header.jsx
│ ├── SearchBar.jsx ← Filtros: keyword, versión, año, severidad
│ ├── StatsRow.jsx ← Métricas: total, critical, high, avg score
│ ├── ChartsRow.jsx ← Donut + histograma CVSS (Recharts)
│ ├── ResultsList.jsx ← Cards de CVEs con badges
│ └── AIPanel.jsx ← Análisis IA al seleccionar CVE
│
└── data/ ← Generada automáticamente
├── reporte_apache_2025-04-09.json
├── reporte_apache_2025-04-09.csv
└── ...
Backend
Frontend
Fuentes de datos
- NVD API v2.0 — NIST National Vulnerability Database
- Anthropic Claude — análisis de vulnerabilidades con IA