Salty Fish
En juillet 2026, Adam Kues, chercheur en sécurité au sein de l'entreprise de cybersécurité Searchlight Cyber, a révélé une vulnérabilité critique affectant le cœur (core) de WordPress, baptisée wp2shell. Il s'agit d'une vulnérabilité d'exécution de code à distance sans authentification (RCE Pré-Auth), ce qui signifie que des attaquants peuvent exécuter des attaques à distance sur une installation WordPress par défaut, sans avoir besoin d'identifiants ni du moindre plugin activé.

Avec plus de 500 millions de sites web actifs utilisant WordPress à travers le monde, la portée et l'impact de cette vulnérabilité sont d'une évidence cruciale.
Ce qui rend wp2shell particulièrement dangereuse, c'est la facilité déconcertante avec laquelle elle peut être exploitée. Contrairement à la majorité des incidents de sécurité sur WordPress, cette faille réside directement dans le cœur de WordPress (WordPress Core) et non dans un plugin ou un thème tiers. Un utilisateur anonyme peut ainsi parvenir à exécuter du code à distance sur une installation WordPress par défaut, sans aucun prérequis.
Afin de laisser suffisamment de temps aux administrateurs du monde entier pour appliquer les correctifs, Searchlight Cyber n'a pas encore divulgué les détails techniques approfondis de la faille. Toutefois, l'entreprise a mis à disposition un outil de détection en ligne pour permettre aux administrateurs de vérifier si leurs sites sont vulnérables.
| Plage de versions WordPress | Statut | Version corrigée |
|---|---|---|
| < 6.9.0 | Non affecté | — |
| 6.9.0 – 6.9.4 | Affecté | 6.9.5 |
| 7.0.0 – 7.0.1 | Affecté | 7.0.2 |
Si votre site fonctionne sous une version comprise entre 6.9.0 et 6.9.4, vous devez impérativement le mettre à jour vers la version 6.9.5. Les sites sous version 7.0.0 ou 7.0.1 doivent quant à eux passer à la version 7.0.2. Les versions antérieures à la 6.9.0 ne sont pas concernées par cette vulnérabilité.
Ces dernières années, les failles de sécurité de WordPress se concentraient principalement sur son écosystème de plugins — par exemple, des vulnérabilités d'injection SQL ou XSS au sein d'extensions populaires téléchargées des millions de fois, qu'il suffisait de désinstaller ou de mettre à jour pour résoudre le problème. Cependant, wp2shell change complètement la donne.
Premièrement, la faille se situe dans le cœur même de WordPress (Core). Cela signifie que quels que soient les plugins ou thèmes installés sur votre site, tout serveur faisant tourner une version affectée est exposé.
Deuxièmement, il s'agit d'une faille de pré-authentification. Les attaquants n'ont pas besoin d'identifiants, et n'ont pas non plus besoin de recourir à l'ingénierie sociale ou au phishing pour subtiliser des accès administrateur. Ils peuvent cibler le site de manière directe. Dès lors que ce type de vecteur d'attaque sans interaction est automatisé, les scans de masse et les compromissions automatisées ne deviennent qu'une question de temps.
Troisièmement, le nombre de cibles potentielles est colossal. WordPress propulse environ 43 % des sites web sous CMS à l'échelle mondiale, représentant des centaines de millions de sites actifs. Même si l'on suppose prudemment que seuls 10 % de ces sites utilisent l'une des versions affectées, le nombre de cibles potentielles menacées s'élève à plusieurs dizaines de millions.

La mise à jour reste le moyen le plus efficace de résoudre ce problème. Les versions 7.0.2 et 6.9.5 de WordPress intègrent déjà les correctifs nécessaires pour combler la faille wp2shell.
Rendez-vous sur votre tableau de bord WordPress → Mises à jour, vérifiez votre version actuelle et lancez la mise à jour. Si les mises à jour automatiques sont activées sur votre site, nous vous conseillons tout de même de vous connecter pour confirmer que le correctif a bien été appliqué.
Si vous ne pouvez pas effectuer de mise à jour immédiate en raison de tests de compatibilité ou d'autres contraintes, vous pouvez installer temporairement l'extension "Disable WP REST API". Ce plugin bloque l'accès à l'API REST de WordPress pour les utilisateurs non authentifiés, coupant ainsi le vecteur d'attaque de wp2shell.
Attention toutefois : cela peut perturber les fonctionnalités de votre site qui s'appuient sur l'API REST (telles que les frameworks de rendu frontend, les architectures WordPress Headless ou les intégrations tierces). Effectuez des tests de non-régression approfondis après l'avoir activé.
Si votre site se trouve derrière un pare-feu applicatif web (WAF), vous pouvez configurer des règles pour bloquer les deux schémas de requêtes suivants :
Bloquer le chemin d'URL :
/wp-json/batch/v1
Bloquer le paramètre de requête :
rest_route=/batch/v1
Ces deux règles doivent être configurées en même temps. Bloquer l'une sans l'autre est insuffisant, car l'API REST de WordPress permet d'accéder à ce même point d'entrée (endpoint) via le chemin d'URL classique ou via des paramètres de requête.
Pour Nginx, vous pouvez ajouter les lignes suivantes dans votre bloc server :
# Bloquer le chemin de l'API Batch lié à la vulnérabilité wp2shell
location ~*/wp-json/batch/v1 {
deny all;
return 403;
}
# Bloquer les requêtes tentant d'accéder à l'API Batch via les paramètres de requête
if ($query_string ~* "rest_route=/batch/v1") {
return 403;
}
Pour Apache (avec le module mod_rewrite activé), vous pouvez ajouter ceci à votre fichier .htaccess :
# Bloquer les requêtes sur le chemin de l'API Batch
RewriteEngine On
RewriteRule ^wp-json/batch/v1 - [F,L]
RewriteCond %{QUERY_STRING} rest_route=/batch/v1 [NC]
RewriteRule .* - [F,L]
Searchlight Cyber a fourni un extrait de code pour plugin WordPress pouvant être déployé directement comme correctif d'urgence. Ce code intercepte et rejette toutes les requêtes non authentifiées destinées à l'endpoint /batch/v1 tout en laissant les utilisateurs connectés inchangés.
Enregistrez le code ci-dessous sous le nom disable-batch-api-for-unauth.php, transférez-le dans le dossier wp-content/plugins/ de votre site WordPress par SSH ou FTP, puis activez-le depuis votre page d'administration des extensions.
<?php
/**
*Plugin Name: Disable Unauthenticated REST Batch API* Description: Requires an authenticated WordPress user for REST batch requests.
*Version: 1.0.0* Requires at least: 5.6
*License: GPL-2.0-or-later*/
defined( 'ABSPATH' ) || exit;
/**
*Reject anonymous requests to the core REST batch endpoint.*
*@param mixed $result Pre-calculated dispatch result.* @param WP_REST_Server $server REST server instance.
*@param WP_REST_Request $request Current REST request.* @return mixed|WP_Error
*/
function wporg_require_authentication_for_rest_batch( $result, $server, $request ) {
$route = untrailingslashit( $request->get_route() );
if ( '/batch/v1' !== $route || is_user_logged_in() ) {
return $result;
}
return new WP_Error(
'rest_batch_authentication_required',
'Authentication is required to use the batch API.',
array( 'status' => 401 )
);
}
add_filter( 'rest_pre_dispatch', 'wporg_require_authentication_for_rest_batch', -1000, 3 );
Analyse du code :
rest_pre_dispatch est un crochet de filtrage (filter hook) exécuté avant que l'API REST de WordPress ne distribue la requête. Définir sa priorité à -1000 garantit que cette vérification de sécurité s'exécute avant tous les autres filtres.untrailingslashit() supprime les barres obliques de fin (trailing slashes) de la route, empêchant ainsi les contournements basés sur des variations de formatage./batch/v1 et que l'utilisateur n'est pas connecté, le script renvoie directement une erreur WP_Error avec un code d'état HTTP 401.Cette extension est conçue comme un correctif temporaire. Nous vous recommandons de la désinstaller une fois que vous aurez effectué la mise à jour globale.
Introduite dans WordPress 5.6, la fonctionnalité "batch" de l'API REST (accessible via /batch/v1) permet aux clients de regrouper plusieurs appels API REST en une seule requête HTTP. L'objectif initial était de réduire les allers-retours réseau et d'optimiser les performances des éditeurs front-end, tels que l'éditeur de blocs Gutenberg.
Bien que ce mécanisme ne soit pas intrinsèquement défectueux, le traitement des requêtes groupées est bien plus complexe que celui d'une requête classique, car il implique des contrôles d'authentification, l'analyse des requêtes et l'agrégation des réponses. L'exploit wp2shell tire parti d'une faiblesse dans cette chaîne de traitement pour parvenir à exécuter du code à distance.
Pour les sites qui ne dépendent pas de l'API Batch (ce qui inclut la grande majorité des configurations WordPress standard), la désactivation temporaire de cet endpoint a peu de chances de provoquer le moindre problème fonctionnel.

L'incident wp2shell met en lumière une réalité souvent négligée : d'innombrables sites WordPress tournent sur les environnements locaux des développeurs à des fins de staging et de test, et les mises à jour de sécurité de ces instances locales ne doivent pas être ignorées.
Pour les développeurs utilisant des environnements de développement locaux intégrés (comme ServBay, une plateforme de gestion du développement native IA qui regroupe bases de données, versions PHP et outils de développement en un seul pack), la gestion des installations et des versions de WordPress est généralement centralisée.
Ces outils offrent un avantage majeur lors d'incidents de sécurité : les administrateurs peuvent visualiser l'état des versions PHP et WordPress de tous les sites locaux depuis un panneau de contrôle unique et appliquer les mises à jour en masse, plutôt que de se connecter à chaque tableau de bord individuellement pour cliquer sur "Mettre à jour".
En poussant la réflexion plus loin, un nombre croissant de développeurs s'appuient désormais sur des agents de programmation intelligents (comme Claude Code, Cursor ou Codex) pour concevoir et maintenir des sites WordPress.
Dans ce type de flux de travail, la sécurité des clés API devient un autre enjeu crucial. Les développeurs ont souvent de multiples clés API de services IA dispersées dans divers fichiers de configuration de projet. Si un site WordPress est compromis, un attaquant parcourant le système de fichiers pourrait facilement dérober ces clés stockées en texte clair.

L'AI Gateway de ServBay apporte une solution à cette faille de sécurité. Elle centralise et chiffre l'ensemble des clés API des services d'IA au sein d'une passerelle locale sécurisée. Les différents projets et outils effectuent leurs appels API à travers ce point d'entrée unique, évitant ainsi d'exposer les clés d'origine dans le code source ou les fichiers de configuration. Elle permet également de générer des clés virtuelles pour une sécurité accrue.
Même si une instance WordPress venait à être compromise, les attaquants ne pourraient pas récupérer les clés brutes des services d'IA. Externaliser la gestion des identifiants de la couche applicative vers la couche infrastructure permet de réduire considérablement la portée d'une éventuelle fuite d'informations d'identification.

Après d'avoir appliqué le correctif ou la mesure d'atténuation, nous vous recommandons de procéder à un audit de sécurité complet de votre site :
wp-content à la recherche de fichiers PHP récemment créés ou modifiés qui vous sembleraient suspects./batch/v1.L'exploit wp2shell constitue l'une des failles critiques les plus importantes découvertes récemment dans le cœur de WordPress. Sans prérequis de plugin ni d'authentification, sa surface d'attaque englobe toutes les installations par défaut exécutant les versions affectées. Fort heureusement, l'équipe centrale de WordPress a réagi très rapidement : les versions 6.9.5 et 7.0.2 intègrent d'ores et déjà le correctif.
Pour les administrateurs de sites, effectuer immédiatement la mise à jour reste la meilleure option. Si vous ne pouvez pas effectuer cette mise à niveau à très court terme, le déploiement des règles WAF ou du plugin personnalisé décrits ci-dessus permettra de neutraliser efficacement le vecteur d'attaque.
Pour les développeurs qui gèrent plusieurs instances locales de WordPress, cet incident est un rappel essentiel : la sécurité de l'environnement local ne doit jamais être négligée. S'appuyer sur des gestionnaires d'environnement centralisés et des stratégies consolidées de gestion des identifiants simplifie considérablement la réponse aux incidents de sécurité et garantit l'intégrité de vos workflows.