XSS2Shell transforme un login WordPress échoué en exécution de code à distance sur 500 millions de sites
Une chaîne de vulnérabilités dans WordPress Core, baptisée XSS2Shell, permet à un attaquant non authentifié de transformer une simple tentative de connexion échouée en exécution de code PHP sur le serveur. Le correctif 7.0.3 est sorti le 6 août 2026 — 43 % du web doit l’appliquer maintenant.
Le 6 août 2026, l’équipe de sécurité de WordPress a publié en urgence la version 7.0.3, qui corrige CVE-2026-64638, une vulnérabilité baptisée XSS2Shell. Le bug touche une ligne de code présente dans WordPress Core depuis la version 4.7 — soit toutes les installations activement maintenues du CMS qui alimente 43 % du web, c’est-à-dire plus de 500 millions de sites. La chaîne transforme un échec de connexion sur la page wp-login.php en exécution de code PHP distante, sans authentification préalable.
Découverte par les chercheurs de pwn.ai, la faille exploite un désaccord vieux de plusieurs années entre deux parsers HTML qui coexistent dans WordPress.
Une divergence de parseurs au cœur de la faille
Quand un utilisateur soumet un nom d’utilisateur inexistant sur wp-login.php, WordPress construit un message d’erreur via la fonction wp_strip_all_tags. C’est là que le piège se referme.
En insérant un espace entre le chevron ouvrant et le nom de la balise — par exemple < area> au lieu de <area> — l’attaquant trompe le parseur strip_tags natif de PHP, qui voit une chaîne inoffensive. Mais le KSES (Kses Strips Evil Scripts), le sanitizer historique de WordPress, réinterprète cette même chaîne comme du HTML légitime contenant des éléments interactifs tels que <area>, <div> ou <button>.
Le résultat : des éléments HTML contrôlés par l’attaquant sont injectés directement dans la page de connexion, sans compte, sans cookie, sans authentification.
De l’injection HTML au RCE en trois étapes
Les éléments injectés ne contiennent pas de JavaScript. Mais ils sont conçus pour correspondre aux sélecteurs que le fichier user-profile.js de WordPress recherche automatiquement au chargement de la page — un vestige de la fonctionnalité de réinitialisation de mot de passe.
Cette correspondance déclenche un clic automatique qui cascade en requête AJAX. Via une technique de DOM clobbering, l’élément injecté détourne l’URL de destination vers l’API REST de WordPress, avec des paramètres de method-override et JSONP. La réponse est renvoyée enrobée dans du JavaScript exécutable — l’attaquant obtient une exécution de script arbitraire dans l’origine WordPress, en pur pre-auth XSS.
L’escalade vers l’exécution de code PHP distante complète nécessite une interaction supplémentaire, ce qui explique le CVSS de 8,9 plutôt qu’un score maximal. Si un administrateur connecté est attiré sur une page tierce malveillante et interagit avec elle, le script de l’attaquant peut :
- Créer un mot de passe d’application WordPress en utilisant la session légitime de l’administrateur
- Publier une page contenant du JavaScript arbitraire via le privilège
unfiltered_html - Uploader un plugin au format ZIP contenant un webshell PHP
Tout cela via des appels REST API authentifiés que l’administrateur n’a jamais explicitement approuvés.
L’héritage d’une technique de 2022
La méthode sous-jacente s’appuie sur une recherche publiée en 2022 par Paulos Yibelo sur le Same Origin Method Execution (SOME), une technique initialement utilisée pour contourner les protections Content Security Policy sur les sites WordPress. Elle avait été nominée pour la Top Web Hacking Technique de l’année. Quatre ans plus tard, elle trouve une application bien plus dévastatrice.
WordPress a rétroporté le correctif jusqu’à la version 4.7, couvrant l’intégralité des branches encore sous support de sécurité. Aucune exploitation active dans la nature ni preuve de concept publique n’a été signalée au moment de la publication, selon les trackers de vulnérabilités.
Verdict
| Profil | Action |
|---|---|
| Site auto-hébergé | Mise à jour manuelle vers WordPress 7.0.3 immédiate |
| Hébergement mutualisé | Vérifier que l’hébergeur a appliqué le correctif (la plupart le font automatiquement) |
| Site avec plugins de caching | Purger tous les caches après mise à jour |
| Multisite | Appliquer la mise à jour réseau — toutes les sous-instances sont affectées |
XSS2Shell est un rappel brutal que la surface d’attaque d’un CMS ne se limite pas aux plugins tiers. Une fonction de sanitization écrite il y a dix ans, un vestige JavaScript oublié, et un désaccord de parseur suffisent à exposer la moitié du web. Si vous gérez un WordPress, la question n’est pas de savoir si vous allez patcher, mais si vous l’avez déjà fait.
Références
- WordPress.org — Version 7.0.3 Security Release (6 août 2026)
- pwn.ai — XSS2Shell: From Failed Login to RCE (7 août 2026)
- Cyber Security News — WordPress XSS2Shell Vulnerability (7 août 2026)