Skip to content

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

bash
docker scout version

Si no está instalado, actualiza Docker a la última versión o instálalo manualmente:

bash
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh

2️⃣ Crear un Dockerfile Vulnerable para Pruebas

Vamos a crear un Dockerfile con vulnerabilidades conocidas para demostrar las capacidades de Docker Scout:

bash
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;"]
EOF

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

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

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

bash
docker scout cves $DOCKER_USERNAME/rent-a-room:vulnerable

Ejemplo de salida:

Detalles de Scout

🔹 Cada resultado es un enlace a Docker Scout, haz clic para ver más.


5️⃣ Entendiendo la Salida

ColumnaDescripción
CVE IDEl identificador de la vulnerabilidad.
SeverityEl nivel de riesgo (Low, Medium, High, Critical).
Affected PackageEl componente que contiene la vulnerabilidad.
RemediationActualizació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:

bash
docker scout quickview $DOCKER_USERNAME/rent-a-room:latest
docker scout cves $DOCKER_USERNAME/rent-a-room:latest

Compara 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! 🚀

Released under the GPL-3.0 License.