
Exploit de preuve de concept pour Apache Struts S2-072 (CVE-2026-73633), démontrant l'épuisement du CPU et de la mémoire en envoyant des requêtes JSON spécialement conçues au plugin JSON de Struts.
Le remplissage JSON du plugin JSON body activé côté serveur (« remplissage JSON » est une fonctionnalité essentielle fournie par le plugin JSON de Struts 2, que l'on peut simplement comprendre comme un mécanisme automatique de conversion de données.)
Lorsque le parseur de la fonction de remplissage JSON traite un tableau JSON, il lit tout le contenu JSON du corps de la requête en mémoire en une seule fois (chargement élément par élément).
Cela entraîne une consommation de mémoire (et de CPU).
J'ai déployé l'application Struts avec WSL2 et Tomcat, créé une page de connexion, avec le nom d'utilisateur admin et le mot de passe 123456.
Lors des tests réels, l'augmentation la plus visible sur la machine est l'utilisation du CPU, suivie de la mémoire, et une fois le traitement de la requête terminé, l'utilisation du CPU est libérée.
Dès que la mémoire atteint OOM, le GC est déclenché pour collecter les objets ; la mémoire ne sera jamais complètement saturée, et c'est loin de provoquer un crash.
Cela ne fait que tendre les ressources serveur du conteneur : une fois atteinte une valeur fixe d'occupation mémoire (le point de déclenchement OOM), elle n'augmente plus ; elle sera collectée puis réutilisée par le GC en boucle, collectée puis réutilisée…………
L'augmentation du CPU est proportionnelle à la valeur de remplissage (--size).
git clone https://github.com/CuteeCat/CVE-2026-73633.git
cd CVE-2026-73633
cd docker
docker-compose build
docker-compose up -d
cd ..
python poc.py --url http://127.0.0.1:8080/login.action --local