# 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](https://docs-docker.esdocu.com/go/dhi-sla/),
  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:

```console
$ docker scout cves dhi.io/<image>:<tag> --platform <platform>
```

Ejemplo de salida:

```plaintext
    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](/reference/cli/docker/scout/).

### Grype

[Grype](https://github.com/anchore/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:

```console
$ 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:

```plaintext
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](https://github.com/aquasecurity/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:

```console
$ docker pull dhi.io/<image>:<tag>
$ trivy image --scanners vuln --vex repo dhi.io/<image>:<tag>
```

Ejemplo de salida:

```plaintext
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)](/dhi/core-concepts/vex/) 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:

```console
$ docker scout vex get dhi.io/<image>:<tag> --output vex.json
```

> [!NOTE]
>
> Si la imagen existe localmente en tu dispositivo, debes anteponer el prefijo `registry://` al nombre de la imagen. Por ejemplo, utiliza
> `registry://dhi.io/python:3.13` en lugar de `dhi.io/python:3.13`.

Por ejemplo:

```console
$ 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.
