XSS bij SVG-export in Highcharts: wat GHSA-mw4f-gj5x-6xr4 betekent voor je site
Highcharts heeft een kwetsbaarheid voor cross-site scripting (XSS) in de browser bekendgemaakt. De oorzaak ligt in het filteren van tekst in grafieken. De kwetsbaarheid staat geregistreerd als GHSA-mw4f-gj5x-6xr4 en CVE-2026-116796. Door de fout kan een link in geëxporteerde of opnieuw geparste SVG leiden tot uitvoering van JavaScript. Een pagina die een getroffen Highcharts-versie laadt, is niet automatisch misbruikbaar. De aanvaller moet invloed hebben op grafiektekst, er moet een export- of serialisatiestap plaatsvinden en iemand moet de resulterende link activeren. Highcharts beoordeelt de ernst als hoog.
De tijdlijn is belangrijk. Highcharts publiceerde het advies op 2026-09-29. Het wijzigingenoverzicht van Highcharts vermeldt een beveiligingsupdate in versie 13.1.1 van 2026-09-20. Volgens de GitHub Advisory Database publiceerden GitHub en NVD hun vermeldingen op 2026-10-28. Het gaat om een recent openbaar gemaakte fout, maar 28 oktober was niet de oorspronkelijke publicatiedatum.
Hoe een SVG werkt
SVG (Scalable Vector Graphics) is een op XML gebaseerd afbeeldingsformaat. De broncode beschrijft vormen en tekst met elementen zoals <rect>, <path> en <text>, in plaats van een vast raster van pixels op te slaan. De browser verwerkt die elementen en tekent het resultaat. viewBox bepaalt de interne coördinaten van de tekening, die de browser kan schalen naar de beschikbare ruimte. In de illustratie bepaalt elk <rect> de positie en grootte van een staaf. Zie de SVG-introductie van MDN en de SVG 2-specificatie voor coördinaten.

Een SVG kan ook links bevatten. href is het huidige linkattribuut; xlink:href is een oudere vorm waarvan het voorvoegsel xlink een XML-naamruimtedeclaratie vereist. Hoe de SVG wordt geladen, maakt verschil: in een HTML-element <img> zijn links inactief en draaien scripts niet; als document geparset of inline ingevoegd kunnen links wel actief zijn. Dat verschil is bepalend voor deze kwetsbaarheid. Zie de SVG 2-specificatie voor links en de MDN-handleiding voor links in SVG.
Hoe de fout in SVG-export werkt
Highcharts filtert opmaak in tekstopties zoals de titel van een grafiek. In getroffen versies controleert het filter het URL-schema in attributen zoals href en src, maar past die controle niet toe op xlink:href. We hebben de uitgebrachte Highcharts 12.1.0-corebundel bekeken en deze omissie in filterUserAttributes gevonden. Daardoor kan een SVG-link met een javascript:-URL het filter passeren. De officiële correctie voegt xlink:href toe aan de attributen waarvan het URL-schema wordt gevalideerd.
De normale grafiekweergave vormt nog niet het volledige aanvalspad. Volgens Highcharts wordt het attribuut op de oorspronkelijke pagina geen actieve link, omdat het daar geen XLink-naamruimte heeft. Wanneer de grafiek als SVG wordt geëxporteerd of de opmaak wordt geserialiseerd en opnieuw geparset, kan de link actief worden. Als een gebruiker erop klikt, draait het script binnen de origin van het document dat de uitvoer heeft geparset. Dit geldt ongeacht of useHTML aanstaat. Lees de impactanalyse van Highcharts.

Een getroffen versie moet worden bijgewerkt. Met de volgende stappen bepaal je of jouw toepassing ook de gegevensstroom en verwerking van de uitvoer heeft die voor misbruik nodig zijn.
[MID_BLOG_CTA]
Welke versies zijn getroffen?
| Highcharts-versiereeks | Getroffen versies | Eerste gecorrigeerde versie |
|---|---|---|
| 11.x en ouder | 10.3.2 tot en met 11.4.8 | 11.4.9 |
| 12.x | 12.0.0 tot en met 12.6.1 | 12.6.2 |
| 13.x | 13.0.0 tot en met 13.1.0 | 13.1.1 |
Deze bereiken komen uit het advies van Highcharts. Laadt je toepassing Highcharts via een CDN, controleer dan welke URL gebruikers daadwerkelijk ontvangen. Een pakketmanifest hoeft niet overeen te komen met het script dat hun browser laadt.
Hoe controleer je of je grafieken blootstaan?
Volg het volledige pad door je toepassing, en kijk verder dan alleen de pakketversie:
- Bevestig de coreversie in de browser. Controleer het tabblad Netwerk of de geladen script-URL's op elke pagina met grafieken. Als Highcharts globaal beschikbaar is, geeft
Highcharts.versionsnel uitsluitsel. Neem ook CDN-bestanden mee die niet in je pakketmanifest staan. - Traceer tekst uit externe bronnen. Bekijk titels, ondertitels, labels en andere tekstopties van grafieken. Bepaal welke waarden een gebruiker, partner of externe gegevensbron kan beïnvloeden voordat ze Highcharts bereiken.
- Zoek de uitvoerroute. Controleer SVG-downloads, aangepaste exports, grafieken die op de server worden gegenereerd en code die grafiekopmaak serialiseert en later inline invoegt. De standaarddownload van SVG gebruikt de exportmodule, maar ook andere routes kunnen inhoud opnieuw parsen.
- Controleer de gebruikersactie en de origin van het document. Volgens het advies moet iemand de link activeren nadat de uitvoer opnieuw is geparset. Het script draait binnen de origin van het document dat de uitvoer verwerkt. Die kan verschillen van de oorspronkelijke pagina.
Een getroffen grafiek op de oorspronkelijke pagina tonen, bewijst het beschreven XSS-pad niet. Test de hele workflow in een gecontroleerde omgeving als je wilt vaststellen of de aanval bereikbaar is.
Hoe verhelp je de kwetsbaarheid?
Werk Highcharts core bij naar de gecorrigeerde versie in de versiereeks die je gebruikt. Laad je modules afzonderlijk, werk die dan bij naar dezelfde versie. Controleer na uitrol welke versie browsers ontvangen, inclusief CDN-bestanden in de cache.
Gebruik voor een regressiecontrole de test van Highcharts in de correctie: plaats een onveilige xlink:href in een tekstoptie en controleer dat de geëxporteerde SVG geen javascript:-link bevat. Als direct bijwerken niet mogelijk is, biedt het advies van Highcharts een tijdelijke filtercorrectie die je toepast voordat je grafieken maakt.
cside kan helpen vaststellen welke scripts bezoekers daadwerkelijk laden en waar bekende kwetsbare versies op een site voorkomen. Applicatiebeheerders kunnen daarna de grafiekinvoer en uitvoerworkflows beoordelen die bepalen of misbruik mogelijk is. Lees voor meer informatie over het bijhouden van een actuele scriptinventaris onze gids voor de beveiliging van scripts van derden.
Stand van zaken op 2026-10-28. Adviesvermeldingen en bereiken van getroffen versies kunnen veranderen. Controleer het advies van Highcharts voordat je een definitieve beslissing over herstel neemt.








