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.