CVE-2022-22965
VMware Spring Framework — Spring Framework JDK 9+ Remote Code Execution Vulnerability
Beschreibung
Eine Anwendung von Spring MVC oder Spring WebFlux, die auf JDK 9+ ausgeführt wird, kann anfällig für Fernausführung (RCE) über Datenbindung sein. Der spezifische Exploit erfordert, dass die Anwendung unter Tomcat als WAR-Deployment läuft. Wenn die Anwendung als Spring Boot ausführbare JAR-Datei bereitgestellt wird, d.h. im Standardfall, ist sie nicht anfällig für den Exploit. Die Natur der Schwachstelle ist jedoch allgemeiner, und es könnte andere Möglichkeiten geben, sie zu nutzen.
Behebung & Mitigation
Warum sofort handeln?
Priorisierung
CVE-2022-22965 (bekannt als „Spring4Shell") trägt einen CVSS-v3-Score von 9.8 (AV:N/AC:L/PR:N/UI:N) und liegt im EPSS auf dem 100. Perzentil — das bedeutet, dass öffentlich verfügbare, zuverlässig funktionierende Exploit-Kits existieren und massenhaft eingesetzt werden. Der Exploit ermöglicht unauthentifizierte Remote Code Execution ohne Nutzerinteraktion und ist damit für jede exponierte Tomcat-WAR-Instanz mit JDK 9+ als kritisch einzustufen. Organisationen im NIS2-Scope mit öffentlich erreichbaren Java-Webanwendungen (z. B. Kundenportale, API-Gateways, interne Self-Service-Anwendungen) sollten dieses CVE mit höchster Priorität behandeln. Der CISA-KEV-Eintrag ohne „known ransomware use"-Flag bedeutet nicht, dass das Risiko geringer ist — RCE-Schwachstellen dieser Klasse werden regelmäßig als Initialzugang für nachgelagerte Angriffe genutzt, auch wenn kein direkter Ransomware-Zusammenhang dokumentiert ist.
Runbook · Schritt 1
Sofort-Response (0-24 h)
- Patch sofort einspielen: Spring Framework auf Version 5.3.18 oder 5.2.20.RELEASE aktualisieren — dies ist der primäre Fix für CVE-2022-22965. Spring Boot-Nutzer benötigen mindestens 2.6.6 bzw. 2.5.12. Patch-Verfügbarkeit und genaue Artefakt-Koordinaten im VMware-Security-Advisory (spring.io/security) verifizieren.
- Deployment-Typ sofort prüfen: Nur Anwendungen, die als WAR auf Apache Tomcat laufen und JDK 9+ verwenden, sind über den bekannten Exploit-Pfad angreifbar. Spring-Boot-Executable-JARs sind über diesen Vektor nicht betroffen — Inventar entsprechend segmentieren.
- JDK-Version einfrieren oder downgraden: Wo ein sofortiger Patch nicht möglich ist, prüfen, ob ein Downgrade auf JDK 8 für die betroffene Anwendung operativ vertretbar ist — JDK 8 ist über den bekannten Exploit-Pfad nicht angreifbar.
- WAF-Regel aktivieren: Eingehende HTTP-Requests auf verdächtige Parameter wie
class.module.classLoader.*oderclass.classLoader.*sofort blockieren oder in Alarm versetzen — dies unterbricht den primären Exploit-Pfad über Spring-Data-Binding. - Tomcat-Logging auf DEBUG setzen: Auf betroffenen Hosts
AccessLogValveaktivieren und vollständige Query-Strings loggen, um laufende Exploit-Versuche rückwirkend analysieren zu können. - Netzwerksegmentierung prüfen: Sicherstellen, dass betroffene Tomcat-Instanzen keinen direkten Outbound-Zugriff ins Internet haben — RCE-Payloads benötigen häufig ausgehende Verbindungen für Reverse-Shells oder Nachladen von Schadcode.
Runbook · Schritt 2
Mitigation-Layer
- WAF/IPS-Regel (Netzwerkschicht): Request-Parameter filtern, die
class,module,classLoaderoderprotectionDomainenthalten. Snort/Suricata-Signatur-Idee:alert http any any -> $HTTP_SERVERS any (msg:"CVE-2022-22965 Spring4Shell Attempt"; content:"class.module.classLoader"; http_uri; sid:9000001; rev:1;)— analog fürhttp_client_body. - Tomcat-Härtung: In
catalina.propertiesdenRejectIllegalHeader-Parameter aktivieren. ZusätzlichallowedHttpMethodsauf das betrieblich notwendige Minimum beschränken (kein TRACE/OPTIONS nach extern). - Data-Binding einschränken: In Spring-MVC-Controllern
@InitBindermitsetDisallowedFields("class.*", "Class.*", "*.class.*")implementieren — dies blockiert den Exploit-Pfad auf Anwendungsebene ohne Patch. - Least-Privilege für Tomcat-Prozess: Tomcat-Prozess unter einem dedizierten, nicht-privilegierten Systemkonto ohne Shell-Zugriff betreiben. Schreibrechte auf das Webroot-Verzeichnis auf das absolute Minimum reduzieren — der bekannte Exploit schreibt eine JSP-Webshell in das Webroot.
- Egress-Filterung: Ausgehende Verbindungen vom Tomcat-Host auf bekannte Ziele (z. B. Update-Server, interne APIs) beschränken. Alle anderen Outbound-Verbindungen auf Firewall-Ebene blockieren und alarmieren.
- RASP-Einsatz prüfen: Runtime Application Self-Protection (z. B. OpenRASP) kann den Exploit-Versuch auf Laufzeitebene erkennen und blockieren, wenn ein Patch kurzfristig nicht möglich ist.
Runbook · Schritt 3
Detection-Regeln
- Web-Access-Log-Muster: Suche in Tomcat-Access-Logs nach GET/POST-Requests mit Parametern wie
class.module.classLoader.resources.context.parent.pipeline.first.pattern,class.classLoader.DefaultAssertionStatusoder ähnlichen Reflection-Ketten. SPL-Snippet:index=weblogs sourcetype=access_combined | search uri_query="*classLoader*" OR uri_query="*class.module*" - Neue JSP-Dateien im Webroot (Endpoint): Sysmon Event ID 11 (FileCreate) auf Tomcat-
webapps-Verzeichnisse überwachen. Sigma-Idee:EventID: 11 | TargetFilename|contains: '\webapps\' | TargetFilename|endswith: '.jsp'— Webshell-Ablage ist das unmittelbare Post-Exploitation-Ziel. - Anomale Kindprozesse unter Tomcat (EDR): Prozess-Abstammungskette
java.exeodertomcat*.exe→cmd.exe/sh/bash/powershell.exeist ein starkes Indiz für erfolgreiche RCE. Sysmon EID 1 oder EDR-Telemetrie entsprechend alarmieren. - Ausgehende Netzwerkverbindungen vom JVM-Prozess: Zeek/Suricata: unerwartete ausgehende TCP-Verbindungen vom Tomcat-Prozess auf Port 4444, 1337, 8080 oder andere nicht-Standard-Ports — insbesondere zu externen IPs — als Reverse-Shell-Indikator werten.
- auditd (Linux): Regel auf
execve-Syscalls mit Parent-PID des Tomcat-Prozesses setzen:auditctl -a always,exit -F arch=b64 -S execve -F ppid=<tomcat-pid>— im produktiven Betrieb über/etc/audit/rules.d/dauerhaft mit Prozessname-Filter konfigurieren.
Metriken
Weakness-Klassen (CWE)
CWE-94Base
Improper Control of Generation of Code ('Code Injection')
The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.
cwe.mitre.org →
Betroffene Produkte
Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.
maven
org.springframework.boot:spring-boot-starter-web1.0.0.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.0.1.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.0.2.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.0.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.10.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.11.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.12.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.1.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.2.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.3.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.4.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.5.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.6.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.7.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.8.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.1.9.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.0.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.1.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.2.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.3.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.4.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.5.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.6.RELEASE
maven
org.springframework.boot:spring-boot-starter-web1.2.7.RELEASE
Öffentliche Exploit-Referenzen
Öffentliche Proof-of-Concepts und Detection-Templates für diese Schwachstelle. Die Reife reicht von gemeldeten PoCs über funktionsfähige Detection-Skripte bis hin zu vollständig waffenfähigen Exploit-Modulen. NEOSEC mirrort den Code intern für forensische Analysen; nach außen verlinken wir ausschließlich auf die Original-Quellen.
Quellen & Referenzen
- https://nvd.nist.gov/vuln/detail/CVE-2022-22965advisory
- https://github.com/spring-projects/spring-framework/commit/002546b3e4b8d791ea6acccb81eb3168f51abb15web
- https://cert-portal.siemens.com/productcert/pdf/ssa-254054.pdfweb
- https://github.com/spring-projects/spring-boot/releases/tag/v2.5.12web
- https://github.com/spring-projects/spring-boot/releases/tag/v2.6.6web
- https://github.com/spring-projects/spring-frameworkpackage
- https://github.com/spring-projects/spring-framework/releases/tag/v5.2.20.RELEASEweb
- https://github.com/spring-projects/spring-framework/releases/tag/v5.3.18web
- https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2022-0005web
- https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcementweb
- https://tanzu.vmware.com/security/cve-2022-22965web
- https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-java-spring-rce-Zx9GUc67web
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2022-22965web
- https://www.kb.cert.org/vuls/id/970766web
- https://www.oracle.com/security-alerts/cpuapr2022.htmlweb
- https://www.oracle.com/security-alerts/cpujul2022.htmlweb
- http://packetstormsecurity.com/files/166713/Spring4Shell-Code-Execution.htmlweb
- http://packetstormsecurity.com/files/167011/Spring4Shell-Spring-Framework-Class-Property-Remote-Code-Execution.htmlweb