138 lines
4.5 KiB
Markdown
138 lines
4.5 KiB
Markdown
# Auditoría de Vulnerabilidades ENISA EUVD
|
|
|
|
Herramienta en Python para la consulta y generación de informes ejecutivos de vulnerabilidades basados en la API oficial de **ENISA EUVD** (*European Union Vulnerability Database*).
|
|
|
|
El script analiza los componentes de infraestructura definidos por el usuario, evalúa si la versión específica configurada se ve afectada tras contrastarla directamente con los metadatos de producto (`enisaIdProduct`), y genera automáticamente un informe detallado en formatos **JSON**, **Markdown** y **PDF**.
|
|
|
|
---
|
|
|
|
## Características
|
|
|
|
* **Consulta precisa a la API de ENISA:** Búsqueda orientada por los parámetros nativos `vendor` y `product`.
|
|
* **Evaluación exacta por versión/rango:** Filtrado local mediante parseo de la propiedad `product_version` de cada registro de ENISA (detección de rangos `X to Y`, coincidencia exacta y expresiones `<= X`), evitando falsos positivos.
|
|
* **Gestión de límites de tasa (*Rate Limiting*):** Control automático con reintentos para manejar respuestas `HTTP 429`.
|
|
* **Soporte multiobjetivo:** Definición ágil de entornos mediante archivos de configuración YAML.
|
|
* **Formatos de salida:**
|
|
* `reporte_vulnerabilidades.json`: Datos estructurados para integración con pipelines o SIEM.
|
|
* `informe_vulnerabilidades.md`: Informe en Markdown organizado mediante fichas ejecutivas y tablas resumen.
|
|
* `informe_vulnerabilidades.pdf`: Documento compilado mediante Pandoc e listo para presentación.
|
|
|
|
---
|
|
|
|
## Requisitos Previos
|
|
|
|
### Entorno Linux (Debian)
|
|
|
|
Asegúrate de contar con los paquetes base del sistema y el motor de compilación PDF:
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt -y install python3 python3-pip pandoc texlive-xetex fonts-dejavu fonts-noto-color-emoji
|
|
|
|
```
|
|
|
|
---
|
|
|
|
## Instalación
|
|
|
|
1. **Clonar el repositorio:**
|
|
```bash
|
|
git clone https://gitea.soloconlinux.org.es/luisgulo/ENISA_EUVD
|
|
cd ENISA_EUVD
|
|
|
|
```
|
|
|
|
|
|
2. **Instalar las dependencias de Python:**
|
|
|
|
En Debian puedes instalar las dependencias necesarias de Python ejecutando:
|
|
```bash
|
|
sudo apt -y install python3-yaml python3-packaging python3-requests
|
|
```
|
|
En otros sistemas puedes realizarlo mediante:
|
|
|
|
```bash
|
|
pip3 install requests pyyaml packaging
|
|
```
|
|
---
|
|
|
|
## Configuración (`targets.yaml`)
|
|
|
|
Define en el archivo `targets.yaml` el listado de tecnologías, proveedores y versiones que deseas auditar:
|
|
|
|
```yaml
|
|
targets:
|
|
- vendor: "Oracle"
|
|
product: "OpenJDK"
|
|
version: "21"
|
|
|
|
- vendor: "GitLab"
|
|
product: "GitLab CE"
|
|
version: "19.1.1"
|
|
|
|
```
|
|
|
|
---
|
|
|
|
## Uso
|
|
|
|
### 1. Ejecutar el análisis
|
|
|
|
Ejecuta el script principal para consultar la API de ENISA y generar los archivos de reporte:
|
|
|
|
```bash
|
|
python3 check_EUVD.py
|
|
|
|
```
|
|
|
|
Al finalizar la ejecución se habrán creado dos archivos:
|
|
|
|
* `reporte_vulnerabilidades.json`
|
|
* `informe_vulnerabilidades.md`
|
|
|
|
### 2. Generar el informe en PDF
|
|
|
|
Utiliza **Pandoc** junto con el motor XeLaTeX para compilar el Markdown a PDF con márgenes ajustados:
|
|
|
|
```bash
|
|
pandoc informe_vulnerabilidades.md -o informe_vulnerabilidades.pdf \
|
|
-V lang=es \
|
|
-V geometry:a4paper \
|
|
-V geometry:margin=2cm \
|
|
-V mainfont="DejaVu Serif" \
|
|
-V monofont="DejaVu Sans Mono" \
|
|
--pdf-engine=xelatex
|
|
|
|
```
|
|
|
|
Si tienes instalado `Pandoc` puedes usar directamente el script `INFORME.sh` que realiza todo el proceso completo:
|
|
|
|
```bash
|
|
./INFORME.sh
|
|
```
|
|
|
|
---
|
|
|
|
## Estructura del Informe
|
|
|
|
El informe generado incluye:
|
|
|
|
1. **Métricas Globales:** Total de elementos auditados, vulnerabilidades analizadas y distribución por criticidad.
|
|
2. **Resumen Ejecutivo:** Tabla comparativa indicando los hallazgos por cada componente del archivo YAML.
|
|
3. **Detalle de Vulnerabilidades (Fichas):** Desglose individual clasificado por nivel de severidad (`[CRÍTICA]`, `[ALTA]`, etc.), identificadores CVE/EUVD, versión afectada y descripción detallada del impacto.
|
|
|
|
---
|
|
|
|
El informe generado incluye:
|
|
|
|
1. Métricas Globales: Total de informes consolidados, vulnerabilidades analizadas, clasificadas como aplicables, descartadas (no aplicables por regla de versión) y pendientes de revisión manual.
|
|
2. Resumen Ejecutivo por Objetivo: Tabla comparativa indicando las vulnerabilidades analizadas, aplicables y descartadas para cada tecnología declarada en el YAML.
|
|
3. Detalle de Vulnerabilidades Aplicables: Desglose individual ordenado por puntuación CVSS y clasificado por nivel de severidad ([CRÍTICA], [ALTA], [MEDIA], [BAJA]), indicando el patrón/regla de versión que determinó la afectación y la descripción del impacto.
|
|
|
|
---
|
|
|
|
## Licencia
|
|
|
|
Uso interno para auditorías de seguridad y gestión de vulnerabilidades.
|
|
|