CVE-2026-6504 · CVE-2026-8677 · CVE-2026-8613 · CVE-2026-8607 · CVE-2026-11390 · CVE-2026-18988
CVSS 6.4 · Moyenne CorrigéSix XSS stockées dans des extensions WordPress : quand un nom de balise devient un vecteur d’attaque
Analyse de variantes de six extensions WordPress qui affichaient un nom de balise HTML choisi par un Contributeur sans liste blanche, avec à chaque fois une XSS stockée.
Pour décider
- Impact
- Des réglages de balise HTML peuvent stocker du JavaScript exécuté chez les visiteurs ou les administrateurs.
- Conditions
- Un rôle Contributeur et les widgets ou shortcodes concernés sont nécessaires. Les six extensions ont des versions et des correctifs distincts.
- Action recommandée
- Identifier les extensions installées et appliquer, pour chacune, la version corrigée indiquée dans le tableau de l’analyse.
Vulnérabilités couvertes (6)
| Identifiant | Vulnérabilité | Versions affectées | Corrigé dans | CVSS | Avis publié |
|---|---|---|---|---|---|
| CVE-2026-6504 | Royal Addons for Elementor XSS stockée via title_tag dans Royal Addons | ≤ 1.7.1058 | 1.7.1059 | 6.4 | |
| CVE-2026-8677 | Prime Elementor Addons XSS stockée via les réglages de balise HTML des widgets de Prime Elementor Addons | ≤ 1.3.3 | 1.3.4 | 6.4 | |
| CVE-2026-8613 | aThemes Addons for Elementor XSS stockée via title_tag dans aThemes Addons | ≤ 1.1.8 | 1.1.9 | 6.4 | |
| CVE-2026-8607 | myCred XSS stockée via l’attribut de shortcode wrap dans myCred | ≤ 3.1 | 3.1.1 | 6.4 | |
| CVE-2026-11390 | News Kit Addons for Elementor XSS stockée via les balises des widgets Site Logo Title et Single Author Box dans News Kit Addons | ≤ 1.4.6 | 1.4.7 | 6.4 | |
| CVE-2026-18988 | Easy Accordion XSS stockée via accordionTitleTag dans Easy Accordion | ≤ 3.1.8 | 3.1.9 | 6.4 |
- Faiblesse
- CWE-79
- Accès requis
- Compte requis
- Crédit
- rootzero
Sommaire 8 sections
- Six plugins, une même frontière de rendu
- La frontière de privilèges derrière six variantes
- Pourquoi la liste déroulante et kses n’ont pas suffi
- Six extensions
- Royal Addons for Elementor (CVE-2026-6504)
- Prime Elementor Addons (CVE-2026-8677)
- aThemes Addons for Elementor (CVE-2026-8613)
- myCred (CVE-2026-8607)
- News Kit Addons for Elementor (CVE-2026-11390)
- Easy Accordion (CVE-2026-18988)
- Impact
- Correctifs
- Détection et recherche de variantes
- Chronologie
Synthèse de l’enquête
Six extensions WordPress laissaient un utilisateur au rôle Contributeur choisir la balise HTML d’un titre ou d’un conteneur, puis affichaient cette valeur avec esc_attr() ou sans aucun échappement. Une valeur comme img src=x onerror=alert(1) ne contient aucun chevron, traverse kses intacte et devient un élément actif doté d’un gestionnaire d’événement dès que l’extension l’écrit après un signe inférieur. Il en résulte une XSS stockée dans des pages qu’ouvrent éditeurs, administrateurs et visiteurs. Chaque extension dispose d’une version corrigée.
Six plugins, une même frontière de rendu
Nous avons cherché les endroits où une extension WordPress prend une valeur censée être un nom de balise et la place entre < et le reste du HTML. Le contrôle qui saute aux yeux est esc_attr(), mais il protège une valeur d’attribut, pas un nom de balise : espaces et = y survivent. Dans Royal Elementor Addons, deux widgets utilisaient title_tag sans la liste blanche déjà présente ailleurs. Chez myCred, le shortcode de classement conservait un wrap non validé alors que d’autres shortcodes avaient été corrigés. aThemes présentait des widgets oubliés après deux vagues de correctifs. Ces trois rapports et celui de Prime Elementor Addons ont été soumis à Wordfence le 10 mars 2026.
La recherche s’est poursuivie au-delà de cette première vague. Le rapport News Kit, daté d’avril, suit trois réglages de balise dans deux widgets ; il conserve le HTML rendu, des captures du navigateur et une démonstration vidéo. Nous l’avons soumis le 18 avril. Pour Easy Accordion, nous avons construit un bloc dynamique forgé, vérifié sa sauvegarde par un compte Author et observé l’exécution dans un navigateur visiteur sur un laboratoire Docker frais le 1er juin, avant le signalement Wordfence du même jour. Ces essais ne prouvent pas à eux seuls chaque variante avec un rôle Contributor : les avis Wordfence donnent cette portée, tandis que le rejeu Easy Accordion conservé ici est Author. Nous avons réuni les six avis publics pour montrer le motif commun, sans confondre leurs dates de découverte avec leurs publications échelonnées de mai à août.
La frontière de privilèges derrière six variantes
Un Contributeur peut modifier un brouillon, mais ni le publier ni utiliser unfiltered_html. WordPress filtre le contenu avec kses et Elementor applique son propre passage kses aux réglages enregistrés. Un Éditeur ou un Administrateur peut pourtant ouvrir l’aperçu du brouillon : si une extension transforme un réglage en balisage exécutable au rendu, ces filtres à l’enregistrement ne voient jamais ce balisage.
Les constructeurs de pages et les extensions de blocs donnent aux Contributeurs bien plus que du texte. Un widget Elementor expose des dizaines de réglages : mise en page, couleurs, typographie et, très souvent, la balise HTML d’un titre ou d’un conteneur, proposée sous forme de liste déroulante de h1 à h6, div, span et p. Elementor stocke ces réglages en JSON dans la métadonnée _elementor_data et, pour les utilisateurs sans unfiltered_html, applique Utils::kses_post_deep() à tout le document avant de l’enregistrer. Les blocs Gutenberg gardent leurs attributs en JSON dans le contenu de l’article, que WordPress fait aussi passer par kses depuis la version 5.3.1. Les attributs de shortcode sont du texte brut dans le corps de l’article.
Pourquoi la liste déroulante et kses n’ont pas suffi
Trois faits se combinent, et chacun est raisonnable pris isolément.
Le premier : une liste déroulante est une restriction d’interface. Le contrôle SELECT d’Elementor ne fait qu’afficher une liste ; la valeur enregistrée est celle que porte la requête de sauvegarde. L’éditeur envoie les réglages des widgets à admin-ajax.php dans une requête elementor_ajax, et rien côté serveur ne compare une valeur enregistrée aux options du contrôle. Les attributs de blocs se comportent de même sauf si le bloc déclare un enum, et les attributs de shortcode sont saisis à la main.
Le deuxième : kses ne voit pas un nom de balise. wp_kses_post() retire le balisage non autorisé, c’est-à-dire ce qui se trouve entre < et >. Une valeur comme img src=x onerror=alert(document.domain) ne contient ni l’un ni l’autre, et sort de kses inchangée. Le balisage n’apparaît que plus tard, quand l’extension elle-même écrit un < suivi de la valeur.
Le troisième : esc_attr() n’est pas la bonne fonction d’échappement à cette position. Elle encode &, <, >, " et ', ce dont a besoin une valeur placée dans un attribut entre guillemets. À la position du nom de balise, les caractères dangereux sont l’espace, = et /, et esc_attr() les laisse passer. WordPress a une fonction pour cette position précise, tag_escape(), qui met son entrée en minuscules et retire tout caractère hors de a-z, 0-9, -, _ et :.
Mis bout à bout, une ligne de cette forme :
echo '<' . esc_attr( $settings['title_tag'] ) . ' class="item-title">';
avec la valeur enregistrée img src=x onerror=alert(document.domain) produit :
<img src=x onerror=alert(document.domain) class="item-title">
Le navigateur construit un élément img dont le src échoue à se charger, et exécute le gestionnaire onerror. Le payload s’exécute sur chaque page qui contient le widget, y compris l’aperçu qu’ouvre un Éditeur pour relire le brouillon.
Six extensions
Royal Addons for Elementor (CVE-2026-6504)
Royal Addons propose un widget Posts Timeline et un widget Video Playlist, tous deux dotés d’un réglage title_tag déclaré comme SELECT avec les titres, div, span et p. En 1.7.1058, les deux affichent la valeur enregistrée via esc_attr() :
// modules/posts-timeline/widgets/wpr-posts-timeline.php (1.7.1058)
echo '<div class="wpr-title-wrap"><a href="'. esc_url(get_the_permalink()) .'"><'. esc_attr($settings['title_tag']) .' class="wpr-title">'. esc_html__(get_the_title()) .'</'. esc_attr($settings['title_tag']) .'></a></div>';
// modules/video-playlist/widgets/wpr-video-playlist.php (1.7.1058)
$title_tag = !empty($settings['title_tag']) ? $settings['title_tag'] : 'h6';
// ...
echo '<' . esc_attr($title_tag) . ' class="wpr-vplaylist-current-title"></' . esc_attr($title_tag) . '>';
L’extension disposait déjà du bon outil. Utilities::validate_html_tags_wl() compare une valeur à une liste et revient à une valeur par défaut, et beaucoup d’autres widgets de Royal, comme Post Title et Product Title, l’utilisaient. La version 1.7.1059 l’applique aux deux widgets manquants :
// modules/posts-timeline/widgets/wpr-posts-timeline.php (1.7.1059)
$tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p'];
$title_tag = Utilities::validate_html_tags_wl( $settings['title_tag'], 'span', $tags_whitelist );
Prime Elementor Addons (CVE-2026-8677)
Prime Elementor Addons, publiée sous le slug unlimited-elementor-inner-sections-by-boomdevs, utilisait la même construction dans ses widgets : Advanced Heading, Info Box, Advanced Accordion, Advanced Tabs, Counter, Feature List, Post Title, Archive Title et d’autres. Un exemple typique :
// includes/Widgets/AdvancedHeading.php (1.3.3)
<<?php echo esc_attr($settings['heading_tag']) ?> <?php echo $this->get_render_attribute_string('heading'); ?>>
Le contrôle heading_tag est un SELECT limité à h1…h6 ; l’avis précise que le payload franchit le filtrage wp_kses_post() d’Elementor pour les utilisateurs sans unfiltered_html, ce qui est le deuxième fait du motif. La version 1.3.4, publiée le 01/06/2026, remplace esc_attr() par tag_escape() sur 45 lignes réparties dans 20 fichiers de widgets :
// includes/Widgets/AdvancedHeading.php (1.3.4)
<<?php echo tag_escape($settings['heading_tag']) ?> <?php echo $this->get_render_attribute_string('heading'); ?>>
Cela supprime l’injection d’attributs. Aucune liste blanche n’est ajoutée ; la section consacrée aux correctifs explique pourquoi c’est important. WordPress.org a fermé l’extension le 09/06/2026 pour violation des règles du répertoire : les installations existantes ne reçoivent plus de mises à jour par ce canal.
aThemes Addons for Elementor (CVE-2026-8613)
aThemes Addons montre à quoi ressemble un correctif incomplet. La version 1.1.6 est sortie avec la ligne de changelog « Improved tag validation » et a introduit une fonction avec liste blanche :
// inc/functions.php (1.1.6 et suivantes)
function athemes_addons_validate_html_tag( $tag ) {
if ( empty( $tag ) ) {
return 'h2';
}
$allowed_tags = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p' );
return in_array( $tag, $allowed_tags, true ) ? $tag : 'h2';
}
La fonction a été ajoutée dans une quinzaine de widgets, dont Posts List et ses skins :
// inc/modules/widgets/posts-list/class-posts-list.php (1.1.8)
$settings['title_tag'] = athemes_addons_validate_html_tag( $settings['title_tag'] );
the_title( '<' . tag_escape( $settings['title_tag'] ) . ' class="item-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></' . tag_escape( $settings['title_tag'] ) . '>' );
Posts Timeline et Posts Carousel, avec ses skins Default, Banner et Modern, affichent les titres avec une ligne presque identique et ont été oubliés :
// inc/modules/widgets/posts-timeline/class-posts-timeline.php (1.1.8)
the_title( '<' . esc_attr( $settings['title_tag'] ) . ' class="item-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></' . esc_attr( $settings['title_tag'] ) . '>' );
La version 1.1.9 recopie les lignes de Posts List dans ces quatre fichiers. Le code vulnérable et le code corrigé ont cohabité dans la même extension de la 1.1.6 à la 1.1.8, exactement la situation pour laquelle existe l’analyse de variantes.
myCred (CVE-2026-8607)
myCred est une extension de points et de récompenses, sans constructeur de pages, et pourtant le même bug. Son shortcode mycred_leaderboard accepte un attribut wrap, li par défaut, qui nomme l’élément placé autour de chaque ligne. Le rendu l’affiche sans aucun échappement :
// includes/classes/class.query-leaderboard.php (3.1)
extract( shortcode_atts( array(
'wrap' => 'li',
'template' => '#%position% %user_profile_link% %cred_f%',
'nothing' => 'Leaderboard is empty',
), $args ) );
// ...
if ( ! empty( $wrap ) )
$layout = '<' . $wrap . ' class="%classes%">' . $layout . '</' . $wrap . '>';
Un Contributeur écrit [mycred_leaderboard wrap="img src=x onerror=alert(document.domain)"] dans un brouillon. kses ne touche pas au texte du shortcode, et le payload s’affiche dès que le classement compte au moins une ligne. La version 3.1.1 ajoute une liste blanche, que les propriétaires de sites peuvent filtrer, et supprime le conteneur quand la valeur n’y figure pas :
// includes/mycred-functions.php (3.1.1)
function mycred_sanitize_leaderboard_wrap_tag( $tag ) {
$sanitized_tag = '';
if ( empty( $tag ) ) {
return $sanitized_tag;
}
$allowed_tags = apply_filters(
'mycred_leaderboard_allowed_wrap_tags',
array( 'div', 'span', 'ul', 'li', 'ol', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' )
);
if ( in_array( strtolower( $tag ), $allowed_tags ) ) {
$sanitized_tag = strtolower( $tag );
}
return $sanitized_tag;
}
News Kit Addons for Elementor (CVE-2026-11390)
News Kit Addons a deux widgets concernés. Site Logo Title choisit entre les réglages site_title_tag et site_title_innerpages_tag selon la page, et Single Author Box utilise un réglage html_tags pour le nom de l’auteur. Les trois sont des contrôles SELECT, et les trois finissent dans esc_attr() :
// includes/widgets/site-logo-title/site-logo-title.php (1.4.6)
$site_title = (is_front_page()) ? $settings["site_title_tag"] : $settings["site_title_innerpages_tag"];
echo '<' .esc_attr( $site_title ). ' class="site-title">';
// includes/widgets/single/single-author-box.php (1.4.6)
echo '<'. esc_attr($settings['html_tags']) . ' class="author-display-name">' . esc_html( $display_name ) . '</' . esc_attr($settings['html_tags']) . '>';
L’avis explicite le premier fait du motif : l’attaquant intercepte la requête de sauvegarde elementor_ajax et remplace la valeur produite par la liste déroulante. La version 1.4.7, publiée le 25/06/2026, utilise la fonction d’Elementor lui-même, \Elementor\Utils::validate_html_tag(), qui compare la valeur à la liste des balises de conteneur autorisées par Elementor et revient à div sinon :
// includes/widgets/site-logo-title/site-logo-title.php (1.4.7)
echo '<' . \Elementor\Utils::validate_html_tag( $site_title ). ' class="site-title">';
WordPress.org a fermé temporairement l’extension le 13/10/2026, dans l’attente d’un examen complet ; l’avis de fermeture ne donne pas de raison.
Easy Accordion (CVE-2026-18988)
Easy Accordion déplace le motif d’Elementor vers Gutenberg. Ses blocs d’accordéon stockent un attribut accordionTitleTag, déclaré comme simple chaîne avec h3 par défaut, et accordion_header_renderer() l’affiche via esc_attr() :
// Blocks/Includes/Render_Blocks_Template.php (3.1.8)
$accordion_title_tag = $attributes['accordionTitleTag'] ?? 'h3';
// ...
<<?php echo esc_attr( $accordion_title_tag ); ?> class='<?php echo esc_attr( "sp-eab-accordion-heading sp-d-flex sp-align-center eab-heading-$parent_id" ); ?>'
L’appelant porte un commentaire qui résume le malentendu : « Safe to output: all necessary sanitization/escaping is handled inside accordion_header_renderer() ». Un Contributeur modifie le JSON du bloc dans l’éditeur de code, ou l’envoie par l’API REST, avec un nom de balise comme celui vu plus haut. Les valeurs d’attributs de blocs passent bien par kses, et celle-ci n’a aucun balisage à retirer.
La version 3.1.9, publiée le 07/08/2026, apporte le correctif le plus complet des six. Elle ajoute une fonction de liste blanche, déclare l’attribut avec un enum pour que WordPress écarte toute autre valeur avant l’appel du rendu, et conserve tag_escape() à l’affichage :
// Blocks/Includes/Utils/EAB_Utils.php (3.1.9)
const ALLOWED_TITLE_TAGS = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span' );
public static function title_tag( $tag, $fallback = 'h3' ) {
if ( ! is_string( $tag ) ) {
return $fallback;
}
$tag = strtolower( trim( $tag ) );
return in_array( $tag, self::ALLOWED_TITLE_TAGS, true ) ? $tag : $fallback;
}
public static function title_tag_attr( $value = 'h3' ) {
return array(
'type' => 'string',
'default' => $value,
'enum' => self::ALLOWED_TITLE_TAGS,
);
}
La même version valide aussi la balise de titre de l’accordéon classique par shortcode, qui acceptait n’importe quelle valeur après un préfixe h.
Impact
Les six avis partagent la même note, 6,4 avec AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N. PR:L correspond au rôle Contributeur, et le changement de portée traduit le fait que le script s’exécute dans la session d’autres utilisateurs.
L’enjeu dépend de la personne qui ouvre la page. Les visiteurs d’un article publié subissent un script exécuté sur l’origine du site, ce qui permet défiguration, redirection et vol de tout ce que leur session expose. La victime la plus intéressante est l’Éditeur ou l’Administrateur qui prévisualise un brouillon en attente : un script exécuté dans le navigateur d’un Administrateur peut charger des pages de wp-admin, lire les nonces qu’elles contiennent et soumettre des formulaires en son nom, par exemple pour créer un nouveau compte au rôle Administrateur. Sur un site qui accueille des auteurs invités ou une rédaction avec de nombreux comptes Contributeur, un compte d’écriture devient ainsi un chemin vers la prise de contrôle du site. Sur un site sans aucun compte Contributeur, ces failles n’ont pas d’attaquant réaliste.
Correctifs
Les six correctifs reposent sur trois mécanismes : tag_escape(), une liste blanche, et un enum sur les attributs de blocs. Ils ne se valent pas. Pour rappel, esc_attr() et esc_html() sont toujours inadaptés à cette position, pour les raisons données dans la section sur le motif.
tag_escape() supprime l’injection d’attributs, puisque l’espace et = disparaissent. Elle conserve tout nom composé de lettres, de chiffres, de -, _ et :, ce qui inclut script, style, iframe et textarea. Elle contrôle l’écriture du nom et laisse ouverte la question de l’élément émis par l’extension.
Une liste blanche décide de l’élément émis. C’est le seul contrôle qui ferme la classe, et il tient en quelques lignes :
function myplugin_html_tag( $tag, $fallback = 'div' ) {
$allowed = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p' );
$tag = is_string( $tag ) ? strtolower( trim( $tag ) ) : '';
return in_array( $tag, $allowed, true ) ? $tag : $fallback;
}
Les widgets Elementor peuvent appeler \Elementor\Utils::validate_html_tag(), qui fait la même chose avec la liste d’Elementor. Les blocs devraient en plus déclarer un enum sur l’attribut, comme le fait Easy Accordion 3.1.9, pour que les valeurs invalides n’atteignent jamais le rendu. La validation a sa place au moment du rendu, là où tous les chemins convergent (sauvegardes de l’éditeur, requêtes REST, imports, articles dupliqués), avec tag_escape() conservée à l’affichage comme seconde couche.
Deux des six extensions, Royal Addons et aThemes Addons, disposaient déjà d’une telle fonction et l’utilisaient dans de nombreux widgets. Un correctif pour cette classe doit donc s’accompagner d’une recherche du point d’injection dans toute l’extension, ce que décrit la section suivante.
Détection et recherche de variantes
Pour les propriétaires de sites :
- Mettre à jour Royal Addons vers la 1.7.1059, aThemes Addons vers la 1.1.9, myCred vers la 3.1.1, News Kit Addons vers la 1.4.7 et Easy Accordion vers la 3.1.9, ou au-delà. Prime Elementor Addons et News Kit Addons sont fermées sur WordPress.org au moment de la rédaction : prévoir leur remplacement si aucune source maintenue ne subsiste.
- Passer en revue les comptes qui détiennent les rôles Contributeur et Auteur, et supprimer ceux qui ne sont plus nécessaires.
- Rechercher dans la base de données les payloads stockés. Les valeurs de balise légitimes ne contiennent ni espace ni signe
=:
-- Réglages de widgets Elementor dont la valeur de balise contient un espace ou '='
SELECT post_id FROM wp_postmeta
WHERE meta_key = '_elementor_data'
AND meta_value REGEXP '"[a-z_]*tags?":"[^"]*[ =]';
-- Blocs Easy Accordion et shortcodes de classement myCred
SELECT ID, post_status FROM wp_posts
WHERE post_content REGEXP '"accordionTitleTag":"[^"]*[ =]'
OR post_content LIKE '%mycred_leaderboard%wrap=%';
- Au niveau du pare-feu applicatif, inspecter les requêtes
POST /wp-admin/admin-ajax.phpavecaction=elementor_ajax, et signaler les réglages dont le nom se termine partagoutagset dont la valeur contient un espace,=ou un guillemet.
Pour les développeurs d’extensions et les chercheurs, le point d’injection a une forme reconnaissable : un < ou un </ suivi d’une valeur concaténée. Un premier passage avec grep :
# Noms de balise écrits après '<' ou '</' via une fonction d'échappement d'attribut ou en variable brute
grep -rnE "</?'\s*\.\s*(esc_(attr|html)\s*\(|\\\$[a-z_]*(tag|wrap))|</?<\?php\s+echo\s+esc_(attr|html)\s*\(" \
--include=*.php wp-content/plugins/
Chaque résultat se trie ensuite à la main : remonter la valeur jusqu’à un réglage de widget, un attribut de bloc ou un attribut de shortcode, vérifier qu’une liste blanche (in_array() sur des noms fixes, validate_html_tag(), un enum) se trouve sur le chemin, et garder en tête qu’un contrôle SELECT ou une liste déroulante dans l’inspecteur d’un bloc ne compte pour rien. Sur les six extensions traitées ici, ce motif trouve chacune des lignes vulnérables citées plus haut, avec beaucoup de lignes correctement validées ; la revue de chaque résultat constitue le travail réel.
Chronologie
| Date | Événement |
|---|---|
| 10/03/2026 | Signalements Wordfence de Royal, Prime, aThemes et myCred dans cette série |
| 18/04/2026 | Signalement News Kit après la revue de deux widgets et une preuve navigateur |
| 13/05/2026 | Publication de l’avis pour Royal Addons ≤ 1.7.1058 (CVE-2026-6504) |
| 01/06/2026 | Rejeu Easy Accordion sur un laboratoire Docker frais et signalement Wordfence |
| 01/06/2026 | Publication de Prime Elementor Addons 1.3.4 |
| 08/06/2026 | Publication de l’avis pour Prime Elementor Addons ≤ 1.3.3 (CVE-2026-8677) |
| 09/06/2026 | Publication de l’avis pour aThemes Addons ≤ 1.1.8 (CVE-2026-8613) |
| 09/06/2026 | Fermeture de Prime Elementor Addons sur WordPress.org |
| 16/06/2026 | Publication de l’avis pour myCred ≤ 3.1 (CVE-2026-8607) |
| 25/06/2026 | Publication de News Kit Addons 1.4.7 |
| 13/07/2026 | Publication de l’avis pour News Kit Addons ≤ 1.4.6 (CVE-2026-11390) |
| 07/08/2026 | Publication d’Easy Accordion 3.1.9 et de l’avis pour Easy Accordion ≤ 3.1.8 (CVE-2026-18988) |
| 13/10/2026 | Fermeture temporaire de News Kit Addons sur WordPress.org dans l’attente d’un examen |
Références
- Avis de l’éditeur · CVE-2026-6504 wordsec.net/vulnerabilities/plugins/royal-elementor-addons/royal-addons-for-elementor-171058-authenticated-contributor-stored-cross-site-scripting-via-title_tag-parameter
- Fiche NVD · CVE-2026-6504 nvd.nist.gov/vuln/detail/CVE-2026-6504
- Fiche CVE.org · CVE-2026-6504 www.cve.org/CVERecord?id=CVE-2026-6504
- Avis de l’éditeur · CVE-2026-8677 wordsec.net/vulnerabilities/plugins/unlimited-elementor-inner-sections-by-boomdevs/prime-elementor-addons-133-authenticated-contributor-stored-cross-site-scripting-via-widget-html-tag-settings
- Fiche NVD · CVE-2026-8677 nvd.nist.gov/vuln/detail/CVE-2026-8677
- Fiche CVE.org · CVE-2026-8677 www.cve.org/CVERecord?id=CVE-2026-8677
- Avis de l’éditeur · CVE-2026-8613 wordsec.net/vulnerabilities/plugins/athemes-addons-for-elementor-lite/athemes-addons-for-elementor-118-authenticated-contributor-stored-cross-site-scripting-via-title_tag-widget-setting
- Fiche NVD · CVE-2026-8613 nvd.nist.gov/vuln/detail/CVE-2026-8613
- Fiche CVE.org · CVE-2026-8613 www.cve.org/CVERecord?id=CVE-2026-8613
- Avis de l’éditeur · CVE-2026-8607 wordsec.net/vulnerabilities/plugins/mycred/mycred-points-management-system-for-gamification-ranks-badges-and-loyalty-rewards-program-31-authenticated-contributor-stored-cross-site-scripting-via-wrap-shortcode-attribute
- Fiche NVD · CVE-2026-8607 nvd.nist.gov/vuln/detail/CVE-2026-8607
- Fiche CVE.org · CVE-2026-8607 www.cve.org/CVERecord?id=CVE-2026-8607
- Avis de l’éditeur · CVE-2026-11390 wordsec.net/vulnerabilities/plugins/news-kit-elementor-addons/news-kit-addons-for-elementor-146-authenticated-contributor-stored-cross-site-scripting-via-site-logo-title-and-single-author-box-widgets
- Fiche NVD · CVE-2026-11390 nvd.nist.gov/vuln/detail/CVE-2026-11390
- Fiche CVE.org · CVE-2026-11390 www.cve.org/CVERecord?id=CVE-2026-11390
- Avis de l’éditeur · CVE-2026-18988 wordsec.net/vulnerabilities/plugins/easy-accordion-free/easy-accordion-318-authenticated-contributor-stored-cross-site-scripting-via-accordiontitletag-block-attribute
- Fiche NVD · CVE-2026-18988 nvd.nist.gov/vuln/detail/CVE-2026-18988
- Fiche CVE.org · CVE-2026-18988 www.cve.org/CVERecord?id=CVE-2026-18988
- MITRE CWE-79 cwe.mitre.org/data/definitions/79.html
Citer cet avis
rootzero. « Six XSS stockées dans des extensions WordPress : quand un nom de balise devient un vecteur d’attaque ». Recherche de vulnérabilités, rootzero, 7 août 2026. https://rootzero.eu/research/cve/wordpress-elementor-addons-stored-xss-tag-names/
#Recherche de vulnérabilités
Faites auditer votre code avant qu’un autre ne le fasse.
Votre équipe doit décider quoi corriger avant une livraison ou évaluer une dépendance critique. Nous définissons une mission autour de cette décision, avec des preuves et des priorités de correction expliquées.