Skip to main content
Blog
Blog Attacks

XSS dans l'export SVG de Highcharts : ce que GHSA-mw4f-gj5x-6xr4 signifie pour votre site

GHSA-mw4f-gj5x-6xr4 touche les SVG exportés par Highcharts. Découvrez les versions concernées, les conditions d'exploitation et les vérifications à faire.

Oct 28, 2026 • 6 min read
XSS dans l'export SVG de Highcharts : ce que GHSA-mw4f-gj5x-6xr4 signifie pour votre site
Table des matières

XSS dans l'export SVG de Highcharts : ce que GHSA-mw4f-gj5x-6xr4 signifie pour votre site

Highcharts a divulgué une faille de type cross-site scripting (XSS) dans le navigateur, liée au filtrage du texte des graphiques. Elle porte les identifiants GHSA-mw4f-gj5x-6xr4 et CVE-2026-116796. La faille peut transformer un lien contenu dans un SVG exporté ou analysé à nouveau en voie d'exécution JavaScript. Une page qui charge une version concernée n'est pas automatiquement exploitable. L'attaquant doit contrôler le texte du graphique, un export ou une sérialisation doit avoir lieu, et un utilisateur doit activer le lien obtenu. Highcharts classe la faille au niveau de gravité élevé.

Les dates comptent. Highcharts a publié son avis le 2026-09-29. Le journal des modifications de Highcharts indique que la version 13.1.1, qui contient un correctif de sécurité, est sortie le 2026-09-20. Selon la base des avis de GitHub, GitHub et la NVD ont publié leurs fiches le 2026-10-28. Il s'agit d'un problème divulgué récemment, mais le 28 octobre n'est pas la date de divulgation initiale.

Comment fonctionne un SVG

SVG (Scalable Vector Graphics) est un format d'image fondé sur XML. Son code décrit des formes et du texte au moyen d'éléments comme <rect>, <path> et <text>, au lieu de stocker une grille fixe de pixels. Le navigateur analyse ces éléments et dessine le résultat. viewBox définit les coordonnées internes du dessin, que le navigateur peut adapter à l'espace disponible. Dans l'illustration, chaque <rect> fixe la position et la taille d'une barre. Consultez l'introduction à SVG de MDN et la spécification des coordonnées SVG 2.

Le code SVG contenant trois éléments rect devient un graphique à trois barres après analyse et mise à l'échelle par le navigateur

Un SVG peut aussi contenir des liens. href est l'attribut actuel pour les liens ; xlink:href est une ancienne forme dont le préfixe xlink nécessite une déclaration d'espace de noms XML. La façon de charger le SVG compte : dans un élément HTML <img>, les liens sont inactifs et les scripts ne s'exécutent pas ; analysé comme document ou inséré dans la page, le SVG peut contenir des liens actifs. Cette différence est au cœur de la faille. Consultez la spécification des liens SVG 2 et le guide MDN sur les liens SVG.

Comment fonctionne la faille de l'export SVG

Highcharts filtre le balisage fourni aux options de texte, comme le titre d'un graphique. Dans les versions concernées, son filtre vérifie le schéma d'URL des attributs tels que href et src, mais n'applique pas le même contrôle à xlink:href. Nous avons examiné le fichier principal distribué de Highcharts 12.1.0 et constaté cette omission dans filterUserAttributes. Un lien SVG avec une URL javascript: peut donc passer le filtre. Le correctif officiel ajoute xlink:href aux attributs soumis à la validation du schéma d'URL.

L'affichage normal du graphique ne constitue pas à lui seul le chemin d'attaque complet. Selon Highcharts, l'attribut ne crée pas de lien actif sur la page initiale parce qu'il n'y possède pas l'espace de noms XLink. Lorsque le graphique est exporté en SVG, ou que son balisage est sérialisé puis analysé à nouveau, le lien peut devenir actif. Si un utilisateur clique dessus, le script s'exécute dans l'origine du document qui a analysé le résultat. Le problème existe que useHTML soit activé ou non. Lisez l'analyse d'impact de Highcharts.

Schéma montrant comment un lien SVG non fiable passe le filtre de Highcharts, reste inactif dans le graphique initial et peut s'activer après export et nouvelle analyse

Une version concernée doit être mise à jour. Les étapes suivantes permettent de déterminer si votre application présente aussi le flux de données et le traitement du résultat nécessaires à l'exploitation.

[MID_BLOG_CTA]

Quelles versions sont concernées ?

Branche de HighchartsVersions concernéesPremière version corrigée
11.x et antérieuresDe 10.3.2 à 11.4.811.4.9
12.xDe 12.0.0 à 12.6.112.6.2
13.xDe 13.0.0 à 13.1.013.1.1

Ces plages proviennent de l'avis de Highcharts. Si votre application charge Highcharts depuis un CDN, vérifiez l'URL réellement reçue par les utilisateurs. Le fichier des dépendances peut ne pas refléter le script chargé dans leur navigateur.

Comment vérifier si vos graphiques sont exposés

Suivez tout le parcours dans votre application, pas seulement la version du paquet :

  1. Confirmez la version du module principal dans le navigateur. Examinez l'onglet Réseau ou les URL des scripts chargés sur chaque page qui affiche des graphiques. Si Highcharts est accessible globalement, Highcharts.version offre une autre vérification rapide. Incluez les fichiers CDN absents de votre fichier de dépendances.
  2. Remontez à la source du texte externe. Examinez les titres, sous-titres, libellés et autres options de texte. Repérez toute valeur qu'un utilisateur, un partenaire ou une source de données externe peut modifier avant son passage dans Highcharts.
  3. Repérez le parcours de sortie. Vérifiez les téléchargements SVG, les exports personnalisés, les graphiques générés côté serveur et le code qui sérialise le balisage puis l'insère dans une page. Le téléchargement SVG par défaut utilise le module d'export, mais d'autres parcours peuvent aussi analyser le contenu à nouveau.
  4. Vérifiez l'interaction et l'origine du document. L'avis exige qu'une personne active le lien après la nouvelle analyse. Le script s'exécute dans l'origine du document qui analyse le résultat, laquelle peut différer de celle de la page initiale.

Afficher un graphique concerné sur la page initiale ne démontre pas à lui seul le chemin XSS décrit. Testez le parcours complet dans un environnement contrôlé si vous devez établir qu'il est accessible.

Comment corriger la faille

Mettez à jour le paquet principal de Highcharts vers la version corrigée de la branche que vous utilisez. Si vous chargez les modules séparément, alignez-les sur cette version. Après le déploiement, vérifiez la version reçue par les navigateurs, y compris les fichiers CDN conservés en cache.

Pour un test de régression, suivez le test de Highcharts dans le correctif : fournissez un xlink:href dangereux dans une option de texte et vérifiez que le SVG exporté ne conserve pas de lien javascript:. Si une mise à jour immédiate est impossible, l'avis de Highcharts propose un correctif temporaire du filtre à appliquer avant la création des graphiques.

cside peut aider à identifier les scripts réellement chargés par les visiteurs et les endroits où des versions connues comme vulnérables apparaissent sur un site. Les responsables de l'application peuvent ensuite vérifier les entrées des graphiques et les parcours de sortie qui déterminent si la faille est exploitable. Pour en savoir plus sur l'inventaire des scripts en cours d'exécution, consultez notre guide de sécurité des scripts tiers.

Informations à jour au 2026-10-28. Les fiches d'avis et les plages de versions concernées peuvent évoluer. Consultez l'avis de Highcharts avant de prendre une décision définitive sur la correction.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks, web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

La divulgation est récente, mais elle n'a pas eu lieu pour la première fois le 2026-10-28. Highcharts a publié son avis le 2026-09-29. La base mondiale des avis de GitHub et la NVD ont ajouté leurs fiches le 2026-10-28.

Oui, si du texte contrôlé par un attaquant entre dans un graphique, que le SVG ou le balisage est exporté ou sérialisé puis analysé à nouveau, et qu'un utilisateur active le lien obtenu. Le simple chargement d'une version concernée ne prouve pas que ce chemin d'attaque existe.

Non. Selon Highcharts, l'attribut dangereux xlink:href passe le filtre que l'option de texte concernée utilise useHTML ou non.

Highcharts indique que les versions 11.4.9, 12.6.2 et 13.1.1 sont les premières versions corrigées de leurs branches respectives.

Le module d'export fournit le parcours d'export SVG par défaut, mais Highcharts décrit aussi un risque lorsque le balisage du graphique est sérialisé puis analysé à nouveau par un autre processus. Vérifiez les exports personnalisés, les SVG insérés dans les pages et le balisage généré côté serveur.

Surveillez et sécurisez vos scripts tiers

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Commencez gratuitement, ou essayez Business avec un essai de 14 jours.

Interface du tableau de bord cside affichant la surveillance des scripts et les analyses de sécurité
Related Articles
Réserver une démonstration

Envie de passer tout ça en revue avec un ingénieur ?

Trente minutes, sur votre propre site. Pas de slides.

Réservez une démo personnalisée pour voir :

Comment atteindre la conformité PCI DSS 6.4.3 et 11.6.1 en 1 jour
Pourquoi les scripts tiers représentent un risque de sécurité pour vous et vos visiteurs
Comment surveiller les fuites de confidentialité et de consentement (RGPD, CCPA) sur chaque tiers
Comment stopper l'abus d'inscriptions, le partage de comptes et la fraude aux rétrofacturations grâce au device intelligence
Comment détecter et contrôler les agents IA et les bots qui atteignent votre site en temps réel

Vous préférez simplement poser une question ?

Utilisez cette même adresse pour réserver avec Google. Google peut vous demander de la saisir à nouveau.

Nous utilisons votre adresse pour relier votre réservation à votre visite et mesurer comment vous nous trouvez. Ceci ne vous inscrit pas à notre newsletter.

Un problème pour réserver ? Ouvrir le calendrier dans un nouvel onglet

Quel problème cherchez-vous à résoudre ?

Dites-le-nous en une ligne et nous reviendrons vers vous avec quelque chose d'utile, pas un discours générique.

Nous aidons souvent sur :

Voir quels scripts tiers s'exécutent sur votre site
Les preuves pour PCI DSS 6.4.3 et 11.6.1
Les bots, les agents IA et le vol de comptes

Vous préférez réserver un créneau ? Choisir un créneau