Skip to main content

Las diez imágenes de Docker principales contienen más de 8000 rutas vulnerables

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

Security in The Container Registry small

7 de marzo de 2019

0 minutos de lectura

Introducción

En esta publicación, profundizaremos en las imágenes de Docker y los ecosistemas de contenedores incluidos en nuestro informe State of Open Source Security, donde encontramos que las diez imágenes de Docker principales contienen más de 8000 rutas vulnerables.

Nos entusiasma ayudar a nuestra comunidad a comprender mejor la seguridad de Docker. Desde que publicamos el State of Open Source Security anterior, Snyk lanzó herramientas para ayudar a los desarrolladores a comprender y mitigar las vulnerabilidades en contenedores. Nos encanta compartir nuestros conocimientos sobre el estado de la seguridad del código abierto y también ofrecer herramientas para ayudarte a encontrar y corregir las vulnerabilidades en tus imágenes de contenedor.

En nuestra investigación para el informe State of Open Source Security, observamos las siguientes estadísticas sobre quién es responsable de la seguridad de los contenedores y quién realmente la pone en práctica.

  • El 68 % de los usuarios considera que los desarrolladores deberían ser responsables de la seguridad de sus imágenes de contenedor de Docker.

  • El 54 % de los desarrolladores no realiza ninguna prueba de seguridad de imágenes de Docker.

  • Solo el 15,5 % de los usuarios afirma probar sus imágenes de Docker para detectar vulnerabilidades durante el desarrollo.

Estos datos sugieren que existe una desconexión entre quién es responsable de la seguridad y cómo se pone en práctica. Como los desarrolladores son responsables de la seguridad de las imágenes de contenedor, se beneficiarían mucho de incorporar la seguridad antes en su flujo de trabajo, durante el desarrollo; ¡pero solo el 15,5 % lo hace! Las cifras también sugieren que hay desarrolladores responsables de la seguridad que no la ponen en práctica activamente. Esto significa que incluso las soluciones más sencillas —como corregir vulnerabilidades actualizando la etiqueta base o reconstruyendo la imagen de Docker— podrían pasar inadvertidas.

Por estos motivos, nos pareció buena idea analizar más a fondo las vulnerabilidades que encontramos para ayudar a los desarrolladores a comprender los problemas de seguridad relevantes para sus contenedores de Docker.

Análisis detallado de la seguridad de Docker

Analizaremos en detalle las rutas de vulnerabilidades, la relación entre las dependencias y las vulnerabilidades, y la gravedad de estas.

Una nota rápida: estas cifras corresponden al momento en que se redactó esta publicación, por lo que varían ligeramente de las presentadas en el informe State of Open Source Security.

Rutas hacia las vulnerabilidades

A veces, una vulnerabilidad específica se introduce a través de varias dependencias. Snyk no quería contar estas vulnerabilidades varias veces, ya que eso daría la impresión de que la imagen es mucho menos segura de lo que realmente es. Sin embargo, es importante entender que una vulnerabilidad puede introducirse varias veces: cuantas más dependencias estén asociadas a ella, más difícil puede ser corregirla. Para dar una idea de la frecuencia con que esto ocurre, Snyk utiliza el concepto de «rutas», que describe cuántas vías permiten que se introduzcan vulnerabilidades en la imagen. Por este motivo, me pareció buena idea entender la proporción entre rutas y vulnerabilidades para tener una idea general de lo difícil que podría ser eliminar las vulnerabilidades de una imagen de Docker determinada.

Tabla que compara las vulnerabilidades, las rutas y las rutas por vulnerabilidad en distintas imágenes de Docker, con un total de 1,075 vulnerabilidades y 8,204 rutas.

En esta tabla vemos que probablemente sea más difícil eliminar vulnerabilidades de la imagen de Docker de Node. También podemos ver que es probable que cada vulnerabilidad presente en las 10 imágenes analizadas tenga más de una ruta asociada. Por suerte, con Snyk no tienes que desenredar estos nudos por tu cuenta. Nuestras herramientas para Docker pueden ayudarte a determinar cómo eliminar estas vulnerabilidades o sugerirte otras imágenes de Docker que puedes usar.

Dependencias

Ahora profundicemos en las dependencias de cada imagen de Docker. La siguiente tabla nos permite entender cómo se relaciona la cantidad de dependencias con la cantidad de vulnerabilidades.

Tabla que compara las vulnerabilidades, dependencias y proporciones de vulnerabilidades por dependencia en imágenes de Docker, con los totales.

Al considerar en conjunto las diez imágenes de Docker que estudiamos, observamos que por cada diez dependencias agregadas, probablemente se introduzcan siete vulnerabilidades. Node es un caso atípico: en promedio, introduce 14 vulnerabilidades por cada 10 dependencias agregadas, ¡el doble del promedio!

Gravedad

Snyk clasifica la gravedad de las vulnerabilidades como alta, media o baja. Estas categorías ayudan a los usuarios a evaluar y priorizar qué vulnerabilidades corregir primero. Comprender la gravedad de las vulnerabilidades encontradas en las imágenes de Docker nos da una mejor idea del alcance del problema de seguridad.

¡Hay buenas noticias sobre la gravedad de las vulnerabilidades! La gran mayoría de las vulnerabilidades observadas en nuestro estudio se clasificaron como de gravedad baja: representaron el 74,9 %. Las de gravedad media representaron el 16,9 %, seguidas por las de gravedad alta, con un 8,2 %. Es una buena noticia porque los usuarios pueden priorizar el pequeño número de vulnerabilidades de gravedad alta y lograr un gran impacto en la seguridad de sus contenedores.

El desglose de la gravedad de las vulnerabilidades por imagen de Docker es el siguiente: 

Tabla que compara los porcentajes de gravedad baja, media y alta de imágenes de Docker, como node, postgres, nginx y otras.

Vemos que, aunque hay variaciones entre las distintas imágenes de Docker, en general la mayoría de las vulnerabilidades son de gravedad baja. ¡Es una buena noticia!

Conclusiones

Nuestros hallazgos —que las diez imágenes de Docker principales contienen más de 8000 rutas hacia vulnerabilidades—, junto con la observación de que casi cada dependencia presente en estas imágenes agregó vulnerabilidades, constituyen un argumento sólido a favor del uso de imágenes base mínimas. Esta recomendación también fue nuestra práctica de seguridad número uno en la guía rápida sobre seguridad de Docker que publicamos recientemente.

Si prefieres imágenes mínimas que incluyan solo las herramientas y bibliotecas del sistema necesarias para ejecutar tu proyecto, también reduces la superficie de ataque y te aseguras de distribuir un sistema operativo seguro. Esto puede significar menos vulnerabilidades, menos rutas hacia ellas y menos dependencias en general, lo que da como resultado un contenedor más seguro.

La seguridad de Docker puede ser compleja, pero las herramientas de Snyk facilitan la corrección de vulnerabilidades y la búsqueda de una imagen base segura.

Seguridad de contenedores centrada en los desarrolladores

Snyk encuentra y corrige automáticamente vulnerabilidades en imágenes de contenedores y cargas de trabajo de Kubernetes.