Skip to main content

En territoire inconnu : découvrir les vulnérabilités des charts Helm publics

Écrit par

18 novembre 2019

0 minutes de lecture

Comme pour notre rapport sur la sécurité des images Docker, nous avons voulu examiner les vulnérabilités présentes dans le dépôt public de charts Helm.

Helm est un gestionnaire de packages très répandu pour Kubernetes. Les développeurs l’utilisent pour empaqueter leurs propres applications, et le dépôt officiel de charts contient des centaines de charts permettant d’installer des logiciels tiers comme Jenkins, PostgreSQL et bien d’autres. Cela fait gagner du temps, et vous bénéficiez également de l’expertise des personnes qui empaquettent ces logiciels et les rendent faciles à configurer.

Examinons rapidement un exemple de chart Helm, ici celui de Linkerd.

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

1 répertoire, 9 fichiers.

Le fichier values.yaml contient des informations sur plusieurs images de conteneurs susceptibles de présenter des vulnérabilités :

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

Vulnérabilités des images dans les charts Helm

Comme tout dépôt de contenu tiers, les vulnérabilités dans les charts Helm populaires peuvent représenter un risque pour de nombreux utilisateurs. Chez Snyk, nous aidons les développeurs à utiliser le contenu tiers en toute sécurité. Nous proposons déjà des outils pour sécuriser les dépendances open source utilisées par les gestionnaires de packages courants (notamment pour Java, .NET, Python, Node.js, Ruby et d’autres), ainsi que des outils pour détecter les vulnérabilités dans les images de conteneurs. En examinant les défis liés à la sécurisation du contenu tiers dans Kubernetes, nous nous sommes demandé : « Comment savoir quelles vulnérabilités sont présentes dans les images utilisées par ce chart Helm ? » Pour l’instant, la démarche est assez manuelle :

  1. Déterminer quelles images le chart utilise, ce qui implique probablement d’examiner les modèles générés et d’identifier les versions précises des images.

  2. Analyser ces images une par une, ce qui implique probablement d’exécuter plusieurs commandes et de compiler manuellement les résultats.

La situation se complique encore, car les charts Helm peuvent accepter des paramètres qui influent sur les images utilisées.

Présentation du rapport sur la sécurité des charts Helm

Dans notre nouveau rapport, nous examinons les vulnérabilités présentes dans le dépôt public de charts Helm. Notre objectif n’est pas de présenter Helm comme moins sûr que n’importe quel autre dépôt populaire de contenu tiers. Nous souhaitons plutôt ouvrir la discussion sur de meilleures façons de sécuriser les charts Helm, afin qu’encore plus de personnes puissent profiter de leur simplicité d’utilisation. Voici ce que nous avons découvert :

  • 68 % des charts Helm stables contiennent une image présentant une vulnérabilité de gravité élevée.

  • 64 % des charts Helm stables pourraient réduire le nombre de vulnérabilités en passant aux dernières images publiées.

  • 6 images (sur un total de 416) représentent la moitié des cas de vulnérabilité.

Nous avons également partagé ces travaux avec la communauté Helm. Matt Butcher, l’un des responsables de Helm Org, a déclaré :

« Pour que l’écosystème cloud native réalise tout son potentiel, nous devons améliorer collectivement la sécurité. Cela implique d’appliquer des pratiques, des techniques et des outils conçus spécifiquement pour les technologies cloud native. Le projet Helm accorde une grande importance à la sécurité de ses logiciels fondamentaux, de ses charts et des pratiques de sa communauté. Nous accueillons avec enthousiasme une nouvelle génération d’outils qui nous aident à repérer et à corriger les vulnérabilités de manière proactive. »

Présentation du plugin Helm de Snyk

Dans le cadre de cette étude, nous avons créé un plugin qui permet de vérifier aussi facilement les vulnérabilités de vos propres charts Helm que d’effectuer toute autre opération dans Helm.

Vous pouvez installer le plugin Helm de Snyk à l’aide des commandes intégrées à Helm.

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

Pour utiliser le plugin, vous devez disposer d’un compte Snyk, gratuit sur https://snyk.io/signup/. Une fois votre compte créé, vous pouvez tester vos charts comme suit.

helm snyk test <path-to-chart>

Voici, par exemple, un test du chart Redis provenant du dépôt public 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...

Les charts Helm comportent souvent des propriétés que vous pouvez définir au moment de l’installation. Certaines peuvent influer sur les images utilisées par le chart. Le plugin Helm de Snyk utilise la même interface que les autres commandes Helm pour vous permettre de définir des propriétés individuelles et de tester différentes configurations, par exemple :

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

Conclusion

Avec le rapport sur la sécurité des charts Helm, nous aidons la communauté Helm à repérer les vulnérabilités et à les corriger plus facilement. Le plugin Helm de Snyk vous permet de tester rapidement et facilement vos charts Helm, que vous examiniez un chart tiers ou que vous exécutiez régulièrement des vérifications dans vos pipelines CI/CD. Snyk proposera prochainement d’autres outils pour aider les développeurs à utiliser le contenu tiers plus sûrement.

Publié dans: