La méta utilisateur WordPress CSRF expose XSS stocké (CVE20257688)

Plugin Ajouter Méta Utilisateur WordPress
Nom du plugin Ajouter Méta Utilisateur
Type de vulnérabilité CSRF et XSS Stocké
Numéro CVE CVE-2025-7688
Urgence Moyen
Date de publication CVE 2025-08-15
URL source CVE-2025-7688

Avis de sécurité urgent : Plugin Ajouter Méta Utilisateur (<= 1.0.1) — CSRF → XSS Stocké (CVE-2025-7688)

Date : 15 août 2025
Auteur : Expert en sécurité de Hong Kong


Résumé

  • Vulnérabilité : Contrefaçon de requête intersite (CSRF) permettant le script intersite stocké (XSS)
  • Logiciel affecté : plugin Add User Meta WordPress, versions ≤ 1.0.1
  • CVE : CVE-2025-7688
  • Privilège requis : Non authentifié (l'attaquant peut exploiter depuis le web)
  • Correction publique : Aucune disponible au moment de la divulgation
  • Recommandation : Atténuer immédiatement — supprimer ou désactiver le plugin, appliquer un patch virtuel via votre WAF ou pare-feu de serveur, et suivre la liste de contrôle de réponse à l'incident ci-dessous.

Cet avis décrit les détails techniques, les scénarios d'exploitation, les processus de détection et de confinement, les corrections au niveau du code pour les auteurs de plugins, les règles de patch virtuel que vous pouvez déployer immédiatement, et des conseils de durcissement à long terme.


Que s'est-il passé (court)

Le plugin Ajouter Méta Utilisateur expose un point de terminaison ou une action qui permet d'ajouter ou de mettre à jour les métadonnées utilisateur sans protections CSRF appropriées et sans valider ou assainir les entrées. Il n'y a pas de vérification nonce/CSRF efficace et les données fournies par l'utilisateur sont stockées et sorties sans échappement sécurisé. Un attaquant peut créer des requêtes (ou tromper un utilisateur authentifié pour en soumettre une) qui persistent des charges utiles basées sur des scripts dans les champs méta utilisateur. Ces charges utiles se rendent ensuite dans les pages ou les vues administratives où les valeurs méta sont affichées, entraînant un XSS stocké.

Parce que le problème peut être exploité par des attaquants non authentifiés, le risque est élevé : les charges utiles persistantes peuvent affecter les administrateurs et les visiteurs du site.


Pourquoi c'est sérieux

Le XSS stocké est l'une des vulnérabilités côté client les plus dangereuses sur des plateformes comme WordPress :

  • Exécution persistante : JavaScript malveillant est stocké sur le serveur et s'exécute chaque fois que la page vulnérable est consultée.
  • Compromission d'administrateur : si un administrateur consulte une page ou un profil où des métadonnées non sécurisées sont rendues, les attaquants peuvent détourner des sessions ou effectuer des actions privilégiées.
  • Dommages à la réputation et au SEO : le contenu injecté peut délivrer du spam, des publicités ou du phishing, nuisant à la confiance et à la visibilité dans les recherches.
  • Exploitation automatisée : la divulgation publique déclenche généralement des analyses automatisées et une exploitation de masse ; agissez immédiatement.

Ce problème a une évaluation CVSS estimée autour de 7.1 (moyenne/élevée). Étant donné la capacité d'écriture persistante non authentifiée, considérez-le comme actionnable.


Analyse technique

Causes profondes généralement observées dans cette classe de vulnérabilités :

  1. Protection CSRF manquante (pas de nonce / pas de check_admin_referer / wp_verify_nonce).
  2. Autorisation de requêtes non authentifiées ou insuffisamment autorisées à écrire des métadonnées utilisateur.
  3. Manque de validation des entrées (acceptation de charges utiles HTML ou script arbitraires).
  4. Sortie non sécurisée (affichage des valeurs de métadonnées sans esc_html(), esc_attr(), ou wp_kses()).

Flux vulnérable typique :

  • Le plugin enregistre un point de terminaison (AJAX, REST ou gestionnaire de formulaire) qui accepte user_id, meta_key, meta_value.
  • Le point de terminaison écrit directement dans wp_usermeta en utilisant add_user_meta() / update_user_meta() sans vérifier l'origine ou assainir meta_value.
  • Plus tard, le plugin ou un autre code affiche cette valeur méta en HTML sans échapper, permettant