Vulnerabilidades y exposiciones comunes (CVE)
¿Qué son las CVE?
Las CVE (Common Vulnerabilities and Exposures) son fallos de ciberseguridad revelados públicamente en software o hardware. A cada CVE se le asigna un identificador único (por ejemplo, CVE-2024-12345) y se incluye una descripción estandarizada, para que las organizaciones puedan realizar un seguimiento y abordar las vulnerabilidades de manera consistente.
En el contexto de Docker, las CVE suelen estar relacionadas con problemas dentro de las imágenes base o las dependencias de la aplicación. Estas vulnerabilidades pueden variar desde errores menores hasta riesgos de seguridad críticos, como la ejecución remota de código o la escalada de privilegios.
¿Por qué son importantes las CVE?
Escanear y actualizar regularmente las imágenes de Docker para mitigar las CVE es crucial para mantener un entorno seguro y en conformidad. Ignorar las CVE puede provocar brechas de seguridad graves, que incluyen:
- Acceso no autorizado: Los exploits pueden otorgar a los atacantes acceso no autorizado a los sistemas.
- Brechas de datos: La información confidencial puede quedar expuesta o ser robada.
- Interrupciones del servicio: Las vulnerabilidades pueden aprovecharse para interrumpir los servicios o causar tiempos de inactividad.
- Infracciones de cumplimiento: No abordar las vulnerabilidades conocidas puede provocar el incumplimiento de las regulaciones y estándares de la industria.
Cómo ayudan las Docker Hardened Images a mitigar las CVE
Las Docker Hardened Images (DHI) están diseñadas para minimizar el riesgo de CVE desde el principio. Al adoptar un enfoque centrado en la seguridad, las DHI ofrecen varias ventajas en la mitigación de CVE:
Superficie de ataque reducida: Las DHI se construyen utilizando un enfoque distroless, eliminando los componentes y paquetes innecesarios. Esta reducción en el tamaño de la imagen, hasta un 95% menor que las imágenes tradicionales, limita la cantidad de vulnerabilidades potenciales, lo que dificulta que los atacantes exploten software innecesario.
Remediación de CVE más rápida: Mantenidas por Docker con un SLA de nivel empresarial, las DHI se actualizan continuamente para solucionar las vulnerabilidades conocidas. Las CVE críticas y de alta gravedad se parchean rápidamente, lo que garantiza que tus contenedores permanezcan seguros sin intervención manual.
Gestión proactiva de vulnerabilidades: Al utilizar DHI, las organizaciones pueden gestionar las vulnerabilidades de forma proactiva. Las imágenes vienen con canales de datos de CVE y VEX (Intercambio de explotabilidad de vulnerabilidades), lo que permite a los equipos mantenerse informados sobre posibles amenazas y tomar las medidas necesarias con prontitud.
Escanear imágenes en busca de CVE
Escanear regularmente las imágenes de Docker en busca de CVE es esencial para mantener un entorno de contenedores seguro. Aunque Docker Scout está integrado en Docker Desktop y en la CLI de Docker, herramientas como Grype y Trivy ofrecen capacidades de escaneo alternativas. A continuación, se detallan las instrucciones para utilizar cada herramienta para escanear imágenes de Docker en busca de CVE.
Docker Scout
Docker Scout está integrado en Docker Desktop y en la CLI de Docker. Proporciona información sobre vulnerabilidades, resúmenes de CVE y enlaces directos a guías de remediación.
Escanear una DHI utilizando Docker Scout
Para escanear una Docker Hardened Image utilizando Docker Scout, ejecuta el siguiente comando:
$ docker scout cves dhi.io/<image>:<tag> --platform <platform>
Ejemplo de salida:
v SBOM obtained from attestation, 101 packages found
v Provenance obtained from attestation
v VEX statements obtained from attestation
v No vulnerable package detected
...Para obtener un filtrado más detallado y una salida en formato JSON, consulta la referencia de la CLI de Docker Scout.
Grype
Grype es un escáner de código abierto que comprueba las imágenes de contenedor contra bases de datos de vulnerabilidades como la NVD y los avisos de las distribuciones.
Escanear una DHI utilizando Grype
Después de instalar Grype, puedes escanear una Docker Hardened Image descargando la imagen y ejecutando el comando de escaneo. Grype requiere que exportes primero la atestación VEX a un archivo:
$ docker pull dhi.io/<image>:<tag>
$ docker scout vex get dhi.io/<image>:<tag> --output vex.json
$ grype dhi.io/<image>:<tag> --vex vex.json
Ejemplo de salida:
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY EPSS% RISK
libperl5.36 5.36.0-7+deb12u2 (won't fix) deb CVE-2023-31484 High 79.45 1.1
perl 5.36.0-7+deb12u2 (won't fix) deb CVE-2023-31484 High 79.45 1.1
perl-base 5.36.0-7+deb12u2 (won't fix) deb CVE-2023-31484 High 79.45 1.1
...Trivy
Trivy es un escáner de vulnerabilidades de código abierto para contenedores y otros artefactos. Detecta vulnerabilidades en paquetes del sistema operativo y dependencias de aplicaciones.
Escanear una DHI utilizando Trivy
Después de instalar Trivy, puedes escanear una Docker Hardened Image descargando la imagen y ejecutando el comando de escaneo:
$ docker pull dhi.io/<image>:<tag>
$ trivy image --scanners vuln --vex repo dhi.io/<image>:<tag>
Ejemplo de salida:
Report Summary
┌──────────────────────────────────────────────────────────────────────────────┬────────────┬─────────────────┬─────────┐
│ Target │ Type │ Vulnerabilities │ Secrets │
│ ├──────────────────────────────────────────────────────────────────────────────┼────────────┼─────────────────┼─────────┤
│ dhi.io/<image>:<tag> (debian 12.11) │ debian │ 66 │ - │
│ ├──────────────────────────────────────────────────────────────────────────────┼────────────┼─────────────────┼─────────┤
│ opt/python-3.13.4/lib/python3.13/site-packages/pip-25.1.1.dist-info/METADATA │ python-pkg │ 0 │ - │
│ └──────────────────────────────────────────────────────────────────────────────┴────────────┴─────────────────┴─────────┘Utilizar VEX para filtrar CVE no explotables conocidas
Las Docker Hardened Images incluyen atestaciones firmadas de VEX (Vulnerability Exploitability eXchange) que identifican las vulnerabilidades que no son relevantes para el comportamiento en tiempo de ejecución de la imagen.
Al utilizar Docker Scout o Trivy, estas declaraciones VEX se aplican automáticamente siguiendo los ejemplos anteriores, sin necesidad de configuración manual.
Para recuperar manualmente la atestación VEX para las herramientas compatibles:
$ docker scout vex get dhi.io/<image>:<tag> --output vex.json
NoteSi la imagen existe localmente en tu dispositivo, debes anteponer el prefijo
registry://al nombre de la imagen. Por ejemplo, utilizaregistry://dhi.io/python:3.13en lugar dedhi.io/python:3.13.
Por ejemplo:
$ docker scout vex get dhi.io/python:3.13 --output vex.json
Esto crea un archivo vex.json que contiene las declaraciones VEX para la imagen especificada.
Luego puedes utilizar este archivo con herramientas compatibles con VEX para filtrar las CVE no explotables conocidas.