XSS en la exportación SVG de Highcharts: qué implica GHSA-mw4f-gj5x-6xr4 para tu sitio
Highcharts ha divulgado un fallo de secuencias de comandos entre sitios (XSS) en el navegador relacionado con el filtrado del texto de los gráficos. Se identifica como GHSA-mw4f-gj5x-6xr4 y CVE-2026-116796. El fallo puede convertir un enlace de un SVG exportado o analizado de nuevo en una vía para ejecutar JavaScript. Una página que carga una versión afectada no es necesariamente explotable. El atacante debe controlar el texto del gráfico, debe producirse una exportación o serialización y alguien debe activar el enlace resultante. Highcharts clasifica el fallo como de gravedad alta.
Las fechas importan. Highcharts publicó su aviso el 2026-09-29. El registro de cambios de Highcharts indica que la versión 13.1.1, con una corrección de seguridad, se publicó el 2026-09-20. Según la base de datos de avisos de GitHub, GitHub y NVD publicaron sus registros el 2026-10-28. Es un problema divulgado recientemente, aunque el 28 de octubre no fue la fecha de divulgación inicial.
Cómo funciona un SVG
SVG (gráficos vectoriales escalables) es un formato de imagen basado en XML. Su código describe formas y texto mediante elementos como <rect>, <path> y <text>, en lugar de guardar una cuadrícula fija de píxeles. El navegador analiza esos elementos y dibuja el resultado. viewBox define las coordenadas internas del dibujo, que el navegador puede adaptar al espacio disponible. En la ilustración, cada <rect> establece la posición y el tamaño de una barra. Consulta la introducción a SVG de MDN y la especificación de coordenadas de SVG 2.

Un SVG también puede contener enlaces. href es el atributo actual para enlaces; xlink:href es una forma antigua cuyo prefijo xlink requiere una declaración de espacio de nombres XML. Importa cómo se carga el SVG: dentro de un <img> de HTML, los enlaces están inactivos y los scripts no se ejecutan; si se analiza como documento o se inserta en línea, los enlaces pueden estar activos. Esa diferencia es central en este fallo. Consulta la especificación de enlaces de SVG 2 y la guía de MDN sobre enlaces SVG.
Cómo funciona el fallo de exportación SVG
Highcharts filtra el marcado que se introduce en opciones de texto, como el título de un gráfico. En las versiones afectadas, el filtro comprueba el esquema de URL de atributos como href y src, pero no aplica la misma comprobación a xlink:href. Revisamos el archivo principal distribuido de Highcharts 12.1.0 y encontramos esa omisión en filterUserAttributes. Por eso, un enlace SVG con una URL javascript: puede pasar el filtro. La corrección oficial añade xlink:href a los atributos sometidos a la validación del esquema de URL.
La vista normal del gráfico no completa la ruta de ataque. Según Highcharts, el atributo no se convierte en un enlace activo en la página original porque allí carece del espacio de nombres XLink. Cuando el gráfico se exporta a SVG o su marcado se serializa y se vuelve a analizar, el enlace puede activarse. Si alguien hace clic, el script se ejecuta en el origen del documento que analizó el resultado. El problema existe tanto si useHTML está activado como si no. Lee el análisis del impacto de Highcharts.

Una versión afectada necesita una actualización. Los pasos siguientes permiten determinar si tu aplicación también presenta el flujo de datos y el tratamiento del resultado necesarios para la explotación.
[MID_BLOG_CTA]
¿Qué versiones están afectadas?
| Rama de Highcharts | Versiones afectadas | Primera versión corregida |
|---|---|---|
| 11.x y anteriores | De 10.3.2 a 11.4.8 | 11.4.9 |
| 12.x | De 12.0.0 a 12.6.1 | 12.6.2 |
| 13.x | De 13.0.0 a 13.1.0 | 13.1.1 |
Estos rangos proceden del aviso de Highcharts. Si tu aplicación carga Highcharts desde una CDN, comprueba la URL que reciben los usuarios. El archivo de dependencias puede no reflejar el script que se sirve en sus navegadores.
Cómo comprobar si tus gráficos están expuestos
Sigue la ruta completa de tu aplicación, no solo la versión del paquete:
- Confirma la versión principal en el navegador. Revisa la pestaña Red o las URL de los scripts cargados en cada ruta que muestra gráficos. Si Highcharts está disponible globalmente,
Highcharts.versiones otra comprobación rápida. Incluye los archivos de la CDN que no aparecen en tu archivo de dependencias. - Rastrea el texto de origen externo. Revisa títulos, subtítulos, etiquetas y otras opciones de texto de los gráficos. Identifica los valores que un usuario, socio o fuente de datos externa puede modificar antes de que lleguen a Highcharts.
- Encuentra la ruta de salida. Revisa las descargas SVG, las exportaciones personalizadas, los gráficos generados en el servidor y el código que serializa el marcado y luego lo inserta en una página. La descarga SVG predeterminada usa el módulo de exportación, pero otras rutas también pueden volver a analizar el contenido.
- Comprueba la interacción y el origen del documento. El aviso exige que alguien active el enlace después de volver a analizarlo. El script se ejecuta en el origen del documento que analiza el resultado, que puede ser distinto del de la página original.
Mostrar un gráfico afectado en la página original no demuestra por sí solo la ruta de XSS descrita. Si necesitas confirmar que es alcanzable, prueba el flujo completo en un entorno controlado.
Cómo corregir el problema
Actualiza el paquete principal de Highcharts a la versión corregida de la rama que utilizas. Si cargas los módulos por separado, actualízalos a la versión correspondiente. Después del despliegue, verifica la versión que reciben los navegadores, incluidos los archivos almacenados en caché de la CDN.
Para una prueba de regresión, sigue la prueba de Highcharts incluida en la corrección: introduce un xlink:href inseguro en una opción de texto y verifica que el SVG exportado no conserve un enlace javascript:. Si no puedes actualizar de inmediato, el aviso de Highcharts ofrece un parche temporal del filtro que debe aplicarse antes de crear gráficos.
cside puede ayudar a identificar qué scripts cargan realmente los visitantes y dónde aparecen versiones vulnerables conocidas en un sitio. Los propietarios de la aplicación pueden verificar después las entradas y rutas de salida que determinan si el fallo es explotable. Para saber más sobre cómo mantener un inventario de scripts en ejecución, consulta nuestra guía de seguridad de scripts de terceros.
Información actualizada al 2026-10-28. Los registros del aviso y los rangos de versiones afectadas pueden cambiar. Consulta el aviso de Highcharts antes de tomar una decisión definitiva sobre la corrección.








