CVE-2025-24813 : Apache Tomcat PUT RCE partiel
Une vulnérabilité critique dans Apache Tomcat permet l'exécution de code à distance non authentifié à l'aide de seulement deux requêtes HTTP. L'attaque exploite la fonctionnalité PUT partielle de Tomcat pour télécharger un objet Java sérialisé, puis déclencher la désérialisation via une requête GET. CVSS 9.8. Affecte Tomcat 9, 10 et 11 avec la configuration par défaut.
| Attribut | Valeur |
|---|---|
| Identifiant CVE | CVE-2025-24813 |
| Vecteur CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502 : Désérialisation des données non fiables |
| Publié | 10 mars 2025 |
| Exploitation | Actif – PoC public publié dans les 30 heures |
Qu’est-ce que CVE-2025-24813 ?
Apache Tomcat prend en charge le « PUT partiel » — une fonctionnalité HTTP permettant aux clients de télécharger des fichiers volumineux en segments à l'aide de Gamme de contenu en-têtes. Tomcat stocke ces téléchargements partiels sous forme de fichiers temporaires dans un répertoire de travail. La vulnérabilité provient de deux failles dans cette implémentation :
- Le nom du fichier temporaire est dérivé du chemin de l'URL de téléchargement, qui est partiellement contrôlé par l'attaquant.
- Si le mécanisme de persistance de session Java est activé (stockage des sessions dans des fichiers), Tomcat peut désérialiser n'importe quel fichier du répertoire de travail possédant un
.sessionextension
Un attaquant peut combiner ces failles pour télécharger un objet Java sérialisé malveillant déguisé en téléchargement partiel, puis déclencher sa désérialisation en demandant une URL que Tomcat interprète comme une recherche de session.
🚨 PoC public dans les 30 heures
Un exploit fonctionnel a été publié sur GitHub environ 30 heures après la divulgation de CVE-2025-24813. L’attaque à deux requêtes est extrêmement simple à automatiser, et des campagnes d’exploitation massives ont été observées en quelques jours. Tout serveur Tomcat connecté à Internet et non corrigé avec une configuration par défaut doit être considéré comme compromis.
Versions concernées
| Version Tomcat | Gamme concernée | Version fixe |
|---|---|---|
| Apache Tomcat 11.x | 11.0.0-M1 à 11.0.2 | 11.0.3+ |
| Apache Tomcat 10.x | 10.1.0-M1 à 10.1.34 | 10.1.35+ |
| Apache Tomcat 9.x | 9.0.0.M1 à 9.0.98 | 9.0.99+ |
Conditions préalables au RCE : Les deux conditions doivent être vraies :
- Le servlet par défaut a l'écriture activée (
lecture seule = faux) — PAS la valeur par défaut ; doit être explicitement configuré - La persistance de la session basée sur les fichiers est configurée – OU un PUT partiel écrit dans un chemin accessible à la désérialisation.
Remarque sur les prérequis : Certaines sources ont initialement indiqué que les conditions préalables étaient strictes. Cependant, une analyse réelle a montré que certaines configurations Tomcat courantes (y compris certaines distributions de serveurs d'applications) remplissent les deux conditions. Correctif quel que soit : le score CVSS reflète les pires conditions.
L'attaque à deux demandes
# Requête 1 : Télécharger un objet sérialisé malveillant en tant que PUT partiel METTRE /.xxxxx HTTP/1.1 Hébergeur : target.com Type de contenu : application/flux d'octets Plage de contenu : octets 0-1233/1234 Longueur du contenu : 1234 [charge utile de la chaîne de gadgets Java sérialisée — par exemple, Commons Collections] # Tomcat le stocke sous forme de fichier temporaire dans le répertoire de travail # Nom de fichier dérivé de l'URL : .xxxxx → stocké sous forme de téléchargement partiel # Requête 2 : Déclencher la désérialisation via la recherche de session OBTENIR /.xxxxx HTTP/1.1 Hébergeur : target.com Cookie : JSESSIONID=.xxxxx # Tomcat recherche le fichier de session correspondant à l'ID de session # Trouve le fichier de l'attaquant → le désérialise → RCE
Pourquoi Tomcat est une cible de grande valeur
Apache Tomcat est l'un des serveurs d'applications Java les plus largement déployés au monde, utilisé dans :
- Applications Web Java d'entreprise
- Applications Spring Boot déployées sous forme de fichiers WAR
- Applications J2EE héritées
- Applications internes RH, ERP et métiers
- Microservices cloud natifs
Un RCE dans Tomcat signifie souvent l'accès aux informations d'identification de la base de données, aux API internes et aux données commerciales sensibles stockées par les applications qui y sont exécutées.
Détection
# Vérifier la version de Tomcat /opt/tomcat/bin/version.sh # ou vérifiez le manifeste catalina.jar unzip -p /opt/tomcat/lib/catalina.jar META-INF/MANIFEST.MF | grep version d'implémentation # Vérifiez les téléchargements PUT partiels suspects dans les journaux d'accès grep 'PUT' /opt/tomcat/logs/localhost_access_log.* | grep -v '200\|201\|204' grep 'PUT.*Content-Range' /opt/tomcat/logs/localhost_access_log.* # Vérifiez les fichiers inhabituels dans le répertoire de travail Tomcat find /opt/tomcat/work -name "*.session" -newer /opt/tomcat/conf/server.xml trouver /opt/tomcat/work -type f -newer /opt/tomcat/conf/server.xml # Vérifiez si l'écriture du servlet par défaut est activée grep -r "lecture seule" /opt/tomcat/conf/web.xml /opt/tomcat/webapps/
Atténuation
- Corrigez immédiatement : Mise à niveau vers Tomcat 9.0.99+, 10.1.35+ ou 11.0.3+
- Désactivez l'écriture du servlet par défaut (si cela n'est pas nécessaire) :
<servlet> <servlet-name>par défaut</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <param-init> <param-name>lecture seule</param-name> <param-value>true</param-value> <!-- Assurez-vous que cela est vrai --> </init-param> </servlet> - Désactivez la persistance de session basée sur les fichiers : Passer à la persistance de session en mémoire ou en base de données
- Déployer les règles WAF : Bloquez les requêtes HTTP PUT avec
Gamme de contenuen-têtes si non nécessaires - Utilisez des filtres de désérialisation Java : Configurer les filtres de sérialisation Java 9+ pour restreindre les classes désérialisables
Capacité de détection KENSAI
- Détection de version Tomcat : KENSAI empreinte les versions d'Apache Tomcat à partir des en-têtes HTTP, des pages d'erreur et des chemins par défaut sur tous les actifs accessibles sur Internet.
- Sonde d'exploitation sécurisée : Confirme l'exploitabilité de CVE-2025-24813 sans exécuter de charges utiles
- Audit de configuration : Vérifie la présence d'un servlet par défaut activé en écriture et d'une persistance de session basée sur un fichier
- Découverte interne : Recherche les instances Tomcat exécutées sur les réseaux internes via une analyse d'agent ou de réseau
- Nouveau test automatisé : Confirme l'application du correctif après la correction
Trouvez vos serveurs Tomcat exposés avant les attaquants
KENSAI identifie chaque instance Apache Tomcat dans votre environnement et teste CVE-2025-24813 et d'autres vulnérabilités critiques du serveur d'applications Java.
Rechercher les vulnérabilités Tomcat →