| Nom du plugin | Blocs de rayon |
|---|---|
| Type de vulnérabilité | XSS stocké authentifié |
| Numéro CVE | CVE-2025-5844 |
| Urgence | Faible |
| Date de publication CVE | 2025-08-14 |
| URL source | CVE-2025-5844 |
XSS stocké par un contributeur authentifié dans Radius Blocks (≤ 2.2.1) — Ce que les propriétaires de sites WordPress doivent savoir
Date : 2025-08-15 | Auteur : Expert en sécurité de Hong Kong
Tags : WordPress, Sécurité, WAF, XSS, Vulnérabilité de plugin, Radius Blocks, CVE-2025-5844
Introduction
Le 14 août 2025, un problème de XSS stocké (CVE-2025-5844) affectant Radius Blocks (≤ 2.2.1) a été divulgué. La vulnérabilité permet à un utilisateur authentifié avec des privilèges de contributeur (ou supérieurs) de stocker du contenu HTML/JavaScript dans un paramètre de plugin nommé nomDeTagSousEn-tête. Lorsque cette valeur stockée est rendue sans une désinfection ou un échappement approprié, elle peut s'exécuter dans le navigateur d'une victime — impactant les visiteurs du site et les utilisateurs privilégiés qui voient la sortie affectée.
Ci-dessous se trouve une explication technique concise, des étapes de détection et d'atténuation, des conseils aux développeurs pour une correction appropriée et des recommandations de réponse aux incidents. Le ton est pratique et orienté vers les propriétaires de sites, les développeurs et les équipes de sécurité opérant dans des environnements de publication en évolution rapide.
Résumé rapide
- Type de vulnérabilité : Script intersite stocké (XSS)
- Logiciel affecté : plugin Radius Blocks, versions ≤ 2.2.1
- CVE : CVE-2025-5844
- Privilège requis pour l'attaquant : Contributeur (authentifié)
- Exploitabilité : Modérée — nécessite un compte de contributeur mais la charge utile persiste et peut s'exécuter pour d'autres utilisateurs par la suite
- Gravité / CVSS : CVSS signalé 6.5 (moyen-faible) — impact significatif, en particulier sur les sites multi-auteurs ou éditoriaux
- Correction officielle : Non disponible au moment de la divulgation — appliquez des atténuations et limitez les privilèges
Pourquoi le XSS stocké d'un contributeur est important
Le XSS stocké a un impact élevé car l'entrée malveillante est persistée dans la base de données, puis exécutée lorsque qu'un autre utilisateur charge la page. Considérations clés :
- Les comptes de contributeur sont courants dans les flux de travail éditoriaux à Hong Kong et ailleurs. Les écrivains et les bénévoles ont souvent ces comptes.
- Les contributeurs peuvent créer du contenu ou enregistrer des attributs de bloc. Si les attributs de bloc sont stockés sans validation, un contributeur peut persister des charges utiles contenant des scripts qui s'exécutent ensuite pour les éditeurs, les administrateurs ou les visiteurs.
- Les XSS stockés peuvent permettre le vol de session, l'escalade de privilèges (via des actions administratives initiées par le navigateur), la défiguration de contenu, la redirection de phishing ou la livraison de logiciels malveillants persistants.
Comment cette vulnérabilité fonctionne (aperçu technique)
Le problème concerne un paramètre appelé nomDeTagSousEn-tête. Il est destiné à stocker un nom de balise HTML (par exemple, h2, h3). Un traitement correct nécessite une validation stricte par rapport à une liste autorisée de noms de balises permis et un échappement approprié à la sortie. Dans le chemin de code vulnérable, l'entrée fournie par un contributeur authentifié est stockée et ensuite sortie sans assainissement/échappement ni validation, permettant l'injection de scripts.
Modèles problématiques typiques qui mènent à ce bogue :
- Accepting arbitrary strings for a “tag name” and storing them directly.
- Rendre l'entrée utilisateur en HTML avec peu ou pas d'échappement (par exemple, en écho d'une valeur dans un nom de balise ou un contexte d'attribut).
- Absence de vérifications de capacité ou de nonce sur les points de terminaison REST/AJAX utilisés pour enregistrer les attributs de bloc.
Ce qu'un attaquant avec un accès de contributeur pourrait faire
- Soumettre une valeur conçue pour
nomDeTagSousEn-têtequi contient un script ou un attribut on*, en s'appuyant sur une sortie qui ne sera pas assainie. - Parce que la valeur est stockée, la charge utile affectera chaque visiteur qui charge ce contenu — y compris les éditeurs et les administrateurs qui l'ouvrent dans l'éditeur de blocs ou le panneau de paramètres.
- Intégrer du code côté client qui effectue une redirection, vole des cookies ou des jetons de session (si
HttpOnlydes indicateurs sont manquants), ou déclenche des requêtes initiées par le navigateur qui effectuent des actions privilégiées au nom d'un administrateur authentifié.
Notes contextuelles importantes
- Ce n'est pas un RCE non authentifié ou une injection SQL : un attaquant a besoin d'un compte connecté avec des privilèges de contributeur ou supérieurs.
- L'impact dépend de la manière dont le plugin utilise le
nomDeTagSousEn-têtevaleur : s'il est rendu sur le front-end pour les visiteurs ou dans la zone d'administration pour les éditeurs, la surface d'attaque est plus grande. - Les indicateurs de cookie sécurisés (HttpOnly, SameSite) et les en-têtes CSP peuvent réduire certains risques, mais ils ne remplacent pas la validation et l'échappement côté serveur.
Réduction immédiate des risques pour les propriétaires de sites
Si vous utilisez WordPress et avez installé Radius Blocks, envisagez les actions immédiates suivantes.
1. Limitez temporairement l'accès des contributeurs
- Restreignez qui a des comptes de contributeur. Désactivez ou supprimez les comptes de contributeur inutilisés.
- Si votre flux de travail le permet, rétrogradez temporairement ou verrouillez les comptes de contributeur jusqu'à ce que le site soit corrigé ou atténué.