Escanear imágenes de Docker o, para ser más honestos, escanear tus imágenes de contenedores se está convirtiendo en una de las tareas cotidianas a realizar como parte del desarrollo de tu aplicación. El cambio de ritmo de cuán fácilmente surgen las nuevas vulnerabilidades, la explosión de dependencias que tiene cada una de las imágenes de contenedores y la cantidad de implementaciones por empresa hacen que sea bastante complejo mantener el ritmo para asegurar que puedan mitigar los problemas de seguridad.
Ya cubrimos este tema hace algún tiempo cuando la herramienta Docker Desktop introdujo la opción de escaneo basada en una integración con Synk y, más recientemente, con el último lanzamiento de Lens. Esta es una de las opciones para verificar las imágenes de contenedores de la versión “corporativa” de la herramienta. Y desde hace algún tiempo también, los registros centrales de la Nube han proporcionado tal como un ECR, incluyendo la opción de Escaneo como una de las capacidades para cualquier imagen implementada allí.
Pero, ¿qué pasa si ya te estás moviendo de Docker Desktop a otra opción, como podman o Rancher Desktop? ¿Cómo puedes escanear tus imágenes de docker?
Varios escáneres pueden usarse para escanear tus imágenes de contenedores localmente, y algunos de ellos son más fáciles de configurar que otros. Uno de los más conocidos es Clair, que también se está utilizando como parte del registro RedHat Quay y tiene mucha tracción. Funciona en un modo cliente-servidor que es excelente para ser utilizado por diferentes equipos que requieren una implementación más “empresarial”, generalmente estrechamente relacionada con un Registro. Sin embargo, no se adapta bien para ejecutarse localmente ya que requiere varios componentes y relaciones.
Como una opción fácil para probar localmente, tienes Trivy. Trivy es una herramienta interesante desarrollada por AquaSecurity. Puede que recuerdes la empresa ya que es la que está detrás de otros desarrollos relacionados con la seguridad en Kubernetes, como KubeBench, que ya cubrimos en el pasado.
En sus propias palabras, “Trivy es un escáner de seguridad integral. Es confiable, rápido y sencillo de usar y funciona donde lo necesites.”
¿Cómo instalar Trivy?
El proceso de instalación es relativamente fácil y está documentado para cada plataforma importante aquí. Sin embargo, al final, se basa en paquetes binarios disponibles como RPM, DEB, Brew, MacPorts, o incluso una imagen de Docker.
¿Cómo escanear imágenes de Docker con Trivy?
Una vez instalado, puedes simplemente ejecutar los comandos como este:
trivy image python:3.4-alpine Esto realizará las siguientes tareas:
- Actualizar la base de datos del repositorio con todas las vulnerabilidades
- Descargar la imagen en caso de que no esté disponible localmente
- Detectar los lenguajes y componentes presentes en esa imagen
- Validar las imágenes y generar un resultado
¿Qué salida proporciona Trivy?
Como ejemplo, esta es la salida para el python:3.4-alpine a partir de hoy:
Obtendrás una tabla con una fila por cada biblioteca o componente que haya detectado una vulnerabilidad mostrando el nombre de la Biblioteca y la exposición relacionada con ella con el código CVE. El código CVE es generalmente cómo se refieren a las vulnerabilidades ya que están presentes en un repositorio común con todas sus descripciones y detalles. Además de eso, muestra la severidad de la vulnerabilidad basada en el informe existente. También proporciona la versión actual detectada en la imagen y en caso de que haya una versión diferente que haya solucionado esa vulnerabilidad, la versión inicial que ha resuelto esa vulnerabilidad, y finalmente, un título para proporcionar un poco más de contexto sobre la vulnerabilidad:
Si una Biblioteca está relacionada con más de una vulnerabilidad, dividirá las celdas en esa fila para acceder a los diferentes datos para cada vulnerabilidad.