
Lehrreiche Analyse von CVE-2017-5638: eine OGNL-Injection-RCE in Apache Struts 2, mit Exploit-Walkthrough, Equifax-Fallstudie und Präventionsanleitung.
Apache Struts 2 ist ein Open-Source-Webanwendungsframework zur Entwicklung von Java EE-Webanwendungen. Es ist die zweite Generation des Struts-Frameworks, das erstmals am 10. Oktober 2006 veröffentlicht wurde. Das Struts-Framework ist so konzipiert, dass es bei der Erstellung von Webanwendungen hilft, die eine MVC-Architektur nutzen.
Apache Struts ist ein weit verbreitetes Framework. Im Jahr 2017 nutzten mehr als 65 Prozent der Fortune-100-Unternehmen das Apache Struts-Framework.
Diese Schwachstelle wurde erstmals am 03.10.2017 vom NVD veröffentlicht und erhielt die höchste Bewertungsstufe von 10 (kritisch). Der Hauptfaktor für die höchste Schwachstellenbewertung war, dass Anwendungen über das Netzwerk mit minimaler Komplexität und hohem Einfluss auf Integrität und Verfügbarkeit ausgenutzt werden konnten.
Die Schwachstelle ermöglichte es Angreifern, eine Remote-Codeausführung (RCE) auf der Anwendung durchzuführen, indem sie Object Graph Navigation Library (OGNL)-Ausdrücke in die HTTP-Header einfügten.
Die verwundbaren Versionen des Frameworks sind Apache Struts 2, Version 2.3.x vor 2.3.32 und 2.5.x vor 2.5.10.1.
.png)
Der verwundbare Code befindet sich im Jakarta Multipart Parser. Um einen Exploit durchzuführen, nutzte der Angreifer die Schwachstelle in der Funktion LocalizedTextUtil.findText, die die bereitgestellte Nachricht innerhalb von ${…} als OGNL-Ausdruck interpretierte. Der Angriff kann diese OGNL-Ausdrücke verwenden, die wiederum Systembefehle ausführen und den Inhalt sensibler Dateien wie /etc/passwd oder /etc/shadow offenlegen können, was dem Angreifer die vollständige Kontrolle gibt. Die Anwendung gab darüber hinaus die Ausgabe der vom Angreifer ausgeführten Befehle zurück, was den Angreifer weiter begünstigte.
Das folgende Bild zeigt die HTTP-Anfrage mit OGNL-Ausdruck, die es Angreifern ermöglichte, die Schwachstelle auszunutzen.

Im März 2017, als die Schwachstelle CVE-2017-5638 erstmals im Apache Struts Framework entdeckt wurde, veröffentlichte die Apache Foundation einen Patch für die Schwachstelle. Equifax wendete den Patch jedoch nicht auf das verwundbare System an, da die Scans, die zur Identifizierung des verwundbaren Systems durchgeführt wurden, nicht funktionierten.
Von Mai bis Juli 2017 konnten die Angreifer auf mehrere Equifax-Datenbanken zugreifen und die Daten von Millionen von Menschen offenlegen. Der Angriff betraf 143 Millionen Menschen und legte auch die Kreditkarteninformationen von mehr als 200.000 Menschen offen.
Die Angreifer konnten 76 Tage lang unbemerkt Angriffe durchführen.
Das Unternehmen gab 1,4 Milliarden Dollar aus, um seine Sicherheit nach dem großen Datenleck zu verbessern.
Regelmäßige Updates
Aktualisieren aller Komponenten, einschließlich des Frameworks, das in der Anwendung verwendet wird
Regelmäßige Penetrationstests
Bounty-Programme zur Identifizierung von Schwachstellen
Über Apache Struts 2, Wikipedia