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.

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.

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 Highcharts | Versions concernées | Première version corrigée |
|---|---|---|
| 11.x et antérieures | De 10.3.2 à 11.4.8 | 11.4.9 |
| 12.x | De 12.0.0 à 12.6.1 | 12.6.2 |
| 13.x | De 13.0.0 à 13.1.0 | 13.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 :
- 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.versionoffre une autre vérification rapide. Incluez les fichiers CDN absents de votre fichier de dépendances. - 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.
- 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.
- 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.








