Skip to main content
Blog
Blog Attacks

XSS bij SVG-export in Highcharts: wat GHSA-mw4f-gj5x-6xr4 betekent voor je site

GHSA-mw4f-gj5x-6xr4 treft SVG-export in Highcharts. Bekijk de getroffen versies, wanneer XSS in de browser mogelijk is en hoe je je site controleert.

Oct 28, 2026 • 6 min read
XSS bij SVG-export in Highcharts: wat GHSA-mw4f-gj5x-6xr4 betekent voor je site
Inhoudsopgave

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.

SVG-broncode met drie rect-elementen wordt na verwerking en schaling door de browser een grafiek met drie staven

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.

Schema van een onbetrouwbare SVG-link die het Highcharts-filter passeert, in de oorspronkelijke grafiek inactief blijft en na export en opnieuw parsen actief kan worden

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-versiereeksGetroffen versiesEerste gecorrigeerde versie
11.x en ouder10.3.2 tot en met 11.4.811.4.9
12.x12.0.0 tot en met 12.6.112.6.2
13.x13.0.0 tot en met 13.1.013.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:

  1. 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.version snel uitsluitsel. Neem ook CDN-bestanden mee die niet in je pakketmanifest staan.
  2. 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.
  3. 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.
  4. 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.

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

De melding is recent, maar verscheen niet voor het eerst op 2026-10-28. Highcharts publiceerde het beveiligingsadvies op 2026-09-29. De wereldwijde adviesdatabase van GitHub en NVD voegden hun vermeldingen toe op 2026-10-28.

Ja, als tekst die een aanvaller beheert in een grafiek terechtkomt, de SVG of opmaak wordt geëxporteerd of geserialiseerd en opnieuw geparset, en een gebruiker de resulterende link activeert. Alleen een getroffen versie laden bewijst niet dat dit aanvalspad bestaat.

Nee. Volgens Highcharts passeert het onveilige attribuut xlink:href het filter ongeacht of de betreffende tekstoptie useHTML gebruikt.

Highcharts noemt 11.4.9, 12.6.2 en 13.1.1 als de eerste gecorrigeerde versies in hun respectieve versiereeksen.

De exportmodule verzorgt de standaardroute voor SVG-export, maar Highcharts beschrijft ook een risico wanneer een andere workflow de grafiekopmaak serialiseert en opnieuw laat parsen. Controleer aangepaste exports, inline SVG en grafiekopmaak die op de server wordt gemaakt.

Monitor en beveilig je third-party scripts

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

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside-dashboardinterface met scriptmonitoring en beveiligingsanalyses
Related Articles
Boek een demo

Wil je dit doornemen met een engineer?

Dertig minuten, op je eigen site. Geen slides.

Boek een persoonlijke demo om te zien:

Hoe je in 1 dag voldoet aan PCI DSS-vereisten 6.4.3 en 11.6.1
Waarom scripts van derden een beveiligingsrisico zijn voor jou en je bezoekers
Hoe je privacy- en toestemmingslekken (AVG, CCPA) bij elke derde partij monitort
Hoe je misbruik van aanmeldingen, account sharing en chargeback-fraude stopt met device intelligence
Hoe je AI-agents en bots die je site bereiken in realtime detecteert en beheerst

Liever gewoon een vraag stellen?

Gebruik ditzelfde e-mailadres wanneer je bij Google boekt. Google kan je vragen het nogmaals in te vullen.

We gebruiken je e-mailadres om je boeking aan je bezoek te koppelen en te meten hoe mensen ons vinden. Dit is geen nieuwsbriefinschrijving.

Lukt het boeken niet? Agenda in een nieuw tabblad openen

Wat wil je oplossen?

Vertel het ons in één zin, dan komen we terug met iets bruikbaars in plaats van een standaardverhaal.

Waar we meestal mee helpen:

Zien welke scripts van derden op je site draaien
Bewijs voor PCI DSS 6.4.3 en 11.6.1
Bots, AI-agents en accountovername

Liever meteen een moment inplannen? Kies een tijdstip