Schwachstelle in GitOps-Tool: Argo CD über Path Traversal angreifbar

Angriffe mit manipulierten Helm-Charts ermöglichen Zugriff auf beliebige Verzeichnisse im Repository des Continuous-Delivery-Werkzeugs für Kubernetes.

In Pocket speichern vorlesen Druckansicht

(Bild: Data Security Breach, Blogtrepreneur, CC BY 2.0)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Das Sicherheitsforschungsteam von Apiiro hat eine Schwachstelle in Argo CD entdeckt, mit dem ein Zugriff auf beliebige Verzeichnisse im Repository des GitOps-Werkzeugs möglich ist. Argo CD ist ein quelloffenes CD-Werkzeug (Continuous Delivery) für Kubernetes. Es kümmert sich um das Verteilen und das Lifecycle-Management der Anwendungen im Kubernetes-Cluster.

Die Schwachstelle findet sich in der Weise, wie das Werkzeug Dateien und URIs auswertet. Ausnutzen lässt sich der Verzeichnisausbruch (Path Traversal) mit manipulierten Helm-Charts. Durch den monolithischen und deterministischen Aufbau des Repository-Servers von Argo CD können Angreifende unter anderem auf values.yaml-Dateien in anderen Verzeichnissen zugreifen, die potenziell Secrets enthalten.

Der erste Schritt für den Angriff ist ein Helm-Chart mit einem entsprechenden Pfadnamen als Wert, das als Dummy-Konfiguration in Argo CD landet. Nach dem Zugriff auf die Secrets über den Verzeichnisausbruch sind anschließende weitere Angriffe unter anderem über Privilegienerweiterung denkbar.

Der Angriff über manipulierte Helm-Charts umgeht den Detektor für Verzeichnisausbruch, um auf andere Repositories zuzugreifen.

(Bild: apiiro)

Grundsätzlich ist dem Argo-CD-Team die Gefahr für Path Traversal durchaus bekannt, und die Software prüft Dateizugriffe darauf, dass sie nur in dasselbe Verzeichnis oder dessen Unterverzeichnisse erfolgen. Allerdings schaut die Software vorher, ob es sich bei dem über das Feld valueFiles angegebenen Pfad um eine URI handelt.

Dazu dient die Funktion ParseRequestURI aus der Standard-Library von Go. Sie geht davon aus, dass die URL aus einem HTTP-Request stammt und interpretiert den Wert als URI oder absoluten Verzeichnispfad. Vereinfacht ausgedrückt: Wenn es wie eine URI aussieht und die Library-Funktion keine Fehlermeldung erzeugt, winkt Argo CD das Ergebnis ohne weitere Prüfung durch und gewährt schließlich Zugriff auf die beispielsweise als /dir/values.yaml aufgeführte Datei, deren Ort sie über den absoluten Pfad auflöst.

Neben dem direkten Zugriff auf fremde Dateien gibt helm template ausführliche Fehlermeldungen zurück, aus denen Angreifende auf Strukturen in den Verzeichnissen schließen können.

Die Argo-CD-Community hat wohl sehr schnell mit Patches reagiert: Am 30. Januar hat Apiiro die Schwachstelle an das Team gemeldet, das am selben Tag den Fehler verifiziert und bestätigt hat. Am 3. Februar ist schließlich der Patch erschienen, und im Anschluss hat Apiiro die Schwachstelle veröffentlicht.

Wer Argo CD verwendet, sollte auf Version 2.1.9, 2.2.4 oder 2.3.0 wechseln. Letztere ist allerdings noch nicht endgültig, sondern lediglich als frischer Release Candidate verfügbar.

Weitere Details finden sich auf dem Apiiro-Blog und auf der zugehörigen Security-Seite des Argo-CD-Repository. Die Schwachstelle ist unter CVE-2022-24348 geführt, aber der Eintrag in der zentralen Schwachstellendatenbank von Mitre war beim Schreiben dieser Meldung noch leer.

(rme)