
Plugin WordPress temporaire nécessitant une authentification pour le point de terminaison Core REST Batch API afin d'atténuer la chaîne de vulnérabilité wp2shell (CVE-2026-63030). Inclut un journal d'audit optionnel et une page de paramètres.
Une mitigation ciblée et temporaire pour l'accès non authentifié au point de terminaison de l'API REST Batch de WordPress Core.
SkelerSecurity Core Security Plugin exige une authentification avant que WordPress ne traite les requêtes vers la route de l'API REST Batch Core :
/wp-json/batch/v1/?rest_route=/batch/v1Il est conçu comme un contrôle défensif en profondeur à portée étroite pour la chaîne de vulnérabilité de l'API REST Batch de WordPress communément appelée wp2shell. Le plugin utilise le filtre rest_pre_dispatch de WordPress pour rejeter les requêtes batch anonymes avec HTTP 401 Unauthorized, tout en préservant l'accès aux utilisateurs authentifiés de WordPress et de l'API REST.
[!IMPORTANT] Ce plugin est une mitigation temporaire, pas un remplacement des mises à jour de WordPress Core. Appliquez immédiatement la dernière version de sécurité de WordPress et vérifiez que la mise à jour s'est terminée avec succès.
Les rapports publics décrivent une chaîne de vulnérabilité critique de WordPress Core impliquant une confusion de route de l'API REST Batch (CVE-2026-63030) et un problème connexe d'injection SQL (CVE-2026-60137). Le point de terminaison affecté peut être atteint à la fois sous les formes de routage REST avec permaliens jolis et avec chaîne de requête.
Les versions Core affectées signalées incluent :
| Branche | Versions affectées | Version corrigée |
|---|---|---|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
La branche WordPress 6.8 a également reçu un durcissement connexe dans 6.8.6. Utilisez la version supportée la plus récente de WordPress pour votre environnement plutôt que de considérer les plages de versions comme une raison de retarder la mise à jour.
/batch/v1./wp-json/batch/v1 et ?rest_route=/batch/v1, car WordPress les résout sur la même route REST.401 pour les requêtes anonymes.rest_pre_dispatch -1000).Pour une couverture temporaire maximale, associez ce plugin à une règle WAF ou proxy inverse qui bloque les requêtes anonymes aux deux formes de point de terminaison listées ci-dessus.
Copiez le répertoire skelersecurity-core-security dans :
wp-content/plugins/
Activez le plugin dans Plugins → Installed Plugins.
Vérifiez le statut du plugin dans Tools → SkelerSecurity Core.
wp plugin activate skelersecurity-core-security
Le plugin est activé immédiatement après l'activation. Visitez Tools → SkelerSecurity Core pour gérer :
| Paramètre | Par défaut | Description |
|---|---|---|
| Protection de l'API Batch | Activé | Exige une authentification pour la route de l'API REST Batch Core. |
Le journal d'audit optionnel stocke uniquement :
/batch/v1)Il n'enregistre intentionnellement pas les adresses IP, cookies, en-têtes d'autorisation, corps de requête, noms d'utilisateur ou autres données sensibles de requête.
| Type de requête | Résultat attendu lorsque la protection est activée |
|---|
Une réponse bloquée anonyme utilise le code d'erreur :
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1L'API Batch peut être utilisée par les workflows d'administration WordPress, les plugins, thèmes, clients mobiles ou intégrations externes. Les requêtes authentifiées restent autorisées, mais testez les fonctions critiques après avoir activé le plugin.
Les impacts potentiels peuvent inclure des intégrations qui soumettent intentionnellement des requêtes non authentifiées à l'API Batch Core. Si ce comportement est requis, évaluez soigneusement le risque et mettez en place une intégration correctement authentifiée plutôt que d'exposer largement le point de terminaison.
Une mitigation au niveau réseau doit couvrir les deux styles de routage. Bloquer uniquement /wp-json/batch/v1 est insuffisant car WordPress peut également router la requête via le paramètre de requête rest_route.
Logique de règle recommandée :
/wp-json/batch/v1 (autoriser la barre oblique finale facultative).rest_route=/batch/v1.Testez la règle dans votre environnement. Ce plugin est utile si un changement de WAF ne peut pas être déployé immédiatement, mais il ne doit pas vous empêcher de corriger WordPress Core.
Veuillez ne pas signaler les vulnérabilités de sécurité via les issues GitHub publiques.
Signalez les vulnérabilités suspectées en privé à votre contact sécurité ou au propriétaire du dépôt. Incluez une description claire, la version affectée, une preuve de concept reproductible et une évaluation de l'impact. N'incluez pas d'identifiants, de données personnelles ou de charges utiles destructrices.
This project is licensed under the GNU General Public License v2.0 or later.
| Journal d'audit minimal | Activé | Enregistre quand une requête API Batch anonyme est bloquée. |
| Entrées à conserver | 50 | Limite de conservation pour les entrées d'audit locales ; configurable de 10 à 200. |
Requête anonyme vers /wp-json/batch/v1 | Bloquée avec HTTP 401 |
Requête anonyme vers /?rest_route=/batch/v1 | Bloquée avec HTTP 401 |
Requête WordPress/REST authentifiée vers /batch/v1 | Autorisée pour le traitement normal d'autorisation WordPress |
| Requête vers une autre route REST | Non modifiée par ce plugin |