ENISA_EUVD/README.md

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 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:

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:
git clone https://gitea.soloconlinux.org.es/luisgulo/ENISA_EUVD
cd ENISA_EUVD

  1. 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.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:

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:

  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.