Skip to main content
Blog
Blog Attacks

XSS en la exportación SVG de Highcharts: qué implica GHSA-mw4f-gj5x-6xr4 para tu sitio

GHSA-mw4f-gj5x-6xr4 afecta a los SVG exportados por Highcharts. Consulta las versiones afectadas, cuándo hay riesgo de XSS y cómo revisar tu sitio.

Oct 28, 2026 • 6 min read
XSS en la exportación SVG de Highcharts: qué implica GHSA-mw4f-gj5x-6xr4 para tu sitio
Tabla de Contenidos

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.

El código SVG con tres elementos rect se convierte en un gráfico de tres barras cuando el navegador lo analiza y escala

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.

Flujo que muestra cómo un enlace SVG no confiable supera el filtro de Highcharts, permanece inactivo en el gráfico original y puede activarse tras la exportación

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 HighchartsVersiones afectadasPrimera versión corregida
11.x y anterioresDe 10.3.2 a 11.4.811.4.9
12.xDe 12.0.0 a 12.6.112.6.2
13.xDe 13.0.0 a 13.1.013.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:

  1. 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.version es otra comprobación rápida. Incluye los archivos de la CDN que no aparecen en tu archivo de dependencias.
  2. 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.
  3. 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.
  4. 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.

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 divulgación es reciente, pero no se publicó por primera vez el 2026-10-28. Highcharts publicó su aviso el 2026-09-29. La base de datos global de avisos de GitHub y NVD añadieron sus registros el 2026-10-28.

Sí, si un texto controlado por un atacante entra en un gráfico, el SVG o el marcado se exporta o serializa y se vuelve a analizar, y alguien activa el enlace resultante. Cargar una versión afectada no demuestra por sí solo que exista esa ruta de ataque.

No. Según Highcharts, el atributo inseguro xlink:href pasa el filtro tanto si la opción de texto afectada utiliza useHTML como si no.

Highcharts indica que 11.4.9, 12.6.2 y 13.1.1 son las primeras versiones corregidas de sus respectivas ramas.

El módulo de exportación proporciona la ruta de exportación SVG predeterminada, pero Highcharts también describe el riesgo cuando otro flujo serializa el marcado del gráfico y vuelve a analizarlo. Revisa las exportaciones personalizadas, los SVG insertados y el marcado generado en el servidor.

Monitoriza y protege tus scripts de terceros

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

Empieza gratis o prueba Business con una versión de prueba de 14 días.

Interfaz del panel de cside que muestra la monitorización de scripts y el análisis de seguridad
Related Articles
Reservar una demo

¿Quieres verlo en detalle con un ingeniero?

Treinta minutos, sobre tu propio sitio. Nada de diapositivas.

Reserva una demo personalizada para ver:

Cómo cumplir los requisitos 6.4.3 y 11.6.1 de PCI DSS en 1 día
Por qué los scripts de terceros son un riesgo de seguridad para ti y tus visitantes
Cómo monitorizar fugas de privacidad y consentimiento (RGPD, CCPA) en cada tercero
Cómo frenar el abuso de registros, el uso compartido de cuentas y el fraude de contracargos con device intelligence
Cómo detectar y controlar agentes de IA y bots que llegan a tu sitio en tiempo real

¿Prefieres mandarnos una pregunta?

Usa este mismo correo al reservar con Google. Es posible que Google te pida introducirlo de nuevo.

Usamos tu correo para relacionar la reserva con tu visita y medir cómo nos encuentran. No es una suscripción a nuestra newsletter.

¿Problemas para reservar? Abrir el calendario en una pestaña nueva

¿Qué quieres resolver?

Cuéntanoslo en una línea y te responderemos con algo útil, no con un discurso genérico.

Solemos ayudar con:

Ver qué scripts de terceros se ejecutan en tu sitio
Evidencias para PCI DSS 6.4.3 y 11.6.1
Bots, agentes de IA y robo de cuentas

¿Prefieres reservar una hora? Elegir un hueco