Saltar al contenido

Análisis de contenedores utilizando TRIVY

Compartir en:

En la era de la digitalización, la ciberseguridad es una preocupación fundamental para cualquier organización. Con cada vez más empresas adoptando enfoques basados en la nube y utilizando tecnologías de contenedores como Docker y Kubernetes, es vital comprender que estos contenedores, al igual que cualquier otro elemento de nuestra infraestructura de TI, pueden ser susceptibles a amenazas de seguridad. Es aquí donde el análisis de imágenes de contenedores juega un papel crucial.

Los contenedores proporcionan un medio eficiente y escalable para desarrollar y desplegar aplicaciones. Sin embargo, también pueden presentar un riesgo si no se manejan correctamente. Las imágenes de contenedores que no se han verificado o analizado pueden contener software malicioso, vulnerabilidades no parcheadas o configuraciones inseguras que pueden ser explotadas por actores malintencionados.

Por esta razón, el análisis de imágenes de contenedores debería ser un elemento esencial de nuestra estrategia de seguridad informática. Al revisar y analizar sistemáticamente las imágenes de contenedores antes de su implementación, podemos identificar y remediar cualquier amenaza potencial, garantizando así un entorno de TI seguro y robusto.

Trivy es una herramienta de análisis de vulnerabilidades de código abierto desarrollada por Aqua Security. Es simple de usar y muy eficaz para buscar vulnerabilidades tanto en las imágenes de contenedores como en las dependencias de los proyectos de código fuente.

Puntos fuertes de TRIVY

Sus puntos fuertes a mi parecer son:

  • Análisis de imágenes de contenedores: Trivy puede escanear las imágenes de los
    contenedores en busca de vulnerabilidades. Soporta varios formatos de imagen de contenedor, incluyendo Docker y OCI. Puede detectar vulnerabilidades en los paquetes del sistema operativo y en las bibliotecas que se incluyen en las imágenes del contenedor.
  • Análisis de dependencias del proyecto: Trivy también puede escanear las dependencias de los proyectos de código fuente. Soporta muchos lenguajes de programación y gestores de paquetes.
  • Base de datos de vulnerabilidades: Trivy mantiene una base de datos de vulnerabilidades de código abierto que se actualiza regularmente. Esto significa que
    podemos obtener información sobre las últimas vulnerabilidades conocidas (muy
    importante en el entorno actual).
  • Integración con CI/CD: Trivy es fácil de integrar en los pipelines de CI/CD, lo que permite realizar análisis de seguridad de forma automática como parte del proceso de construcción y despliegue. Esto ayuda a identificar y corregir vulnerabilidades antes de que el código llegue a la producción proporcionando un código más seguro.

Instalando TRIVY

Para instalar TRIVY voy a utilizar un simple PC con linux, podéis usar la distro que os guste más o incluso las WLS de Windows.

Preparamos el entorno

sudo apt-get install wget apt-transport-https gnupg lsb-release

Veremos algo como esto:

wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null

Actualizamos el repositorio e instalamos:

sudo apt-get update

Instalamos y comprobamos:

sudo apt-get install trivy

Ejecutando un análisis con TRIVY

Según la documentación oficial de Trivy para analizar una imagen debemos ejecutar la secuencia de la siguiente manera:

En nuestro caso vamos a analizar una imagen que he estado probando estos días, así que nuestro blanco será la imagen de keycloack, que es un gestor de identidades y accesos de Código abierto.

Siguiendo el patrón, (es insultantemente fácil) ejecutamos:

trivy image jboss/keycloak

Y esperamos al resultado. Este puede ser algo tedioso de ver en la consola, pero en nuestro caso a detectado varios problemas de seguridad, 25 de ellos potencialmente altos:

Para cada vulnerabilidad, Trivy muestra:

  • LIBRARY: El paquete o biblioteca donde se encontró la vulnerabilidad.
  • VULNERABILITY ID: El identificador de la vulnerabilidad, generalmente un ID de CVE.
  • SEVERITY: La gravedad de la vulnerabilidad, que puede ser UNKNOWN, LOW, MEDIUM, HIGH o CRITICAL.
  • INSTALLED VERSION: La versión del paquete o biblioteca que está instalada en la imagen de Docker.
  • FIXED VERSION: La versión del paquete o biblioteca en la que se solucionó la
    vulnerabilidad, si está disponible.
  • TITLE: Un título breve que describe la vulnerabilidad.

No dudes en probar con más imágenes, es muy fácil de utilizar y se ven cosas muy interesantes.

Otros aspectos de seguridad con contenedores

Principios de mínimos privilegios: Es crucial seguir el principio de mínimos privilegios al trabajar con contenedores. Esto implica que los procesos dentro de los contenedores deberían ejecutarse con el menor nivel de privilegios posible.

Por ejemplo, se debe evitar ejecutar contenedores como root siempre que sea posible, ya que esto puede dar a un atacante el control total sobre el sistema host si el contenedor se ve comprometido.

Configuración de seguridad del contenedor: La configuración por defecto de los contenedores a menudo no está optimizada para la seguridad. Los desarrolladores y administradores deben revisar y ajustar la configuración de seguridad de cada contenedor.

Si tengo que poner un ejemplo, normalmente, se deben limitar los recursos del sistema (como la CPU y la memoria) que un contenedor puede usar para evitar ataques de denegación de servicio. Además, se deben restringir las capacidades del contenedor (como la capacidad de
hacer ping o montar sistemas de archivos) para reducir la superficie de ataque.

Gestión de secretos: Las aplicaciones en contenedores a menudo necesitan acceder a secretos, como contraseñas y claves API.

Es importante manejar estos secretos de manera segura. En lugar de codificar los secretos directamente en las imágenes de los contenedores o pasarlos como variables de entorno (que pueden ser expuestas fácilmente), se debe utilizar una solución de gestión de secretos, como HashiCorp’s Vault o AWS Secrets Manager.

Red de contenedores: El tráfico de red entre contenedores debe ser controlado y protegido. Los contenedores a menudo se comunican entre sí en una red virtual, y un atacante puede explotar esto para realizar ataques de movimiento lateral si un contenedor se ve comprometido. Las
reglas de firewall y las políticas de red pueden ayudar a limitar las comunicaciones entre contenedores a lo estrictamente necesario.

Imágenes de contenedores de confianza: se debe asegurar de que las imágenes de
contenedores que se emplean provienen de fuentes de confianza y están bien mantenidas. Las imágenes de contenedores pueden contener software malicioso o estar desactualizadas en términos de parches de seguridad. Es recomendable usar imágenes de contenedores de proveedores de
confianza, y siempre mantenerlas actualizadas con las últimas versiones y parches de seguridad.

Conclusión

El mundo de la ciberseguridad es cada vez más complejo y dinámico, especialmente con la adopción generalizada de tecnologías de contenedores en las organizaciones modernas. En este entorno, herramientas como Trivy, que permite el análisis de imágenes de contenedores y dependencias de proyectos, se convierten en piezas esenciales para garantizar la seguridad de nuestra infraestructura. Trivy no solo ofrece un mecanismo eficiente para detectar y mitigar vulnerabilidades, sino que también se integra perfectamente con los pipelines de CI/CD, asegurando un entorno más seguro antes de que el código llegue a producción.

No obstante, el uso de herramientas como Trivy no debe llevarnos a descuidar otros aspectos fundamentales de la seguridad en contenedores. El principio de mínimos privilegios, una gestión de secretos adecuada, una red de contenedores segura, y el uso de imágenes de contenedores de confianza, son solo algunos de los muchos elementos que deben formar parte de nuestra estrategia de seguridad.

Finalmente, es importante tener en cuenta que la seguridad no es un estado que se alcanza, sino un proceso continuo. Siempre debemos estar al tanto de las últimas amenazas y vulnerabilidades, actualizando nuestras herramientas y estrategias de seguridad para mantenernos un paso por delante de los actores malintencionados. Al fin y al cabo, en el mundo de la ciberseguridad, la prevención y la anticipación son la clave para garantizar la seguridad de nuestras organizaciones.


Juan Ibero

Inmerso en la Evolución Tecnológica. Ingeniero Informático especializado en la gestión segura de entornos TI e industriales, con un profundo énfasis en seguridad, arquitectura y programación. Siempre aprendiendo, siempre explorando.

Compartir en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *