Guide de déploiement

WordPress CVE-2026-87902 : patcher 7.1.2 avant d'être compromis

Déployer sur un VPS Cloud →

Tutoriel

WordPress CVE-2026-87902 : patcher 7.1.2 avant d'être compromis

Sécurité & Monitoring8 min de lecture18 étapes

Le 22 septembre 2026, l'équipe WordPress a publié la version 7.1.2 pour corriger CVE-2026-87902, une faille d'inclusion de fichiers locaux (LFI) permettant dans certaines conditions une exécution de code à distance (RCE) sans authentification. Le score CVSS 4.0 est de 9.2 sur 10. Moins de cinq heures après la publication du correctif, Patchstack a enregistré les premières requêtes malveillantes à 17 h 44 UTC. Toutes les installations WordPress entre la version 4.7.0 et 7.1.1 sont concernées — soit près d'une décennie de releases. Cet article vous explique comment vérifier votre exposition, appliquer le patch en moins de deux minutes, et pourquoi un hébergement mutualisé vous laisse exposé plus longtemps qu'un VPS.

CVE-2026-87902 en bref — ce qui se passe en ce moment

La faille réside dans la fonction get_page_template(), qui construit le nom du fichier de thème à partir du paramètre pagename de la requête HTTP sans le valider correctement. Un attaquant non authentifié peut injecter des séquences de traversée de répertoire doublement encodées pour forcer WordPress à inclure n'importe quel fichier PHP lisible sur le serveur, en dehors des répertoires de thème autorisés.

La faille est qualifiée de LFI conditionnelle vers RCE : l'exécution de code n'est pas garantie sur chaque installation, mais les conditions requises sont très répandues. Patchstack a observé dès les premières heures d'exploitation des payloads qui utilisent pearcmd.php — présent par défaut dans les images Docker officielles et les environnements cPanel avec PHP < 8.5 — pour écrire des fichiers PHP exécutables dans /tmp ou /var/tmp. Le score CVSS 4.0 de 9.2 reflète l'absence totale d'authentification requise et l'impact potentiel sur la confidentialité, l'intégrité et la disponibilité du serveur.

  • Inclure un fichier PHP arbitraire lisible hors du répertoire de thème actif via une traversée de chemin dans le paramètre pagename
  • Utiliser pearcmd.php (présent sur cPanel/PHP < 8.5 et images Docker officielles) pour écrire un fichier PHP contrôlé par l'attaquant sur le disque
  • Déposer un webshell dans /tmp ou /var/tmp sous un nom générique (wp-pear-rce-flag.php, poc87902.php)
  • Exécuter des commandes shell sur le serveur sans aucun compte WordPress ni intervention d'un utilisateur
  • Pivoter vers d'autres sites hébergés sur le même serveur si les permissions le permettent
  • Exfiltrer des données de base de données, des clés API ou des fichiers .env accessibles en lecture

Vérifier si vos sites sont exposés

La première étape est de connaître la version WordPress de chaque installation. Avec WP-CLI, la commande est directe et s'exécute en quelques secondes, même sur un parc de plusieurs dizaines de sites.

  1. Vérifier la version courante et les mises à jour disponibles :
    `wp core version
    wp core check-update`

  2. Lister toutes les installations WordPress sur un serveur cPanel (si vous gérez plusieurs sites) :
    find /home -name 'wp-config.php' -not -path '*/wp-content/*' 2>/dev/null

  3. Vérifier la version de chaque installation trouvée :
    wp --path=/home/user/public_html core version

  4. Identifier si le thème actif contient un répertoire commençant par page- (condition d'exploitation) :
    ls $(wp --path=/home/user/public_html eval 'echo get_stylesheet_directory();') | grep '^page-'

  5. Vérifier si register_argc_argv est activé (deuxième condition d'exploitation) :
    php -r 'echo ini_get("register_argc_argv") ? "EXPOSED" : "OK";'

  6. Rechercher des traces d'exploitation dans les logs d'accès (pattern caractéristique) :
    `grep -E 'pagename=.*\.\..*page_id=' /var/log/nginx/access.log
    grep -E 'pagename=.*%2e%2e.*page_id=' /var/log/apache2/access.log`

Une installation est exposée au RCE si elle réunit les trois conditions : version entre 4.7.0 et 7.1.1, thème actif contenant un répertoire page-* à la racine, et register_argc_argv activé. L'LFI seule (sans RCE) est possible dès que les deux premières conditions sont remplies. Les thèmes les plus souvent cités par les chercheurs sont les thèmes par défaut anciens (Twenty Twelve, Twenty Fourteen) et des thèmes tiers populaires comme Neve, Hestia et Sydney.

Sauvegarder avant de patcher

Avant toute mise à jour de WordPress core, une sauvegarde est indispensable. Sur un VPS, la méthode la plus fiable est le snapshot de la VM — elle capture l'état complet du disque en quelques secondes et permet un rollback immédiat en cas de problème de compatibilité avec un plugin. En parallèle, exporter la base de données avec WP-CLI garantit une restauration ciblée sans avoir à remonter le snapshot entier.

  1. Créer un snapshot de la VM depuis le panneau VPS (opération instantanée, rollback en < 2 min) — ou depuis l'API si vous automatisez :
    `# Exemple avec l'API Proxmox
    pvesh create /nodes/{node}/qemu/{vmid}/snapshot --snapname pre-wp712`

  2. Exporter la base de données WordPress avec WP-CLI :
    wp db export backup-pre-712.sql --add-drop-table

  3. Vérifier l'intégrité du dump :
    wp db check

  4. Copier le dump hors du serveur (espace de stockage distant ou local) :
    rsync -avz user@serveur:/home/user/public_html/backup-pre-712.sql ./

Patcher WordPress 7.1.2 — les étapes

Sur un VPS avec accès root, la mise à jour WordPress s'effectue via WP-CLI sans intervention de l'hébergeur. Le processus complet — sauvegarde comprise — prend moins de trois minutes. WordPress 7.1.2 a été publié le 22 septembre 2026 ; les correctifs ont également été rétroportés sur toutes les branches maintenues jusqu'à la version 4.7.

  1. Mettre WordPress en mode maintenance pour éviter toute requête pendant la mise à jour :
    wp maintenance-mode activate

  2. Mettre à jour le core WordPress vers 7.1.2 :
    wp core update

  3. Vérifier que la mise à jour s'est bien appliquée :
    `wp core version
    # Doit retourner : 7.1.2`

  4. Mettre à jour la base de données si nécessaire :
    wp core update-db

  5. Vider le cache d'objets et les caches applicatifs :
    wp cache flush

  6. Désactiver le mode maintenance :
    wp maintenance-mode deactivate

  7. Vérifier l'absence d'erreurs dans les logs et tester une page clé du site :
    `wp eval 'echo get_permalink(get_option("page_on_front"));'
    curl -sI https://votre-site.com/ | grep HTTP`

  8. Si plusieurs sites sont hébergés, boucler sur chaque installation :
    `for dir in $(find /home -name 'wp-config.php' -not -path '*/wp-content/*' -exec dirname {} \;); do
    echo "=== $dir ==="
    wp --path="$dir" core update
    done`

Pourquoi le mutualisé vous expose plus longtemps

Sur un hébergement mutualisé, les mises à jour automatiques de WordPress core sont gérées par l'hébergeur ou par le panneau de contrôle (cPanel, Plesk). La fenêtre entre la publication du correctif et son application effective dépend du planning de l'hébergeur, de la charge de ses serveurs et de ses propres tests de non-régression. Dans le cas de CVE-2026-87902, l'exploitation active a démarré moins de cinq heures après la publication du patch — un délai bien inférieur au cycle de mise à jour de la plupart des mutualisés.

Faites défiler le tableau

CritèreMutualisé (cPanel/Plesk)VPS root ServOrbit
Délai de patch après publicationMutualisé : 12 à 72 heures selon l'hébergeurVPS root : < 3 minutes avec WP-CLI
Accès aux logs d'accèsMutualisé : limité ou inexistant selon l'offreVPS root : accès complet à /var/log en temps réel
Contrôle de `register_argc_argv`Mutualisé : imposé par l'hébergeur, souvent activéVPS root : désactivable via `php.ini` en 30 secondes
Isolation des sitesMutualisé : même serveur que d'autres clientsVPS root : environnement dédié, pas de voisinage
Sauvegarde avant patchMutualisé : snapshot non disponible ou payantVPS root : snapshot instantané via l'API

L'argument « mon hébergeur met à jour automatiquement » ne tient plus face à une exploitation qui démarre à J+0 en moins de cinq heures. Sur CVE-2026-87902, les premières requêtes malveillantes ont été enregistrées le 22 septembre 2026 à 17 h 44 UTC — soit avant que la plupart des mutualisés aient eu le temps de planifier et tester leur déploiement.

Configuration post-patch recommandée : (1) Désactiver XML-RPC si vous n'utilisez pas d'application mobile WordPress ni Jetpack :
`# Dans wp-config.php
add_filter('xmlrpc_enabled', '__return_false');`
(2) Forcer les mises à jour automatiques du core pour les futures releases de sécurité :
`# Dans wp-config.php
define('WP_AUTO_UPDATE_CORE', 'minor');`
(3) Désactiver register_argc_argv dans php.ini pour supprimer le vecteur RCE via pearcmd.php :
register_argc_argv = Off
(4) Ajouter une règle WAF pour bloquer les patterns de traversée dans le paramètre pagename en attendant la propagation du patch sur les installations en retard.

Dépannage — erreurs courantes après le patch

La mise à jour du core WordPress est généralement sans friction, mais certains environnements présentent des problèmes prévisibles. Voici les cas les plus fréquents et leur résolution.

  • Erreur de connexion à la base de données après mise à jour : lancez wp core update-db si vous ne l'avez pas fait — certaines migrations de schéma ne s'appliquent pas automatiquement.
  • Écran blanc ou erreur 500 : vérifiez les logs PHP (/var/log/php8.x-fpm.log) et désactivez temporairement tous les plugins pour isoler un conflit de compatibilité avec la version 7.1.2 : wp plugin deactivate --all.
  • Permission refusée sur wp-content/ : WP-CLI doit être exécuté avec l'utilisateur propriétaire des fichiers. Sur cPanel : su - cpanelusername -c 'wp core update'.
  • Mise à jour impossible, message « Filesystem not available » : configurez la méthode d'accès direct dans wp-config.php : define('FS_METHOD', 'direct'); — valide uniquement sur un VPS où vous êtes propriétaire des fichiers.
  • Thème enfant qui casse après le patch : si votre thème enfant hérite d'un thème avec un répertoire page-*, vérifiez la compatibilité du parent avec 7.1.2 sur le dépôt GitHub ou WordPress.org du thème.
  • Cache d'objet périmé (Redis/Memcached) : après wp cache flush, redémarrez le service de cache si les erreurs persistent : systemctl restart redis ou systemctl restart memcached.

De WordPress vers une architecture plus robuste

CVE-2026-87902 illustre une réalité structurelle : WordPress core est une surface d'attaque large, et chaque faille critique repose la question du contrôle de l'environnement d'exécution. Un VPS dédié n'élimine pas les vulnérabilités, mais il réduit la fenêtre d'exposition à quelques minutes, permet d'auditer l'environnement (logs, PHP config, isolation des processus) et de répondre précisément à chaque vecteur d'attaque documenté.

Pour les agences et les développeurs qui gèrent un parc de sites WordPress, la consolidation sur un VPS avec WP-CLI installé et des scripts de mise à jour automatisée transforme une urgence sécurité en procédure de routine. Le coût opérationnel d'un VPS est compensé par l'élimination du délai hébergeur — qui, comme le montre cette CVE, peut s'avérer décisif.

Patchez en minutes, pas en heures

Sur un VPS ServOrbit, `wp core update` s'exécute avec accès root direct — pas d'attente que l'hébergeur applique le patch. CVE-2026-87902 a été exploitée en moins de cinq heures après la publication du correctif. La différence entre exposé et protégé se joue sur l'accès à votre propre serveur.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet