Buscar vulnerabilidades en imágenes de Docker con Snyk
Ya queda poco para que comience el Bootcamp de DevOps de Lemoncode y es por ello que estoy revisando y actualizando el contenido de todas las demos que tengo para contar Docker. Aprovechando que estas tienen un año he querido escanear aquellas imágenes que utilicé entonces en busca de vulnerabilidades ¡y bingo! no puedes descuidarte tampoco en este aspecto, al igual que con los secretos. En este artículo te cuento cómo lo hago.
Dockerfile de ejemplo
Para que veas cómo ejecutarlo y qué información te aporta voy a utilizar este Dockerfile de ejemplo:
Lo primero que debemos hacer es generar la imagen en local a través del siguiente comando:
Ahora ya tenemos una imagen que analizar.
Escanear la imagen desde el cliente de Docker
La forma de hacer este proceso es súper sencilla, gracias a integración que se ha hecho con el servicio Snyk. Para comenzar el escaneo solo debes ejecutar lo siguiente:
Esto comenzará con el análisis donde devolverá una salida más o menos extensa, dependiendo de las vulnerabilidades que encuentre, y con un resumen final:
En él, como ves, no solo te dice cuántas vulnerabilidades ha encontrado, incluso si haces scroll hacia arriba puedes ver en detalle cuáles son y su criticidad, sino que además te hace recomendaciones en cuanto a la imagen base que deberías de utilizar. En mi caso me ofrece varias alternativas, por lo que voy a modificar mi Dockerfile con la primera de las opciones:
Si vuelvo a generar la imagen y a escanearla:
Verás que la salida ahora muestra muchas menos vulnerabilidades y en este caso te dice que ahora ya estás usando la imagen base más segura:
También puedes incluso obtener un informe más detallado, si añades al comando el Dockerfile que genera la imagen:
E incluso excluir del análisis la imagen base, por si solo quieres centrarte el «lo que has hecho mal tú»
Este servicio también puede integrarse con los repositorios de Docker Hub:
Pero para ello debes tener una de las suscripciones de pago.
Sin embargo, puedes lanzarlo en local, con el plan gratuito que tienes solo por estar logado a Docker Hub (tiene limites de escaneo claro), mientras desarrollas o quieres comprobar cómo de segura es una imagen de terceros que quieres usar.
¡Saludos!