Skip to main content

Resumen

  • Qué hace: El escaneo de imágenes de contenedores identifica vulnerabilidades de seguridad conocidas en las imágenes de contenedor que utiliza tu proyecto. Esto incluye vulnerabilidades en paquetes base del sistema operativo, bibliotecas del sistema y paquetes de aplicaciones instalados en las capas de imagen. Al escanear imágenes antes del despliegue, puedes detectar riesgos de seguridad en aplicaciones contenedorizadas desde el principio.
  • Para quién es: Equipos de seguridad, desarrolladores e ingenieros DevOps que envían aplicaciones contenedorizadas y quieren visibilidad sobre las vulnerabilidades que heredan de las imágenes base.

Cómo funciona

Corgea descubre automáticamente las imágenes de contenedor a las que hace referencia tu proyecto y las compara con bases de datos de vulnerabilidades conocidas.
1

Descubrimiento de imágenes

Corgea busca archivos Dockerfile y Docker Compose en el proyecto y extrae de ellos las referencias a imágenes:
  • Dockerfiles: imágenes base declaradas con FROM (por ejemplo, FROM python:3.11-slim)
  • Docker Compose: imágenes declaradas bajo image: para cada servicio (por ejemplo, image: postgres:15)
Las imágenes detectadas se deduplican y se vinculan al archivo que hacía referencia a ellas.
2

Análisis de imágenes

Se descarga cada imagen y se analizan sus capas para crear un inventario del software instalado, incluidos los paquetes del sistema operativo o la distribución (Debian, Ubuntu, Alpine y otros) y los paquetes de aplicaciones instalados en la imagen.
3

Coincidencia de vulnerabilidades

Los paquetes detectados se comparan con bases de datos de vulnerabilidades conocidas. Las coincidencias se incluyen con los demás resultados del escaneo.

Escanear una imagen completamente construida

El flujo de detección anterior escanea las imágenes base que referencia tu proyecto. Para escanear en su lugar una imagen completamente construida —por ejemplo, una que acabas de construir en CI y que nunca se ha subido a un registro— pásala a la CLI con --include-image:
Tu motor de contenedores local (docker o podman) exporta la imagen y la CLI la sube junto con tu proyecto, por lo que se escanea exactamente tal y como se distribuye. Cuando usas --include-image, Corgea escanea las imágenes que le indicas en lugar de detectar imágenes base a partir de tu código. --include-image solo es compatible con el escáner BLAST. El escaneo de contenedores debe estar habilitado en tu cuenta. Consulta Escanear imágenes de contenedor en la referencia de la CLI para conocer el comportamiento completo de la opción.

Seguimiento de hallazgos entre escaneos

Corgea realiza el seguimiento de cada hallazgo de contenedor según su imagen, paquete y aviso de vulnerabilidad. Las decisiones de priorización se conservan cuando cambia la versión del paquete, mientras que los distintos paquetes afectados por el mismo aviso permanecen como hallazgos separados.

Registros compatibles

Corgea escanea imágenes alojadas en registros públicos:
  • Docker Hub
  • GitHub Container Registry (GHCR)
  • Registro de Contenedores de Google (GCR)
  • Quay.io
  • Registro de Contenedores de Microsoft (MCR)
  • Amazon ECR Public
  • Registro de contenedores de GitLab
La detección automática de imágenes se habilita cuando se detectan archivos de Docker en el proyecto y no requiere configuración. Escanear una imagen completamente construida con --include-image requiere que el escaneo de contenedores esté habilitado en tu cuenta.

Limitaciones

Estos límites se aplican a las imágenes que Corgea detecta y descarga por sí misma:
  • Solo registros públicos: Las imágenes alojadas en registros privados se omiten. Para escanear una imagen privada, descárgala o constrúyela en tu propio runner y pásala con --include-image, que sube la imagen desde tu motor de contenedores en lugar de que Corgea la obtenga.
  • Tamaño máximo de imagen: Se saltan imágenes mayores a 1000 MB (1 GB).
  • Solo se detectan imágenes referenciadas en archivos Dockerfile y Docker Compose. Usa --include-image para escanear una imagen que no aparezca en ninguno de los dos.

Mejores prácticas

Utiliza etiquetas de imagen específicas (por ejemplo, python:3.11.5-slim) en lugar de latest para obtener resultados de escaneo consistentes y reproducibles.
  • Usa etiquetas específicas: Evita la etiqueta latest; fija versiones exactas para que los escaneos sean reproducibles.
  • Prefiere imágenes base mínimas: Utiliza variantes slim, Alpine o distroless para reducir la superficie de ataque.
  • Actualiza con regularidad: Mantén actualizadas las imágenes base para incorporar los parches de seguridad.
  • Usa compilaciones multietapa: Minimiza el tamaño de la imagen final y el conjunto de paquetes que contiene.

Relacionado