Apache Tomcat CVE-2025-24813 erkennen und abwehren
Zusammenfassung
Am 10. März 2025 wurde eine Schwachstelle durch Pfadäquivalenz in Apache Tomcat (zugewiesene CVE-2025-24813) gemeinsam mit einem Patch für das Programm öffentlich bekannt gemacht.
Obwohl die Schwachstelle zu RCE führen könnte, wird sie von Apache als Schwachstelle mit mittlerem Schweregrad angesehen, da sie über spezielle nicht-standardmäßige Voraussetzungen verfügt, um ausnutzbar zu sein.
Kurz nach der Veröffentlichung der Schwachstelle begann Akamai mit ersten Exploit-Versuchen, potenzielle Server auf diese Schwachstelle zu prüfen.
In diesem Blogbeitrag informieren die Forscher von Akamai detailliert über die Schwachstelle, Exploit-Techniken und Erkennungsstrategien.
Eine Schnellregel der Akamai Adaptive Security Engine schützt Kunden von Akamai App & API Protector automatisch.
Außerdem können Kunden mit Akamai Guardicore Segmentation eine Insight-Abfrage zur Erkennung durchführen.
- Betroffene Kunden von Akamai Hunt haben bereits eine detaillierte Zuordnung anfälliger Ressourcen erhalten.
Was ist CVE-2025-24813?
Am 10. März 2025 wurde neben dem Patch für das Programm eine Schwachstelle durch Pfadäquivalenz innerhalb von Apache Tomcat bekannt gegeben, einem beliebten Open-Source-Webserver und Java-Servlet-Container, der häufig zum Hosten von auf Java basierenden Anwendungen (CVE-2025-24813) verwendet wird. Der Fehler wirkt sich speziell darauf aus, wie der Server Dateipfade intern verarbeitet. Nur wenige Tage nach der Veröffentlichung eines öffentlichen Machbarkeitsnachweises versuchten Angreifer, diesen aktiv auszunutzen. Dies geht mit dem Trend einher, dass es immer schneller zu einer Ausnutzung kommt.
Apache kennzeichnete CVE-2025-24813 als mittleren Schweregrad aufgrund von Ausnutzungsanforderungen. Ein anfälliger Server muss bestimmte Voraussetzungen erfüllen, sodass dieses Problem weniger ausnutzbar ist. Unabhängig von diesen Voraussetzungen ist es jedoch wichtig, sofort zu patchen, da die Schwachstelle bei einer Ausnutzung zu einer nicht authentifizierten Remote-Code-Ausführung (RCE) führen kann.
Die Schwachstelle wurde in den Apache Tomcat-Versionen 11.0.3, 10.1.35 und 9.0.99 behoben, doch Server, die die Versionen 11.0.0-M1 bis 11.0.2, 10.1.0-M1 bis 10.1.34 und 9.0.0-M1 bis 9.0.98 ausführen, könnten weiterhin anfällig sein.
Was ist CVE-2025-24813?
Wenn das Standard-Servlet eines Apache Tomcat so konfiguriert ist, dass Schreibfunktionen aktiviert werden, die standardmäßig deaktiviert sind, kann ein Angreifer mit CVE-2025-24813 erhebliche Auswirkungen verursachen. In Kombination mit dem Standardverhalten, das teilweise PUT-Anforderungen zulässt, kann ein Angreifer eine speziell entwickelte, serialisierte Sitzungsdatei beispielsweise in ein beschreibbares Verzeichnis hochladen. Nachdem diese Datei hochgeladen wurde, erzwingt eine nachfolgende HTTP-Anforderung die Deserialisierung des Inhalts durch Tomcat, wodurch die Ausführung der eingebetteten Payload ausgelöst wird.
Die Ausnutzung kann zu RCE, schweren Datenlecks oder Injektionen von bösartigen Inhalten führen, die auch kritische Serverkonfigurationsdateien beschädigen können. Die betroffenen Apache Tomcat-Versionen umfassen 11.0.0‑M1 bis 11.0.2, 10.1.0‑M1 bis 10.1.34, und 9.0.0‑M1 bis 9.0.98.
Ausnutzung von CVE-2025-24813
Das Endergebnis der Ausnutzung ist ziemlich gravierend, aber das Erreichen von RCE durch diese Schwachstelle erfordert verschiedene komplexe Voraussetzungen:
Für das Standard-Servlet muss die Schreibfähigkeit explizit aktiviert sein.
Teilweise PUT-Anforderungen müssen zulässig sein.
Die Webanwendung muss die dateibasierte Sitzungspersistenz mit dem Standardspeicherort verwenden (wobei ein beschreibbares Zielverzeichnis für die schädliche serialisierte Payload bereitgestellt wird)
Eine für Deserialisierung anfällige Library muss vorhanden sein oder von der Anwendung verwendet werden (damit die Payload-Ausführung über einen Deserialisierungsangriff erfolgt)
Darüber hinaus muss ein Angreifer die von der Anwendung verwendeten internen Dateinamenskonventionen und die Verzeichnisstruktur des Dateisystems des Ziels kennen
Obwohl die meisten Voraussetzungen vorhanden sein können, ist die kritischste Option – das Standard-Servlet mit aktivierten Schreibfunktionen – standardmäßig deaktiviert.
Erfasster Angriffstraffic
Die Akamai Security Intelligence Group (SIG) identifizierte den Angriffstraffic sehr schnell, nachdem die Schwachstelle veröffentlicht wurde. Die meisten beobachteten Angriffs-Payloads gehen auf die Suche nach Schwachstellen zurück, die Angreifern helfen sollen, festzustellen, ob der Zielserver anfällig ist. Eine gängige Angriffsvariante zielt speziell auf .session-Dateipfade ab, die einem randomisierten Benennungsmodell folgen – einer aus sechs Zeichen bestehenden Basis, die an die Dateierweiterung .session angehängt ist (Abbildung 1).
Die beliebteste Payload enthielt eine .session-Datei als Anfrageinhalt, die aus bösartigen serialisierten Java-Objekten bestand. In den meisten Fällen verwendet das schädliche Objekt das java.net.URL-Objekt, um „sich zurück zu melden“, sobald diese hochgeladene Sitzungsdatei von Apache Tomcat deserialisiert wurde (Abbildung 2).
Erkennung anfälliger Anwendungen
Es kann schwierig sein, jede anfällige Instanz von Apache Tomcat in einem Netzwerk zu identifizieren. Sicherheitsteams müssen eine breite Palette von Assets prüfen, da Apache Tomcat an zahlreichen Orten integriert ist, einschließlich Anwendungen, in denen Bibliotheken verwendet werden, die den Verteidigern nicht bekannt sind.
Ähnlich wie bei der aktuellen Schwachstelle von Apache Camel kann diese Bibliothek als indirekte Abhängigkeit vorhanden sein, was bedeutet, dass sie nicht explizit im Quellcode enthalten ist, sondern über ein anderes Softwarepaket eingeführt wird. Das erhöht die Komplexität und erschwert die Erkennung und natürlich auch die Abwehr.
Apache Tomcat kann sowohl unter Windows als auch unter Linux installiert werden oder Teil von Kava-Anwendungen sein. Sie kann durch rekursives Durchsuchen von Verzeichnissen nach Java-Archivdateien (JAR) namens tomcat-api.jar erkannt werden. Sobald eine Tomcat-bezogene JAR-Datei gefunden wurde, kann ihre Manifestdatei untersucht werden, um die verwendete Version zu ermitteln.
Mit der extrahierten Version können Sicherheitsteams sie mit der Sicherheitsempfehlung von Apache abgleichen, um potenzielle Schwachstellen zu bewerten. Folgende Versionen sind betroffen:
- Apache Tomcat 11.0.0-M1 bis 11.0.2
- Apache Tomcat 10.1.0-M1 bis 10.1.34
- Apache Tomcat 9.0.0.-M1 bis 9.0.98
Automatische Erkennung
Für Kunden von Akamai Guardicore Segmentation haben wir eine Insight-Abfrage erstellt, die anfällige Ressourcen identifizieren kann. Die Abfrage gibt alle verfügbaren Pfade und Hashes für tomcat-api.jar zurück. Die zurückgegebene JAR kann entweder in VirusTotal über Hash oder über die Manifestdatei in der JAR eingecheckt werden, um die korrekte Version zu erhalten.
Windows – Apache Tomcat innerhalb von Anwendungen
WITH relevant_cwds as (
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
mmap.path AS mmap_path
FROM process_memory_map AS mmap
LEFT JOIN processes AS proc USING(pid)
WHERE mmap_path LIKE "%jvm%"
UNION
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
proc.path AS placeholder_path
FROM processes AS proc
WHERE proc.name IN ("java", "javaw", "java.exe", "javaw.exe")
UNION
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
proc.path AS placeholder_path
FROM processes AS proc
WHERE LOWER(proc.name) LIKE "%tomcat%"
),
RELEVANT_JAR_PATHS AS (
SELECT file.path as lib_path, cwd, cwd || '..\%\%\tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
UNION
SELECT file.path as lib_path, cwd, cwd || '..\%\tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
UNION
SELECT file.path as lib_path, cwd, cwd || '%\%\tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
)
SELECT DISTINCT lib_path, cwd, jar_path, sha256
FROM RELEVANT_JAR_PATHS
Linux – Apache Tomcat innerhalb von Anwendungen
WITH relevant_cwds as (
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
mmap.path AS mmap_path
FROM process_memory_map AS mmap
LEFT JOIN processes AS proc USING(pid)
WHERE mmap_path LIKE "%jvm%"
UNION
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
proc.path AS placeholder_path
FROM processes AS proc
WHERE proc.name IN ("java", "javaw", "java.exe", "javaw.exe")
UNION
SELECT DISTINCT
proc.pid,
proc.path,
proc.cmdline,
proc.cwd,
proc.path AS placeholder_path
FROM processes AS proc
WHERE LOWER(proc.name) LIKE "%tomcat%"
),
RELEVANT_JAR_PATHS AS (
SELECT file.path as lib_path, cwd, cwd || '../%/%/tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
UNION
SELECT file.path as lib_path, cwd, cwd || '../%/tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
UNION
SELECT file.path as lib_path, cwd, cwd || '%/%/tomcat-api.jar' AS jar_path, sha256
FROM file INNER JOIN relevant_cwds ON file.path LIKE jar_path
INNER JOIN hash on file.path = hash.path
)
SELECT DISTINCT lib_path, cwd, jar_path, sha256
FROM RELEVANT_JAR_PATHS
Windows – Apache Tomcat installiert
SELECT name, version
FROM programs
WHERE name LIKE '%tomcat%'
AND ((version >= '11.0.0' AND version <= '11.0.2') OR (version >= '10.1.0' AND version <= '10.1.34') OR (version >= '9.0.0' AND version <= '9.0.98'))
Linux – Apache Tomcat installiert
SELECT name, version
FROM deb_packages
WHERE name LIKE '%tomcat%'
AND ((version >= '11.0.0' AND version <= '11.0.2') OR (version >= '10.1.0' AND version <= '10.1.34') OR (version >= '9.0.0' AND version <= '9.0.98'))
UNION
SELECT name, version
FROM rpm_packages
WHERE name LIKE '%tomcat%'
AND ((version >= '11.0.0' AND version <= '11.0.2') OR (version >= '10.1.0' AND version <= '10.1.34') OR (version >= '9.0.0' AND version <= '9.0.98'))
Abwehr mit Akamai App & API Protector
Viele Exploit-Versuche werden durch vorhandene Regeln der Adaptive Security Engine abgeschwächt, einschließlich solcher, die Java-Deserialisierungsversuche erkennen (Abbildung 3).
3000072 – Deserialisierungsangriff erkannt
Am 19. März 2025 implementierte das Threat Research Team von Akamai eine Schnellregel der Akamai Adaptive Security Engine für Kunden von App & API Protector, die vollständige Abdeckung bietet (Abbildung 4).
3000957 Angriff auf die Apache Tomcat Remotecodeausführung erkannt (CVE-2025-24813)
In Version 1 der Schnellregel ist die Standardaktion auf „Warnung“ gesetzt. Um die Angriffsversuche zu blockieren, wird den Kunden empfohlen, die Regelaktion auf „Ablehnen“ zu setzen, nachdem die Auslöser überprüft wurden, um Fehlalarme zu vermeiden.
Zusammenfassung
Die Akamai SIG wird weiterhin sowohl für unsere Kunden als auch für die gesamte Sicherheitscommunity solche Bedrohungen überwachen, Berichte darüber erstellen und Maßnahmen zur Abwehr entwickeln. Weitere aktuelle Neuigkeiten der Akamai Security Intelligence Group finden Sie auf unserer Forschungs-Homepage und in den sozialen Medien.