Wordpress & Woocommerce · 3 min de lecture

CVE-2026-87902 : la faille critique du cœur WordPress corrigée en 7.1.2 est déjà exploitée

CVE-2026-87902 : la faille critique du cœur WordPress corrigée en 7.1.2 est déjà exploitée

Le 22 septembre, WordPress a publié la version 7.1.2 pour une seule faille, classée critique : CVE-2026-87902. Un visiteur non connecté peut, dans certaines conditions, faire inclure un fichier PHP du serveur situé hors du thème actif, et aller jusqu’à l’exécution de code. Les premières tentatives d’exploitation ont été repérées moins de trois heures après la publication du correctif.

Ce que fait la faille

Le problème se situe dans get_page_template(), dans wp-includes/template.php, la fonction qui construit la liste des fichiers de modèle candidats pour afficher une page. Selon l’analyse de Patchstack, le slug du modèle de page passait bien par validate_file(), la vérification anti-traversée de répertoires de WordPress, mais pas le candidat construit à partir de la variable pagename. Une étape urldecode() supplémentaire permettait de transformer une valeur encodée en chemin exploitable.

Le nom de fichier généré a la forme page-{pagename}.php. Pour remonter dans l’arborescence, l’attaquant doit donc partir d’un dossier dont le nom commence par page- dans le thème actif, par exemple page-templates. Patchstack précise que plusieurs anciens thèmes par défaut et des thèmes tiers populaires en ont un.

L’inclusion seule ne suffit pas à exécuter du code : il faut un fichier PHP lisible qui fasse quelque chose d’utile une fois inclus. Le candidat classique est pearcmd.php de PEAR, utilisable seulement si PHP tourne avec register_argc_argv activé. D’après Patchstack, c’est le cas par défaut dans les images Docker officielles de PHP et dans les environnements cPanel sous PHP 8.5.

Versions touchées et versions corrigées

Toutes les versions de 4.7.0 à 7.1.1 sont concernées, avec un score CVSS 4.0 de 9.2. Le correctif a été rétroporté sur toutes les branches encore maintenues. Patchstack cite notamment :

  • 7.1.2 pour la branche actuelle ;
  • 7.0.6, 6.9.9 et 6.8.10 pour les branches récentes ;
  • 4.7.37 pour la plus ancienne branche maintenue.

Le correctif ajoute la vérification manquante sur pagename et une nouvelle fonction, _wp_is_template_path_allowed(), qui oblige tout modèle résolu avec des segments de remontée à rester dans le dossier du thème enfant, du thème parent ou de theme-compat.

Une exploitation très rapide

Patchstack a observé une première requête de reconnaissance à 11 h 49 UTC le jour du correctif, puis une première tentative d’écriture de fichier via pearcmd à 15 h 34. Le lendemain, un modèle Nuclei public circulait et le volume a été multiplié par plus de dix. Les requêtes utilisent des séquences encodées (%2e%2e, voire %252e%252e), commencent souvent par templates%2f et associent presque toujours pagename et page_id. Le POST a dépassé le GET, ce qui complique la recherche dans les logs d’accès classiques, qui n’enregistrent pas le corps des requêtes.

Les vérifications à faire sur vos sites

Commencez par confirmer la version, puis regardez si le thème actif expose un dossier page-* à la racine :

wp core version
wp core update --minor
ls -d wp-content/themes/*/page-*/

Côté serveur, cherchez les motifs connus dans les logs et des fichiers PHP inattendus dans les dossiers temporaires :

grep -Ei "pagename=[^& ]*(%2e%2e|%252e%252e)" /var/log/nginx/access.log*
grep -Ei "pearcmd|config-create" /var/log/nginx/access.log*
find /tmp /var/tmp -name "*.php" -ls

Patchstack cite des noms de fichiers comme wp-pear-rce-flag.php, poc87902.php, luci_*.php ou zeta_*.php. Si vous trouvez un fichier PHP dans /tmp, considérez le serveur comme compromis. Autre signal fort : une URL de page normale qui renvoie un flux RSS ou OPML avec un code 200 indique qu’une sonde a fonctionné.

Enfin, désactivez register_argc_argv dans la configuration PHP du serveur web. Ce réglage ne corrige pas l’inclusion, mais il coupe la chaîne pearcmd. Vérifiez-le via un phpinfo() ou l’outil Santé du site, pas avec php -i en ligne de commande, car le mode CLI active toujours argv.

; php.ini du pool PHP-FPM ou du vhost
register_argc_argv = Off

Ce qu’il faut retenir

  • CVE-2026-87902 touche WordPress de 4.7.0 à 7.1.1 et permet une inclusion de fichier sans authentification.
  • La mise à jour (7.1.2 ou le rétroportage de votre branche) est la seule vraie correction.
  • Le risque d’exécution de code dépend du thème (dossier page-*) et de PHP (register_argc_argv, présence de PEAR).
  • Les attaques ont commencé quelques heures après le correctif : fouillez les logs et /tmp sur les sites mis à jour en retard.

Photo d’illustration : Richard Nowell, Wikimedia Commons, CC BY-SA 4.0.

  1. WordPress 7.1.2 Release – WordPress.orgwordpress.org
  2. WordPress 7.1.2 Security Release: Unauthenticated LFI to RCE – Patchstackpatchstack.com
  3. CVE-2026-87902: Attackers Started Probing WordPress Sites Hours After the Patch – Patchstackpatchstack.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Demander un devisÉcrire