Urgent : XSS stocké dans le plugin Liste de Contacts (<= 3.0.18) — Ce que les propriétaires de sites doivent faire maintenant
| Nom du plugin | Plugin Liste de Contacts WordPress |
|---|---|
| Type de vulnérabilité | Script intersite (XSS) |
| Numéro CVE | CVE-2026-3516 |
| Urgence | Faible |
| Date de publication CVE | 2026-03-22 |
| URL source | CVE-2026-3516 |
Summary: A stored Cross‑Site Scripting (XSS) vulnerability affecting the “Contact List” WordPress plugin (versions <= 3.0.18) allows an authenticated user with Contributor privileges to submit HTML/iframe input that may be rendered unsafely, leading to stored XSS (CVE-2026-3516). A patch was released in version 3.0.19 on 20 Mar 2026. This advisory explains impact, detection, remediation, short-term virtual patching using a WAF, and long-term hardening.
Table des matières
- Faits rapides
- Comment la vulnérabilité fonctionne (aperçu, chaîne d'exploitation)
- Impact dans le monde réel et scénarios d'attaque
- Comment détecter si votre site est affecté (recherches, WP-CLI, requêtes DB, journaux)
- Étapes de remédiation immédiates (mise à jour, correctif, suppression des entrées malveillantes)
- Atténuation à court terme avec un pare-feu d'application Web (patching virtuel)
- Changements de codage sécurisé et de configuration recommandés pour les auteurs de plugins et les propriétaires de sites
- Liste de contrôle pour le nettoyage et la réponse aux incidents
- Liste de contrôle de prévention et de durcissement à long terme
- FAQ
- Comment obtenir de l'aide professionnelle (conseils neutres)
Faits rapides
- Affected software: Contact List WordPress plugin — versions <= 3.0.18
- Type de vulnérabilité : Cross‑Site Scripting (XSS) stocké
- Vecteur : Sortie non assainie/non sécurisée du
_cl_map_iframeparamètre (iframe/html fourni par l'utilisateur) - Privilège requis : Contributeur (authentifié)
- Interaction utilisateur requise : Oui (l'attaquant stocke la charge utile ; l'exécution nécessite un utilisateur privilégié ou une action/vue particulière)
- CVE : CVE-2026-3516
- CVSS (tel que rapporté) : 6.5 (moyen)
- Patché dans : Liste de contacts v3.0.19 (publié le 20 mars 2026)
Comment la vulnérabilité fonctionne (niveau élevé)
Le XSS stocké se produit lorsque des entrées fournies par un attaquant sont conservées par l'application et ensuite affichées sans échappement ou assainissement appropriés. Le plugin Liste de contacts acceptait un paramètre nommé _cl_map_iframe qui pouvait contenir du HTML (par exemple, un iframe), l'a stocké et a ensuite affiché cette valeur dans une vue sans filtrage suffisant.
Pourquoi cela importe :
- Les contributeurs sont des utilisateurs authentifiés. Bien qu'ils ne puissent généralement pas publier directement, ils peuvent soumettre du contenu qui peut être consulté par des éditeurs ou des administrateurs. Si ce contenu inclut un script stocké, il s'exécute dans le contexte de quiconque consulte le contenu rendu.
- A stored XSS payload can run in the browser of an admin/editor or site visitor, enabling session theft, account takeover, or unauthorized actions performed with the victim’s privileges.
Chaîne d'exploitation
- L'attaquant s'authentifie en tant que contributeur.
- L'attaquant soumet un contact ou un paramètre incluant une charge utile conçue
_cl_map_iframecharge utile. - Le plugin stocke la charge utile sans assainissement/échappement adéquat.
- Lorsque qu'un utilisateur privilégié (ou toute page qui rend la valeur stockée) charge le contenu, le script malveillant s'exécute.
Remarque : Le rapport indique que l'exploitation nécessite une interaction de l'utilisateur - un utilisateur privilégié doit consulter ou interagir avec la page contenant la charge utile stockée.
Impact dans le monde réel et scénarios d'attaque
Le XSS stocké est un problème persistant : une seule soumission malveillante peut affecter de nombreux utilisateurs au fil du temps. Les impacts typiques incluent :
- Vol de session administrateur - des cookies ou des jetons exfiltrés peuvent conduire à une prise de contrôle de compte.
- Actions basées sur le navigateur - le JavaScript injecté peut modifier des paramètres, créer des utilisateurs, télécharger des fichiers ou implanter des portes dérobées.
- Phishing et ingénierie sociale - le contenu malveillant peut tromper les utilisateurs privilégiés pour qu'ils révèlent des identifiants ou approuvent des actions nuisibles.
- Défiguration et injection de publicités — le contenu persistant peut altérer le site pour les visiteurs.
- Impact de la chaîne d'approvisionnement — des agences ou des sites de publication compromis peuvent être utilisés pour livrer des logiciels malveillants à des clients en aval.
Comment vérifier si votre site est affecté (détection)
Assume any site running Contact List <= 3.0.18 is potentially affected until verified. Key checks:
- Confirmer la version du plugin.
- Rechercher dans la base de données des valeurs suspectes
_cl_map_iframeet d'autres HTML stockés. - Rechercher une activité admin inhabituelle, de nouveaux utilisateurs ou des fichiers modifiés.
- Scanner avec un scanner d'intégrité/malware.
1) Confirmer la version du plugin dans l'Admin WordPress ou le système de fichiers
- Admin WordPress : Plugins → Plugins installés → Contact List → noter la version.
- Système de fichiers : Vérifier l'
readme.txtou l'en-tête du plugin dans/wp-content/plugins/contact-list/contact-list.phppour la chaîne de version.
2) Rechercher dans la base de données pour le _cl_map_iframe paramètre
Le plugin peut stocker des valeurs dans postmeta, options, ou une table de plugin. Sauvegardez votre DB avant les modifications.
Exemples WP-CLI :
# Rechercher postmeta"
Targeted MySQL query example:
SELECT option_name AS location, option_value AS value
FROM wp_options
WHERE option_value LIKE '%
Search indicators: