WP2Shell - CVE-2026-63030
Date de publication :
Il s'agit d'une vulnérabilité de confusion de route dans l'endpoint REST API batch (/wp-json/batch/v1), au sein de la fonction WP_REST_Server::serve_batch_request_v1().
WordPress est un système de gestion de contenu open source utilisé pour créer, publier et administrer des sites web, dont le cœur logiciel (Core) peut être enrichi par des thèmes et des extensions tierces.
Lorsqu'une sous-requête d'un lot échoue à la validation, l'objet WP_Error produit est ajouté au tableau interne $validation[] mais pas au tableau parallèle $matches[] utilisé pour le routage, ce qui crée un décalage d'index d'une position. La sous-requête « i » est alors dispatchée avec le gestionnaire prévu pour la sous-requête « i+1 ». Cette confusion permet de faire passer une requête vers un gestionnaire non destiné à la recevoir et de contourner le contrôle d'authentification qui protège normalement l'injection SQL du paramètre author__not_in de WP_Query (CVE-2026-60137).
Elle permet à un attaquant distant non authentifié, en chaînant cette confusion avec l'injection SQL, d'obtenir une exécution de code arbitraire sur le serveur.
Informations
La faille est activement exploitée : Oui
Un correctif existe : Oui
Une mesure de contournement existe : Oui
Exécution de code arbitraire (à distance)
Exploitation
CWE-436 : Interpretation Conflict
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Faible
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui
Preuve de concept
Une preuve de concept est disponible en sources ouvertes.
Systèmes ou composants affectés
• WordPress Core versions 6.9.0 jusqu'à 6.9.4
• WordPress Core versions 7.0.0 jusqu'à 7.0.1
• Note : les versions 6.8.0 à 6.8.5 restent exposées à l'injection SQL sous-jacente (CVE-2026-60137) mais pas à la chaîne complète de RCE, l'endpoint batch confus n'ayant été introduit qu'en version 6.9.
Contournement provisoire
• Désactiver l'accès REST API non authentifié.
• Rejeter les requêtes batch anonymes via un plugin must-use dédié.
Solutions ou recommandations
• Branche 7.0.x : corrigé en version 7.0.2
• Branche de développement : corrigé en version 7.1 bêta 2