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.* oder class.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 AccessLogValve aktivieren 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, classLoader oder protectionDomain enthalten. 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ür http_client_body.
  • Tomcat-Härtung: In catalina.properties den RejectIllegalHeader-Parameter aktivieren. Zusätzlich allowedHttpMethods auf das betrieblich notwendige Minimum beschränken (kein TRACE/OPTIONS nach extern).
  • Data-Binding einschränken: In Spring-MVC-Controllern @InitBinder mit setDisallowedFields("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.DefaultAssertionStatus oder ä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.exe oder tomcat*.execmd.exe / sh / bash / powershell.exe ist 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

Severity
critical
Aktiv ausgenutzt
aktiv ausgenutzt (KEV)
9.8
Quelle: nvd-v3
100.0 %
Kritisch — CVE liegt im obersten Fünftel aller heute bewerteten CVEs (Rang ≥ 80 %).
99.6 %
Hoch — Modell schätzt ≥ 50 % Chance auf reale Ausnutzung in 30 Tagen.
Veröffentlicht
2022-04-04 00:00 UTC
CWE-94

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

Verknüpfte Empfehlungen

IDCVE-2022-22965