Skip to main content

Neuland entdecken – Schwachstellen in öffentlichen Helm-Charts finden

Artikel von

18. November 2019

0 Min. Lesezeit

Ähnlich wie in unserem Bericht zur Sicherheit von Docker-Images wollten wir uns ansehen, wie es um Schwachstellen im öffentlichen Helm-Charts-Repository bestellt ist.

Helm ist ein beliebter Paketmanager für Kubernetes. Entwickler können damit ihre eigenen Anwendungen paketieren. Außerdem enthält das offizielle Charts-Repository Hunderte von Charts, mit denen Sie Software von Drittanbietern wie Jenkins, PostgreSQL und vieles mehr installieren können. Das spart Zeit. Gleichzeitig profitieren Sie vom Fachwissen der Personen, die die Software paketieren und einfach konfigurierbar machen.

Werfen wir einen kurzen Blick auf ein Beispiel für ein Helm-Chart, in diesem Fall für Linkerd.

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

1 Verzeichnis, 9 Dateien.

In der Datei values.yaml finden wir Details zu einigen Container-Images, die Schwachstellen enthalten können:

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

Schwachstellen in Helm-Chart-Images

Wie jedes Repository mit Inhalten von Drittanbietern können auch Schwachstellen in beliebten Helm-Charts ein Risiko für viele Nutzer darstellen. Entwickler dabei zu unterstützen, Inhalte von Drittanbietern sicher zu nutzen, ist unsere Aufgabe bei Snyk. Wir bieten bereits Entwickler-Tools, die Open-Source-Abhängigkeiten für beliebte Paketmanager absichern (zum Beispiel für Java, .NET, Python, Node.js, Ruby und weitere), sowie Tools zum Erkennen von Schwachstellen in Container-Images. Bei den Herausforderungen, Inhalte von Drittanbietern in Kubernetes abzusichern, stellte sich für uns unter anderem die Frage: „Woher weiß ich, welche Schwachstellen in den Images dieses Helm-Charts vorhanden sind?“ Derzeit ist das ein ziemlich manueller Prozess:

  1. Ermitteln Sie, welche Images das Chart verwendet. Dazu müssen Sie wahrscheinlich die gerenderten Vorlagen prüfen und die konkreten Image-Versionen identifizieren.

  2. Scannen Sie diese Images einzeln. Dazu müssen Sie wahrscheinlich mehrere Befehle ausführen und die Ergebnisse manuell zusammenfassen.

Erschwerend kommt hinzu, dass sich bei Helm-Charts Einstellungen festlegen lassen, die sich auf die verwendeten Images auswirken können.

Wir stellen den Helm-Chart-Sicherheitsbericht vor

In unserem neuen Bericht untersuchen wir den Stand der Schwachstellen im öffentlichen Helm-Charts-Repository. Wir wollen Helm nicht als unsicher darstellen – schließlich gilt das genauso für jedes beliebte Repository mit Inhalten von Drittanbietern. Vielmehr möchten wir eine Diskussion darüber anstoßen, wie sich Helm-Charts besser absichern lassen, damit noch mehr Menschen von der einfachen Nutzung von Helm profitieren können. Unsere Ergebnisse:

  • 68 % der stabilen Helm-Charts enthalten ein Image mit einer Schwachstelle mit hohem Schweregrad.

  • Bei 64 % der stabilen Helm-Charts ließe sich die Zahl der Schwachstellen durch ein Update auf die neuesten veröffentlichten Images reduzieren.

  • 6 Images (von insgesamt 416) sind für die Hälfte aller Schwachstellen verantwortlich.

Wir haben diese Arbeit auch mit der Helm-Community geteilt. Matt Butcher, einer der Maintainer der Helm-Organisation, sagte:

„Damit das Cloud-native-Ökosystem sein volles Potenzial entfalten kann, müssen wir die Sicherheit gemeinsam verbessern. Dazu müssen wir eine Reihe von Mustern, Techniken und Tools anwenden, die speziell auf Cloud-native-Technologien ausgerichtet sind. Das Helm-Projekt legt großen Wert auf die Sicherheit unserer Kernsoftware, unserer Charts und der Praktiken in der Community. Neue Tools, mit denen sich Schwachstellen proaktiv erkennen und beheben lassen, sind daher sehr willkommen.“

Wir stellen das Snyk-Helm-Plugin vor

Im Rahmen der oben beschriebenen Untersuchung haben wir ein Plugin entwickelt, mit dem Sie Ihre eigenen Helm-Charts genauso einfach wie alles andere in Helm auf Schwachstellen prüfen können.

Sie können das Snyk-Helm-Plugin mit den integrierten Befehlen in Helm installieren.

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

Für die Nutzung des Plugins benötigen Sie ein Snyk-Konto, das Sie kostenlos unter https://snyk.io/signup/ erstellen können. Sobald Sie ein Konto haben, können Sie Ihre Charts wie folgt testen.

helm snyk test <path-to-chart>

Hier ein Beispiel für einen Test des Redis-Charts aus dem öffentlichen Charts-Repository:

$ 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...

Bei Helm-Charts lassen sich häufig Eigenschaften zum Zeitpunkt der Installation festlegen. Einige davon können sich auf die vom Chart verwendeten Images auswirken. Mit dem Snyk-Helm-Plugin können Sie über dieselbe Schnittstelle wie bei den übrigen Helm-Befehlen auch einzelne Eigenschaften festlegen und so verschiedene Varianten testen, zum Beispiel:

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

Fazit

Mit dem Helm-Chart-Sicherheitsbericht helfen wir der Helm-Community, Schwachstellen zu finden und sie einfacher zu beheben. Mit dem Snyk-Helm-Plugin können Sie Ihre Helm-Charts schnell und einfach testen – ganz gleich, ob Sie ein Chart eines Drittanbieters untersuchen oder regelmäßig Prüfungen als Teil Ihrer CI/CD-Pipelines durchführen. Halten Sie Ausschau nach weiteren Tools von Snyk, die Entwickler dabei unterstützen, Inhalte von Drittanbietern sicherer zu nutzen.

Gepostet in: