Skip to main content

Las diez imágenes de Docker más populares tienen al menos 30 vulnerabilidades cada una

Escrito por
the state op open source small

26 de febrero de 2019

0 minutos de lectura

Te damos la bienvenida al informe anual de Snyk sobre el estado de la seguridad del código abierto de 2019. Este informe se divide en varias publicaciones:

O descarga nuestro atractivo informe en PDF, elaborado artesanalmente, que reúne toda esta información y mucho más en un solo lugar.

Descarga el Informe de seguridad del código abierto de 2019

Vulnerabilidades conocidas en imágenes de Docker

La adopción de la tecnología de contenedores de aplicaciones está aumentando a un ritmo notable y se espera que crezca otro 40 % en 2020, según 451 Research. Es común que haya bibliotecas del sistema disponibles en muchas imágenes de Docker, ya que estas dependen de una imagen principal que suele usar una distribución de Linux como base.

Las imágenes de Docker casi siempre incluyen vulnerabilidades conocidas junto con sus grandes ventajas

Analizamos diez de las imágenes más populares con las funciones de análisis de Docker que Snyk lanzó recientemente.

Los resultados muestran que todas las imágenes de Docker que analizamos contenían versiones vulnerables de bibliotecas del sistema. La imagen oficial de Node.js incluye 580 bibliotecas del sistema vulnerables, mientras que cada una de las demás incluye al menos 30 vulnerabilidades conocidas públicamente.

Gráfico de barras que muestra las vulnerabilidades del sistema operativo por imagen de Docker: node 580, postgres 89, nginx 85, httpd 69, mongo y mysql 61 cada una.

Snyk lanzó recientemente su solución de administración de vulnerabilidades en contenedores para que los desarrolladores puedan hacerse plenamente responsables de la seguridad de sus aplicaciones en contenedores Docker. Con esta nueva función, los desarrolladores pueden encontrar vulnerabilidades conocidas en sus imágenes base de Docker y corregirlas con las recomendaciones de remediación de Snyk. Snyk sugiere una actualización mínima o imágenes base alternativas que contengan menos vulnerabilidades o ninguna.

La corrección puede ser sencilla si sabes qué hacer. El 20 % de las imágenes puede corregir vulnerabilidades simplemente con volver a crear la imagen de Docker; el 44 %, cambiando la imagen base.

Según los análisis realizados por usuarios de Snyk, descubrimos que el 44 % de los análisis de imágenes de Docker detectó vulnerabilidades conocidas para las que había imágenes base más recientes y seguras. Esta recomendación de remediación es exclusiva de Snyk. Los desarrolladores pueden tomar medidas para actualizar sus imágenes de Docker.

Snyk también informó que el 20 % de los análisis de imágenes de Docker detectó vulnerabilidades conocidas que podían reducirse simplemente volviendo a crear la imagen.

Diferencias en las vulnerabilidades según la etiqueta de la imagen

La versión actual de soporte a largo plazo (LTS) del entorno de ejecución de Node.js es la versión 10. La imagen etiquetada como 10 (es decir, node:10) es básicamente un alias de node:10.14.2- jessie (en el momento en que la probamos), donde jessie indica una versión obsoleta de Debian que ya no recibe mantenimiento activo.

Si hubieras elegido esa imagen como imagen base en tu Dockerfile, te habrías expuesto a 582 bibliotecas del sistema vulnerables incluidas en ella. Otra opción es usar la etiqueta de imagen node:10-slim, que ofrece imágenes más livianas sin dependencias innecesarias (por ejemplo, omite las páginas man y otros recursos). Sin embargo, elegir node:10-slim seguiría incluyendo 71 bibliotecas del sistema vulnerables.

La mayoría de las vulnerabilidades se originan en la imagen base que seleccionaste. Por eso, la remediación debe enfocarse en corregir la imagen base

La imagen node:10-alpine es una mejor opción si quieres una imagen base muy pequeña con un conjunto mínimo de bibliotecas del sistema. Sin embargo, aunque no detectamos vulnerabilidades en la versión de la imagen de Alpine que probamos, eso no significa necesariamente que esté libre de problemas de seguridad.

Alpine Linux gestiona las vulnerabilidades de manera distinta a las otras distribuciones principales, que suelen incorporar parches mediante backport. En Alpine, prefieren ciclos de lanzamiento rápidos para sus imágenes, y cada lanzamiento incluye una actualización de las bibliotecas del sistema.

Gráfico de barras que muestra las vulnerabilidades por etiqueta de imagen de Node: node:10 tiene 582, node:10-slim tiene 71 y node:10-alpine tiene 0.

Además, Alpine Linux no mantiene un programa de avisos de seguridad. Esto significa que, si una biblioteca del sistema tiene vulnerabilidades, Alpine Linux no publicará un aviso oficial al respecto. En su lugar, mitigará la vulnerabilidad creando una nueva versión de la imagen base que incluya una versión actualizada de esa biblioteca para corregir el problema, si está disponible (en vez de incorporar parches mediante backport, como se mencionó).

No hay garantía de que la versión más reciente corregida de una biblioteca vulnerable esté disponible de inmediato en Alpine Linux, aunque muchas veces sí lo está. Aun así, si puedes cambiar a la versión de Alpine Linux sin afectar tu aplicación, puedes reducir la superficie de ataque de tu entorno porque usarás menos bibliotecas.

En realidad, el uso de una etiqueta de imagen como node:10 es un alias de otra imagen que cambia constantemente a medida que se lanzan nuevas versiones menores y con parches de la versión 10.

Informe de terminal que muestra 826 vulnerabilidades en una imagen de Docker de Node.js, con un desglose por nivel de gravedad y recomendaciones de imágenes base de menor riesgo.

Algunos equipos optan por usar una etiqueta de versión específica en lugar de un alias para que su imagen base sea, por ejemplo, node:10.8.0-jessie. Sin embargo, a medida que se lanzan nuevas versiones de Node 10, es muy probable que esas imágenes más recientes incluyan menos vulnerabilidades en las bibliotecas del sistema.

Con las funciones de análisis de Docker de Snyk, descubrimos que, cuando un proyecto usa una etiqueta de versión específica como node:10.8.0-jessie, podemos recomendar imágenes más recientes con menos vulnerabilidades.

Vulnerabilidades conocidas en bibliotecas del sistema

Aumenta la cantidad de vulnerabilidades reportadas en bibliotecas del sistema, que afectan a algunas de las distribuciones populares de Linux, como Debian, RedHat Enterprise Linux y Ubuntu. Solo en 2018 registramos 1,597 vulnerabilidades en bibliotecas del sistema con CVE asignados para estas distribuciones, más de cuatro veces la cantidad registrada en 2017.

Gráfico de líneas que muestra el aumento constante de las vulnerabilidades de los sistemas operativos Linux de Debian, RHEL y Ubuntu entre 2008 y 2018.

Al revisar el desglose de las vulnerabilidades de gravedad alta y crítica, queda claro que estos niveles de gravedad siguieron aumentando durante 2017 y 2018.

Gráfico de barras apiladas de vulnerabilidades altas y críticas en bibliotecas del sistema de 2014 a 2018, con totales que alcanzan su punto máximo en 2017 y 2018.

Sigue leyendo: