Skip to main content

Territorio inexplorado: descubrimiento de vulnerabilidades en Helm Charts públicos

Escrito por

18 de noviembre de 2019

0 minutos de lectura

Al igual que en nuestro informe sobre la seguridad de las imágenes de Docker, quisimos analizar el estado de las vulnerabilidades en el repositorio público de Helm Charts.

Helm es un administrador de paquetes popular para Kubernetes. Además de permitir que los desarrolladores empaqueten sus propias aplicaciones, el repositorio oficial de Charts contiene cientos de Charts que puedes usar para instalar software de terceros, como Jenkins, PostgreSQL y muchos otros. Esto ahorra tiempo y te permite aprovechar la experiencia de quienes empaquetan el software y facilitan su configuración.

Veamos rápidamente un ejemplo de un Helm Chart, en este caso, de Linkerd.

$ tree
.
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── config.yaml
│   ├── daemonset.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── values.yaml

1 directorio, 9 archivos.

En el archivo values.yaml encontramos detalles de algunas imágenes de contenedor que podrían contener vulnerabilidades:

image: buoyantio/linkerd:1.1.2
image: buoyantio/kubectl:v1.6.2

Vulnerabilidades en imágenes de Helm Charts

Como ocurre con cualquier repositorio de contenido de terceros, las vulnerabilidades en Helm Charts populares pueden representar un riesgo para muchos usuarios. En Snyk, ayudamos a los desarrolladores a usar contenido de terceros de forma segura. Ya ofrecemos herramientas para proteger dependencias de código abierto en administradores de paquetes populares (por ejemplo, para Java, .NET, Python, Node.js, Ruby y otros), además de herramientas para detectar vulnerabilidades en imágenes de contenedor. Al analizar los desafíos de proteger contenido de terceros en Kubernetes, nos preguntamos: «¿Cómo puedo saber qué vulnerabilidades hay en las imágenes de este Helm Chart?». Por ahora, esto requiere un proceso bastante manual:

  1. Identificar qué imágenes usa el Chart; probablemente tengas que revisar las plantillas renderizadas e identificar las versiones específicas de las imágenes.

  2. Analizar esas imágenes una por una, lo que probablemente implique ejecutar varios comandos y combinar los resultados manualmente.

Esto se complica aún más porque los Helm Charts pueden aceptar configuraciones que afecten las imágenes que se usan.

Presentamos el informe sobre la seguridad de Helm Charts

En nuestro nuevo informe analizamos el estado de las vulnerabilidades en el repositorio público de Helm Charts. No pretendemos señalar que Helm sea inseguro, como tampoco lo es cualquier otro repositorio popular de contenido de terceros. Más bien, queremos iniciar una conversación sobre mejores formas de proteger Helm Charts para que aún más personas puedan aprovechar su facilidad de uso. Esto fue lo que encontramos:

  • El 68 % de los Helm Charts estables contiene una imagen con una vulnerabilidad de gravedad alta.

  • El 64 % de los Helm Charts estables podría reducir la cantidad de vulnerabilidades si se actualizara a las imágenes publicadas más recientes.

  • 6 imágenes (de un total de 416) representan la mitad de los casos de vulnerabilidad.

También compartimos este trabajo con la comunidad de Helm. Matt Butcher, uno de los responsables del mantenimiento de Helm Org, comentó:

«Para que el ecosistema nativo de la nube alcance todo su potencial, debemos mejorar la seguridad de forma colectiva. Esto significa aplicar un conjunto de patrones, técnicas y herramientas centrados específicamente en las tecnologías nativas de la nube. El proyecto Helm tiene un gran interés en la seguridad de nuestro software principal, nuestros charts y las prácticas de la comunidad. Y recibimos con entusiasmo una nueva generación de herramientas que nos ayuden a identificar y corregir vulnerabilidades de manera proactiva».

Presentamos el plugin de Helm de Snyk

Como parte de la investigación anterior, creamos un plugin que facilita revisar tus propios Helm Charts en busca de vulnerabilidades, igual que cualquier otra tarea en Helm.

Puedes instalar el plugin de Helm de Snyk con los comandos integrados de Helm.

helm plugin install https://github.com/snyk-labs/helm-snyk

Para usar el plugin, necesitas una cuenta de Snyk, que puedes obtener gratis en https://snyk.io/signup/. Una vez que tengas una cuenta, puedes probar tus charts así:

helm snyk test <path-to-chart>

Por ejemplo, aquí tienes una prueba del Chart de Redis del repositorio público de Charts:

$ helm snyk test stable/redis

Image: docker.io/bitnami/redis:5.0.5-debian-9-r181

Testing docker.io/bitnami/redis:5.0.5-debian-9-r181...

✗ Low severity vulnerability found in tar
Description: CVE-2005-2541
Info: https://snyk.io/vuln/SNYK-LINUX-TAR-105079
Introduced through: meta-common-packages@meta
From: meta-common-packages@meta > tar@1.29b-1.1

✗ Low severity vulnerability found in systemd/libsystemd0
Description: CVE-2019-9619
Info: https://snyk.io/vuln/SNYK-LINUX-SYSTEMD-442642
Introduced through: systemd/libsystemd0@232-25+deb9u12, util-linux/bsdutils@1:2.29.2-1+deb9u1, procps@2:3.3.12-3+deb9u1, sysvinit/sysvinit-utils@2.88dsf-59.9, systemd/libudev1@232-25+deb9u12, util-linux/mount@2.29.2-1+deb9u1
From: systemd/libsystemd0@232-25+deb9u12
From: util-linux/bsdutils@1:2.29.2-1+deb9u1 > systemd/libsystemd0@232-25+deb9u12
From: procps@2:3.3.12-3+deb9u1 > procps/libprocps6@2:3.3.12-3+deb9u1 > systemd/libsystemd0@232-25+deb9u12

and 4 more...

Los Helm Charts suelen tener propiedades que puedes configurar al instalarlos, y algunas pueden afectar las imágenes que usará el chart. El plugin de Helm de Snyk usa la misma interfaz que los demás comandos de Helm para permitirte configurar propiedades individuales y probar distintas variantes. Por ejemplo:

helm snyk test stable/mysql --set imageTag=latest

Conclusión

Con el informe sobre la seguridad de Helm Charts, ayudamos a la comunidad de Helm a encontrar vulnerabilidades y facilitamos su corrección. El plugin de Helm de Snyk te permite probar rápidamente tus Helm Charts, ya sea que estés investigando un Chart de terceros o realizando verificaciones periódicas como parte de tus pipelines de CI/CD. Pronto, Snyk ofrecerá más herramientas para ayudar a los desarrolladores a usar contenido de terceros de forma más segura.

Publicado en: