🔍 Escaneo de Imágenes con Docker Scout
Ahora que entendemos qué es Docker Scout, vamos a escanear nuestras imágenes de Docker en busca de vulnerabilidades de seguridad.
1️⃣ Instalar Docker Scout
Asegúrate de que Docker Scout esté instalado ejecutando:
docker scout versionSi no está instalado, actualiza Docker a la última versión o instálalo manualmente:
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh2️⃣ Crear un Dockerfile Vulnerable para Pruebas
Vamos a crear un Dockerfile con vulnerabilidades conocidas para demostrar las capacidades de Docker Scout:
cat << 'EOF' > Dockerfile.vulnerable
# Etapa de construcción
# Usando Node.js 12.22.0 que tiene CVE-2021-22883 (vulnerabilidades de OpenSSL)
FROM node:12.22.0-alpine as build
WORKDIR /app
ENV DISABLE_ESLINT_PLUGIN=true
# Copiar archivos de paquetes e instalar dependencias
COPY package*.json ./
RUN npm install --no-package-lock --legacy-peer-deps
# Copiar el resto del código de la aplicación
COPY . .
RUN npm run build
# Etapa de producción
# Usando Nginx 1.14.0 que tiene CVE-2019-9516 (vulnerabilidad DoS en HTTP/2)
FROM nginx:1.14.0-alpine
# Copiar la salida de la construcción para reemplazar el contenido por defecto de nginx
COPY --from=build /app/build /usr/share/nginx/html
# Copiar configuración de nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Instalar paquetes adicionales - usando una versión vulnerable de curl
# CVE-2018-1000120 en curl 7.60.0
RUN apk add --no-cache curl openssl
# Exponer puerto
EXPOSE 80
# Iniciar nginx
CMD ["nginx", "-g", "daemon off;"]
EOFEste Dockerfile utiliza intencionalmente:
- Node.js 12.22.0 con vulnerabilidades conocidas de OpenSSL.
- Nginx 1.14.0 con vulnerabilidad de DoS en HTTP/2.
- Una versión vulnerable de curl.
3️⃣ Construir la Imagen Vulnerable
Construye la imagen usando el Dockerfile vulnerable:
docker build -t $DOCKER_USERNAME/rent-a-room:vulnerable -f Dockerfile.vulnerable .4️⃣ Escanear la Imagen Vulnerable con Docker Scout
Ahora escaneemos nuestra imagen vulnerable:
docker scout quickview $DOCKER_USERNAME/rent-a-room:vulnerable🔹 Esto mostrará un resumen de las vulnerabilidades en la imagen.
🔹 Para obtener un informe detallado, ejecuta:
docker scout cves $DOCKER_USERNAME/rent-a-room:vulnerableEjemplo de salida:

🔹 Cada resultado es un enlace a Docker Scout, haz clic para ver más.
5️⃣ Entendiendo la Salida
| Columna | Descripción |
|---|---|
| CVE ID | El identificador de la vulnerabilidad. |
| Severity | El nivel de riesgo (Low, Medium, High, Critical). |
| Affected Package | El componente que contiene la vulnerabilidad. |
| Remediation | Actualización o parche sugerido. |
6️⃣ Escanear Nuestra Imagen de Aplicación
También podemos escanear la imagen de la aplicación que construimos y enviamos en la sección anterior:
docker scout quickview $DOCKER_USERNAME/rent-a-room:latest
docker scout cves $DOCKER_USERNAME/rent-a-room:latestCompara los resultados entre la imagen vulnerable y nuestra imagen de aplicación.
📌 Próximos Pasos
Ahora que hemos identificado vulnerabilidades, vamos a remediarlas en nuestro Dockerfile.
¡Pasa a la siguiente sección para aprender cómo solucionar problemas de seguridad! 🚀
