CVE-2026-63030 : confusion de route dans l'API REST batch de WordPress core menant à une exécution de code à distance
SCORE DE MENACE HERMES & COMPROMISSION DU CMS D'ENTREPRISE
Cible :WordPress Core CMS Le CVSS v3.1 attribue à la CVE-2026-63030 le score critique maximal de 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H). Le score de menace Hermes s'aligne à 98 (CRITIQUE). Cet alignement reflète une exploitabilité sans authentification ni interaction sur toutes les installations WordPress 6.9 et 7.0 exposées sur Internet, exploitée dans des campagnes actives CISA KEV par chaînage de confusion de route et d'injection SQL.
CVE-2026-63030: WordPress Core REST API Batch Route Confusion to Remote Code ExecutionVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Microsoft Office & 365 Apps documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Contexte technique & matrice des versions affectées
Section intitulée « 1. Contexte technique & matrice des versions affectées »Le point de terminaison batch de l’API REST WordPress permet aux clients d’exécuter plusieurs opérations en une seule requête HTTP POST, réduisant le nombre d’allers-retours réseau.
| Paramètre | Spécification Technique | Contexte Threat Intelligence |
|---|---|---|
| Identifiant CVE | CVE-2026-63030 | Enregistrement officiel NVD & CISA KEV |
| Faiblesse CWE | CWE-436 (Interpretation Conflict), CWE-94 (Code Injection) | Contournement des filtres d’autorisation par confusion de chemin REST |
| Vecteur réseau | HTTP/HTTPS (80/TCP, 443/TCP) | Requête POST non authentifiée sur /wp-json/batch/v1 |
| Composant vulnérable | wp-includes/rest-api/class-wp-rest-server.php | Méthode serve_batch_request() |
| Versions affectées | 6.9.0 à 6.9.4, 7.0.0 à 7.0.1 | Déploiements modernes de WordPress Core |
| Versions corrigées | 6.9.5, 7.0.2 | Correctifs officiels de sécurité |
2. Analyse approfondie du mécanisme de vulnérabilité
Section intitulée « 2. Analyse approfondie du mécanisme de vulnérabilité »Défaillance de normalisation dans serve_batch_request()
Section intitulée « Défaillance de normalisation dans serve_batch_request() »Lorsqu’une requête groupée est traitée, WP_REST_Server instancie des objets synthétiques WP_REST_Request pour chaque sous-requête :
// Logique vulnérable dans wp-includes/rest-api/class-wp-rest-server.phppublic function serve_batch_request( $request ) { $requests = $request->get_param( 'requests' ); $responses = array();
foreach ( $requests as $sub_req_data ) { $sub_req = new WP_REST_Request( $sub_req_data['method'], $sub_req_data['path'] ); // Divergence : la validation des droits s'effectuait sur un chemin nettoyé, // tandis que l'exécution dispatch() utilisait la chaîne brute fournie par le client $route = $this->match_request_to_handler( $sub_req );
if ( ! $this->check_batch_permissions( $sub_req, $route ) ) { continue; }
$responses[] = $this->dispatch( $sub_req ); } return $responses;}La divergence entre la chaîne validée par check_batch_permissions() et celle résolue par dispatch() permettait d’échapper au contrôle d’accès : la validation identifiait une route publique (ex: /wp/v2/posts), tandis que le dispatcher exécutait une route d’administration interne sensible.
3. Vecteurs d’attaque & chaîne d’exploitation
Section intitulée « 3. Vecteurs d’attaque & chaîne d’exploitation »L’exploitation observée par la CISA suit une chaîne d’attaque en plusieurs étapes :
- Émission d’une requête POST groupée vers
/wp-json/batch/v1. - Contournement des barrières de sécurité via la confusion de route pour cibler des méthodes internes.
- Chaînage avec l’injection SQL CVE-2026-60137 pour dérober les nonces administrateurs et les jetons de session.
- Exécution de code à distance : création d’un utilisateur administrateur illégitime et déploiement d’un web shell PHP via l’installateur d’extensions.
4. Règles de détection & détection forensique
Section intitulée « 4. Règles de détection & détection forensique »Règle réseau Suricata
Section intitulée « Règle réseau Suricata »alert http any any -> $HTTP_SERVERS any ( msg:"HERMES EXPLOIT - Confusion de route API REST WordPress Batch (CVE-2026-63030)"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"/wp-json/batch/v1"; nocase; http.request_body; content:"requests"; content:"path"; pcre:"/"path"\s*:\s*"[^"]*(\.\.|%2e%2e|%00|\/\/\/)/i"; classtype:web-application-attack; sid:202663030; rev:1;)Requête de détection SIEM Splunk
Section intitulée « Requête de détection SIEM Splunk »index=web_proxy sourcetype=access_combineduri_path="*/wp-json/batch/v1*" http_method="POST"| spath input=_raw output=batch_reqs path=requests{}| mvexpand batch_reqs| spath input=batch_reqs| eval suspect=if(match(path, "(?i)(\.\.|%2e|%00|admin|users|plugins)"), 1, 0)| where suspect=1| stats count earliest(_time) as premiere_vue latest(_time) as derniere_vue by src_ip, dest_ip, path5. Guide de remédiation & durcissement
Section intitulée « 5. Guide de remédiation & durcissement »-
Mise à niveau immédiate de WordPress : Mettre à jour le CMS vers la version 7.0.2 ou 6.9.5 :
Fenêtre de terminal wp core update --version=7.0.2 -
Désactivation temporaire du Point de terminaison batch : Si le patch ne peut pas être déployé dans l’immédiat, désactiver le point batch dans
functions.php:add_filter( 'rest_endpoints', function( $endpoints ) {if ( isset( $endpoints['/batch/v1'] ) ) {unset( $endpoints['/batch/v1'] );}return $endpoints;}); -
Audit d’intégrité du système : Vérifier l’absence de comptes administrateurs créés récemment ou de plugins non autorisés :
Fenêtre de terminal wp user list --role=administratorwp plugin list --status=active