4.6 KiB
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).
La documentación de la API se encuentra en: https://euvd.enisa.europa.eu/apidoc
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
vendoryproduct. - Evaluación exacta por versión/rango: Filtrado local mediante parseo de la propiedad
product_versionde cada registro de ENISA (detección de rangosX 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:
sudo apt update
sudo apt -y install python3 python3-pip pandoc texlive-xetex fonts-dejavu fonts-noto-color-emoji
Instalación
- Clonar el repositorio:
git clone https://gitea.soloconlinux.org.es/luisgulo/ENISA_EUVD
cd ENISA_EUVD
- Instalar las dependencias de Python:
En Debian puedes instalar las dependencias necesarias de Python ejecutando:
sudo apt -y install python3-yaml python3-packaging python3-requests
En otros sistemas puedes realizarlo mediante:
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:
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:
python3 check_EUVD.py
Al finalizar la ejecución se habrán creado dos archivos:
reporte_vulnerabilidades.jsoninforme_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:
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:
./INFORME.sh
Estructura del Informe
El informe generado incluye:
- Métricas Globales: Total de elementos auditados, vulnerabilidades analizadas y distribución por criticidad.
- Resumen Ejecutivo: Tabla comparativa indicando los hallazgos por cada componente del archivo YAML.
- 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:
- 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.
- Resumen Ejecutivo por Objetivo: Tabla comparativa indicando las vulnerabilidades analizadas, aplicables y descartadas para cada tecnología declarada en el YAML.
- 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.