CVE-2017-9791
Apache Struts 1 Improper Input Validation Vulnerability
Beschreibung
CVE-2017-9791 ist eine kritische Remote-Code-Execution-Schwachstelle im Struts-1-Plugin von Apache Struts mit einem CVSS-3.1-Score von 9.8 (CRITICAL). Die unter CWE-20 (Improper Input Validation) klassifizierte Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, über manipulierte Feldwerte in ActionMessage-Objekten beliebigen Code auf dem Server auszuführen. Betroffen sind Apache-Struts-Versionen 2.3.1 bis 2.3.32 mit aktiviertem Struts-1-Plugin. Die Schwachstelle wurde am 10. Februar 2022 in den CISA-KEV-Katalog aufgenommen, mit einer Behebungsfrist bis zum 10. August 2022. Der EPSS-Score von 94,24 % (99,93. Perzentile) belegt 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.3.1; 2.3.1.1; 2.3.1.2; 2.3.3; 2.3.4; 2.3.4.1; 2.3.7; 2.3.8; 2.3.12; 2.3.14; 2.3.14.1; 2.3.14.2; 2.3.14.3; 2.3.15; 2.3.15.1; 2.3.15.2; 2.3.15.3; 2.3.16; 2.3.16.1; 2.3.16.2; 2.3.16.3; 2.3.20; 2.3.20.1; 2.3.20.3; 2.3.24; 2.3.24.1; 2.3.24.3; 2.3.28; 2.3.28.1; 2.3.29; 2.3.30; 2.3.31; 2.3.32 |
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://struts.apache.org/docs/s2-048.html(Mitigation, Vendor Advisory)
- http://www.oracle.com/technetwork/security-advisory/alert-cve-2017-9805-3889403.html(Patch, Third Party Advisory)
- http://www.securityfocus.com/bid/99484(Broken Link, Third Party Advisory, VDB Entry)
- http://www.securitytracker.com/id/1038838(Broken Link, Third Party Advisory, VDB Entry)
- https://security.netapp.com/advisory/ntap-20180706-0002/(Third Party Advisory)
- https://www.exploit-db.com/exploits/42324/(Third Party Advisory, VDB Entry)
- https://www.exploit-db.com/exploits/44643/(Third Party Advisory, VDB Entry)
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2017-9791(US Government Resource)
Schwachstellentyp
CWE-20: Improper Input Validation
CVE-2017-9791 wird unter CWE-20 — Unsachgemäße Eingabevalidierung — klassifiziert. Diese Schwachstellenklasse beschreibt Situationen, in denen eine Anwendung Benutzereingaben entgegennimmt, ohne diese auf erwartete Formate, Typen oder Wertebereiche zu überprüfen.
Im konkreten Fall des Struts-1-Plugins werden vom Benutzer bereitgestellte Feldwerte ohne ausreichende Bereinigung an ActionMessage-Objekte übergeben. Das Struts-2-Framework wertet diese Werte anschließend als OGNL-Ausdrücke (Object-Graph Navigation Language) aus. Ein Angreifer kann dadurch manipulierte OGNL-Ausdrücke einschleusen, die vom Server interpretiert werden und Zugriff auf Java-Runtime-Methoden ermöglichen — was letztlich zur Ausführung beliebiger Systembefehle führt.
Auswirkungsanalyse
CVE-2017-9791 erreicht einen CVSS-3.1-Score von 9.8 (CRITICAL) und ermöglicht vollständige Remote Code Execution ohne Authentifizierung.
Vertraulichkeit (High): Durch die Ausführung beliebiger Befehle erhält ein Angreifer Zugriff auf sämtliche Daten des Servers — einschließlich Anwendungsdaten, Datenbank-Credentials, Konfigurationsdateien und personenbezogener Daten. In Unternehmensumgebungen mit Struts-basierten Anwendungen können Finanzdaten, Kundendaten und geschäftskritische Informationen betroffen sein.
Integrität (High): Ein Angreifer kann Anwendungslogik manipulieren, Datenbankeinträge ändern, Backdoors installieren oder geschäftskritische Transaktionen verfälschen. Die Kontrolle entspricht den Berechtigungen des Anwendungs-Dienstkontos.
Verfügbarkeit (High): Beliebige Codeausführung ermöglicht das Herunterfahren des Servers, Ressourcenerschöpfung, den Einsatz von Kryptominern oder die vollständige Außerbetriebnahme des Dienstes.
Scope: Der Scope ist Unchanged (U), die Auswirkungen bleiben zunächst auf den betroffenen Anwendungsserver beschränkt — laterale Bewegung nach erfolgter Kompromittierung ist jedoch üblich.
Mit einem EPSS-Score von 94,24 % (99,93. Perzentile) gehört diese Schwachstelle zu den am häufigsten ausgenutzten überhaupt.
Exploit-Reifegrad
Exploit-Status: CVE-2017-9791 wird aktiv ausgenutzt und ist im CISA Known Exploited Vulnerabilities (KEV) Katalog gelistet. Mehrere öffentliche Exploits sind auf Exploit-DB verfügbar (IDs 42324 und 44643), was die Ausnutzungsschwelle erheblich senkt.
Ransomware-Bezug: Laut CISA-KEV besteht kein bekannter direkter Ransomware-Bezug für diese spezifische CVE. Apache-Struts-Schwachstellen wurden jedoch historisch von Cyberkriminellen und APT-Gruppen gleichermaßen für initiale Zugänge genutzt.
Angriffskontext: Die Schwachstelle ist im Apache-Struts-Sicherheitsbulletin S2-048 dokumentiert. Sie betrifft Anwendungen, die das Struts-1-Plugin innerhalb des Struts-2-Frameworks verwenden — eine verbreitete Konfiguration in Legacy-Enterprise-Java-Anwendungen. Der Angriff erfordert lediglich Netzwerkzugriff auf die Anwendung.
KEV-Frist: Die CISA-Behebungsfrist war der 10. August 2022.
EPSS-Kontext: Der EPSS-Score von 94,24 % (99,93. Perzentile) bestätigt eine extrem hohe reale Ausnutzungswahrscheinlichkeit.
Behebung
-
Apache Struts aktualisieren. Wenden Sie umgehend die im offiziellen S2-048-Sicherheitshinweis beschriebenen Patches an. Aktualisieren Sie auf eine Struts-Version jenseits der 2.3.x-Serie, die den Fix enthält.
-
Struts-1-Plugin entfernen oder deaktivieren. Falls Ihre Anwendung keine Struts-1-Kompatibilitätsfunktionen benötigt, entfernen Sie das Plugin vollständig, um die Angriffsfläche zu eliminieren.
-
ActionMessage-Eingaben bereinigen. Stellen Sie als Defense-in-Depth-Maßnahme sicher, dass alle benutzergesteuerten Werte, die an ActionMessage-Objekte übergeben werden, ordnungsgemäß validiert und bereinigt werden. Vermeiden Sie die direkte Weitergabe unbereinigter Benutzereingaben.
-
Web Application Firewall einsetzen. Konfigurieren Sie WAF-Regeln zur Erkennung und Blockierung von OGNL-Injection-Mustern in HTTP-Anfragen an Struts-Anwendungen als temporäre Schutzmaßnahme.
-
Auf Kompromittierung prüfen. Analysieren Sie Serverprotokolle auf ungewöhnliche Anfragemuster, unerwartete Prozessausführungen und unautorisierte Dateiänderungen. Angesichts der Verfügbarkeit öffentlicher Exploits sollte jedes ungepatchte System als kompromittiert betrachtet werden.
-
Netzwerksegmentierung implementieren. Beschränken Sie ausgehende Netzwerkverbindungen von Anwendungsservern, um Datenexfiltration und Command-and-Control-Kommunikation nach erfolgreicher Ausnutzung einzudämmen.
Technische Details
CVE-2017-9791 ist eine Remote-Code-Execution-Schwachstelle im Struts-1-Plugin für Apache Struts 2. Die Schwachstelle entsteht durch unzureichende Bereinigung von Benutzereingaben in ActionMessage-Ressourcenwerten.
Angriffsvektor: Netzwerk (AV:N), niedrige Komplexität (AC:L), keine Authentifizierung erforderlich (PR:N), keine Benutzerinteraktion nötig (UI:N). Dies ermöglicht jedem Angreifer mit HTTP-Zugriff auf die Anwendung die triviale Ausnutzung.
Technischer Ablauf: Bei Verwendung des Struts-1-Plugins zur Integration von Legacy-Struts-1-Aktionen in Struts-2-Anwendungen werden benutzerbereitgestellte Feldwerte in ActionMessage-Objekte eingefügt. Das Struts-2-Framework verarbeitet diese Werte über seinen OGNL-Ausdrucksauswertungsmechanismus. Durch Einschleusung manipulierter OGNL-Ausdrücke wird der Server zur Auswertung beliebigen Codes gezwungen. Die OGNL-Ausdruckssprache bietet Zugriff auf Java-Runtime-Methoden und ermöglicht die Ausführung von Systembefehlen.
Betroffene Versionen: Apache Struts 2.3.1 bis 2.3.32 bei aktiviertem Struts-1-Plugin.
CVSS-Vektor: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Netzwerkzugriff, keine Privilegien, vollständige Auswirkungen auf Vertraulichkeit, Integrität und Verfügbarkeit ergeben den maximalen Basisscore von 9.8.
Häufig gestellte Fragen
Was ist CVE-2017-9791?
CVE-2017-9791 ist eine kritische Remote-Code-Execution-Schwachstelle im Struts-1-Plugin für Apache Struts 2. Sie ermöglicht nicht authentifizierten Angreifern die Ausführung beliebigen Codes auf dem Server durch manipulierte Feldwerte, die als OGNL-Ausdrücke über die ActionMessage-Klasse verarbeitet werden. Die Schwachstelle hat einen CVSS-Score von 9.8.
Welche Versionen von Apache Struts sind betroffen?
Betroffen sind Apache-Struts-Versionen 2.3.1 bis 2.3.32, wenn das Struts-1-Plugin aktiviert ist. Anwendungen, die das Struts-1-Plugin nicht verwenden, sind von dieser spezifischen Schwachstelle nicht betroffen. Die Schwachstelle ist im Apache-Struts-Sicherheitsbulletin S2-048 dokumentiert.
Wie behebe ich CVE-2017-9791?
Aktualisieren Sie Apache Struts auf eine Version mit dem S2-048-Fix. Falls eine sofortige Aktualisierung nicht möglich ist, deaktivieren oder entfernen Sie das Struts-1-Plugin. Als Übergangsmaßnahme stellen Sie sicher, dass benutzergesteuerte Werte nicht direkt an ActionMessage-Objekte übergeben werden, und setzen Sie WAF-Regeln zur Blockierung von OGNL-Injection-Versuchen ein.
Wie schwerwiegend ist CVE-2017-9791?
CVE-2017-9791 ist mit einem CVSS-Score von 9.8 als KRITISCH eingestuft. Der EPSS-Score von 94,24 % (99,93. Perzentile) bestätigt eine extrem hohe Ausnutzungswahrscheinlichkeit. CISA hat die aktive Ausnutzung durch Aufnahme in den KEV-Katalog bestätigt. Öffentliche Exploits sind leicht verfügbar, wodurch jede ungepatchte Struts-Anwendung ein einfaches Ziel darstellt.
Hilfe beim Schwachstellenmanagement?
Unsere Sicherheitsexperten helfen Ihnen bei der Priorisierung und Behebung von Schwachstellen.