CVE-2012-0391
Apache Struts 2 Improper Input Validation Vulnerability
Beschreibung
CVE-2012-0391 ist eine kritische Remote-Code-Execution-Schwachstelle in Apache Struts 2 vor Version 2.2.3.1, verursacht durch unsachgemäße Eingabevalidierung (CWE-20) kombiniert mit Code-Injection (CWE-94) in der ExceptionDelegator-Komponente. Die Schwachstelle ermöglicht es einem nicht authentifizierten Remote-Angreifer, beliebigen Code auf dem Anwendungsserver auszuführen, indem speziell gestaltete HTTP-Anfragen gesendet werden, die OGNL-Expression-Evaluation (Object-Graph Navigation Language) in der Fehlerbehandlung ausnutzen. Mit einem CVSS-3.1-Score von 9.8 erfordert diese Schwachstelle keine Authentifizierung, keine Benutzerinteraktion und ist über das Netzwerk mit geringer Komplexität ausnutzbar. CISA hat CVE-2012-0391 am 21. Januar 2022 in den KEV-Katalog aufgenommen, mit einer Behebungsfrist bis zum 21. Juli 2022. Der EPSS-Score von 0,88319 (99,49. Perzentile) bestätigt eine extrem hohe Ausnutzungswahrscheinlichkeit.
KEV-Informationen
CVSS-Score
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HIm Rechner öffnenBetroffene Produkte
| Hersteller | Produkt | Version |
|---|---|---|
| apache | struts | < 2.2.3.1 |
Mehrere CVSS-Bewertungen
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Referenzen
- http://archives.neohapsis.com/archives/bugtraq/2012-01/0031.html(Broken Link, Exploit)
- http://secunia.com/advisories/47393(Vendor Advisory)
- http://struts.apache.org/2.x/docs/s2-008.html(Vendor Advisory)
- http://struts.apache.org/2.x/docs/version-notes-2311.html(Vendor Advisory)
- http://www.exploit-db.com/exploits/18329(Exploit)
- https://issues.apache.org/jira/browse/WW-3668(Vendor Advisory)
- https://www.sec-consult.com/files/20120104-0_Apache_Struts2_Multiple_Critical_Vulnerabilities.txt(Broken Link, Exploit)
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2012-0391(US Government Resource)
Schwachstellentyp
CWE-20 / CWE-94: Unsachgemäße Eingabevalidierung und Code-Injection
CVE-2012-0391 umfasst zwei komplementäre Schwachstellentypen. CWE-20 (Unsachgemäße Eingabevalidierung) beschreibt das Versäumnis, Benutzereingaben vor der Verarbeitung ordnungsgemäß zu validieren, während CWE-94 (Code-Injection) die Möglichkeit beschreibt, beliebigen Code über die Anwendung einzuschleusen und auszuführen. Zusammen erzeugen diese Schwächen eine verheerende Angriffskette, bei der ungeprüfte Eingaben eine Expression-Evaluation-Engine erreichen, die vom Angreifer bereitgestellten Code ausführt.
In Apache Struts 2 verwendet das Framework OGNL (Object-Graph Navigation Language) als Ausdruckssprache für Value-Stack-Operationen, Typkonvertierung und Datenbindung. Die ExceptionDelegator-Komponente behandelt Ausnahmen, die während der Anfrageverarbeitung auftreten, und in anfälligen Versionen werden Fehlermeldungen, die Benutzereingaben enthalten, als OGNL-Ausdrücke ausgewertet. Ein Angreifer erstellt HTTP-Anfrageparameter, die Validierungsausnahmen auslösen, wobei die Parameterwerte bösartige OGNL-Ausdrücke enthalten. Wenn der ExceptionDelegator die Ausnahme verarbeitet, wertet er die Fehlermeldung als OGNL-Ausdruck aus und führt den Code des Angreifers im Kontext des Anwendungsservers aus. Mehr über Unsachgemäße Eingabevalidierung (CWE-20) erfahren
Auswirkungsanalyse
CVE-2012-0391 hat einen CVSS-3.1-Basiswert von 9.8 (CRITICAL), der die verheerenden Auswirkungen nicht authentifizierter Remote-Code-Execution auf einem weit verbreiteten Web-Framework widerspiegelt.
Vertraulichkeit (Hoch): Erfolgreiche OGNL-Injection ermöglicht dem Angreifer, beliebigen Java-Code und Betriebssystembefehle auf dem Anwendungsserver auszuführen. Dies gewährt vollen Zugriff auf Anwendungsquellcode, Datenbankverbindungsstrings, API-Anmeldedaten, Benutzerdaten, Sitzungstoken und alle vom Anwendungsserverprozess lesbaren Dateien. In Unternehmensumgebungen verbinden sich Struts-Anwendungen oft mit Backend-Datenbanken, die sensible Geschäftsdaten, Kundendatensätze und Finanzinformationen enthalten.
Integrität (Hoch): Code-Ausführung auf dem Anwendungsserver ermöglicht dem Angreifer, Anwendungslogik zu modifizieren, Datenbankeinträge zu verändern, bösartige Inhalte in Webseiten einzuschleusen, Web-Shells für persistenten Zugriff einzusetzen und Serverkonfigurationen zu ändern. Der Angreifer kann Backdoors installieren, Administratorkonten erstellen und Persistenzmechanismen etablieren.
Verfügbarkeit (Hoch): Der Angreifer kann den Anwendungsserver beenden, Systemressourcen verbrauchen, Anwendungsdaten beschädigen oder Ransomware einsetzen. OGNL-Injection-Angriffe wurden in destruktiven Kampagnen gegen Enterprise-Anwendungen eingesetzt, die teilweise zu vollständiger Infrastrukturkompromittierung und längeren Ausfällen führten.
Scope (Unverändert): Obwohl der Scope technisch unverändert ist, bietet Code-Ausführung auf einem Struts-Anwendungsserver typischerweise einen Brückenkopf für laterale Bewegung zu Datenbankservern, internen APIs und anderen Backend-Systemen. Der EPSS-Score von 0,88319 (99,49. Perzentile) bestätigt, dass diese Schwachstelle zu den am stärksten ausgenutzten CVEs gehört.
Exploit-Reifegrad
Aktive Ausnutzung: CVE-2012-0391 wird aktiv ausgenutzt und ist seit seiner Offenlegung ein Ziel für Bedrohungsakteure. CISA hat die Schwachstelle am 21. Januar 2022 in den KEV-Katalog aufgenommen und bestätigt damit die fortgesetzte Ausnutzung. Struts 2 OGNL-Injection-Schwachstellen waren an einigen der bekanntesten Datenverletzungen der Geschichte beteiligt, und CVE-2012-0391 ist Teil dieses Angriffsmusters.
Ransomware-Bezug: Der CISA-KEV-Katalog ordnet CVE-2012-0391 nicht direkt Ransomware-Kampagnen zu. Remote-Code-Execution auf Enterprise-Anwendungsservern ist jedoch ein hochrangiger initialer Zugriffsvektor für Ransomware-Betreiber.
Öffentliche Exploits: Öffentlicher Exploit-Code ist aus mehreren Quellen verfügbar, darunter Archive auf Neohapsis. Das offizielle Apache Struts Security Bulletin S2-008 dokumentiert die Schwachstelle. Metasploit und andere Exploitation-Frameworks enthalten Module für diese Schwachstelle.
EPSS-Kontext: Der EPSS-Score von 0,88319 (99,49. Perzentile) platziert diese Schwachstelle in den obersten 0,5% aller CVEs hinsichtlich der Ausnutzungswahrscheinlichkeit. Dieser außergewöhnlich hohe Score spiegelt die Kombination aus öffentlicher Exploit-Verfügbarkeit, weit verbreitetem Struts-2-Einsatz und den verheerenden Auswirkungen erfolgreicher Ausnutzung wider.
KEV-Frist: Die CISA-Behebungsfrist war der 21. Juli 2022. Organisationen, die Struts 2 Versionen vor 2.2.3.1 betreiben, müssen umgehend aktualisieren.
Behebung
-
Apache Struts 2 auf Version 2.2.3.1 oder höher aktualisieren. Die ExceptionDelegator-OGNL-Injection-Schwachstelle ist in Struts 2.2.3.1 behoben, wie im Security Bulletin S2-008 dokumentiert. Wenden Sie dieses Update an, um die Schwachstelle zu eliminieren. Idealerweise aktualisieren Sie auf die neueste Struts-2-Version, um von allen nachfolgenden Sicherheitsfixes zu profitieren.
-
Alle Struts 2 Security Bulletins umfassend anwenden. CVE-2012-0391 ist eine von vielen OGNL-Injection-Schwachstellen in der Geschichte von Struts 2. Überprüfen Sie alle Apache Struts Security Bulletins (S2-001 bis zum neuesten) und stellen Sie sicher, dass Ihre Version alle bekannten Schwachstellen adressiert.
-
Dynamic Method Invocation und OGNL-Evaluation wo möglich deaktivieren. Konfigurieren Sie Struts 2, um die OGNL-Expression-Evaluation einzuschränken. Setzen Sie
struts.enable.DynamicMethodInvocationauffalseund implementieren Sie strenge OGNL-Expression-Allowlists. -
Web Application Firewall mit OGNL-Injection-Erkennung einsetzen. Konfigurieren Sie WAF-Regeln zur Erkennung und Blockierung von HTTP-Anfragen, die OGNL-Injection-Muster wie
%{,${,#,@und gängige OGNL-Methodenaufrufe enthalten. Dies bietet Defense-in-Depth, während Patches angewendet werden. -
Netzwerksegmentierung für Anwendungsserver implementieren. Isolieren Sie Struts-Anwendungsserver in dedizierten Netzwerksegmenten mit strengen Zugriffskontrollen. Beschränken Sie die ausgehende Konnektivität von Anwendungsservern, um Datenexfiltration und Command-and-Control-Kommunikation im Falle einer Kompromittierung zu verhindern.
-
Gründliche Sicherheitsüberprüfung aller Struts-Deployments durchführen. Inventarisieren Sie alle Apache Struts 2-Installationen in der Organisation, bestimmen Sie deren Versionen und priorisieren Sie das Patching basierend auf Exposition und Kritikalität.
Technische Details
CVE-2012-0391 ist eine OGNL-Injection-Schwachstelle in der ExceptionDelegator-Komponente von Apache Struts 2 vor Version 2.2.3.1. OGNL (Object-Graph Navigation Language) ist eine leistungsstarke Ausdruckssprache, die in Struts 2 durchgehend für Datenbindung, Typkonvertierung und Value-Stack-Operationen verwendet wird. Die Schwachstelle besteht darin, dass benutzergesteuerte Eingaben, die Validierungsausnahmen auslösen, anschließend als OGNL-Ausdrücke während der Ausnahmebehandlung ausgewertet werden.
Die Ausnutzungstechnik umfasst das Senden von HTTP-Anfragen mit sorgfältig gestalteten Parameterwerten, die eine Typkonvertierungs- oder Validierungsausnahme auslösen sollen. Die vom ExceptionDelegator generierte Fehlermeldung enthält den ursprünglichen benutzerbereitgestellten Wert, und diese Fehlermeldung wird durch Struts 2s Tag-Bibliothek verarbeitet, die in den Nachrichtentext eingebettete OGNL-Ausdrücke auswertet.
Der CVSS-3.1-Vektor (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) spiegelt wider, dass die Ausnutzung netzwerkbasiert ist, keine Authentifizierung erfordert und eine vollständige Systemkompromittierung erreicht. Die OGNL-Expression-Evaluation-Engine in Struts 2 hat Zugriff auf die Java-Laufzeitumgebung, was Ausdrücke wie #rt = @java.lang.Runtime@getRuntime(), #rt.exec('command') zur Ausführung beliebiger Betriebssystembefehle ermöglicht.
Die Grundursache ist das Versäumnis, Benutzereingaben zu bereinigen, bevor sie die OGNL-Expression-Evaluation-Pipeline erreichen. Der ExceptionDelegator verarbeitet Ausnahme-Nachrichten durch denselben Expression-Evaluation-Mechanismus, der für legitimates Template-Rendering verwendet wird, ohne zwischen vertrauenswürdigen Template-Ausdrücken und nicht vertrauenswürdigen Benutzereingaben zu unterscheiden.
Häufig gestellte Fragen
Was ist CVE-2012-0391?
CVE-2012-0391 ist eine kritische Remote-Code-Execution-Schwachstelle in Apache Struts 2 vor Version 2.2.3.1. Sie nutzt OGNL-Expression-Injection (Object-Graph Navigation Language) über die ExceptionDelegator-Komponente aus und ermöglicht einem nicht authentifizierten Remote-Angreifer, beliebigen Java-Code und Betriebssystembefehle auf dem Anwendungsserver auszuführen, indem speziell gestaltete HTTP-Anfragen gesendet werden, die Validierungsausnahmen mit eingebetteten OGNL-Payloads auslösen.
Welche Anwendungen sind von CVE-2012-0391 betroffen?
Jede Webanwendung, die auf Apache Struts 2 vor Version 2.2.3.1 basiert, ist potenziell betroffen. Struts 2 war eines der am weitesten verbreiteten Java-Web-Frameworks in Unternehmensumgebungen und betrieb Bankportale, Regierungsdienste, E-Commerce-Plattformen und interne Geschäftsanwendungen. Die ExceptionDelegator-Komponente ist Teil des Kern-Frameworks und standardmäßig aktiviert.
Wie behebe ich CVE-2012-0391?
Aktualisieren Sie Apache Struts 2 auf Version 2.2.3.1 oder höher, die die OGNL-Injection in der ExceptionDelegator-Komponente behebt. Überprüfen und wenden Sie alle nachfolgenden Struts 2 Security Bulletins an, um die gesamte Bandbreite von OGNL-Injection-Schwachstellen zu adressieren. Setzen Sie WAF-Regeln zur Erkennung von OGNL-Injection-Mustern ein.
Wie schwerwiegend ist CVE-2012-0391?
CVE-2012-0391 ist mit einem CVSS-3.1-Score von 9.8 als KRITISCH eingestuft. Der EPSS-Score von 0,88319 (99,49. Perzentile) platziert sie unter den am aktivsten ausgenutzten Schwachstellen. Struts 2 OGNL-Injection-Schwachstellen waren für einige der verheerendsten Datenverletzungen der Computergeschichte verantwortlich. CISA führt CVE-2012-0391 im Known Exploited Vulnerabilities Katalog.
Hilfe beim Schwachstellenmanagement?
Unsere Sicherheitsexperten helfen Ihnen bei der Priorisierung und Behebung von Schwachstellen.