Vulnerabilidad en Next.js

Se ha detectado una vulnerabilidad crítica en Next.js que podría permitir a atacantes ejecutar código en un servidor mediante la funcionalidad ImageResponse. Este componente, que genera imágenes para Open Graph y otras vistas previas sociales, tiene un fallo que se produce cuando se introducen valores controlados por el atacante, como texto extraído de la URL de la solicitud, en la imagen.

La empresa Vercel, responsable del desarrollo de Next.js, ha calificado la vulnerabilidad como crítica, asignándole un CVSS de 9.5. El problema, registrado como CVE-2026-94545, afecta a las versiones de Next.js desde la 16.2.0 hasta la 16.3.5, cuando ImageResponse se ejecuta en el runtime de Node.js, que es el predeterminado en Next.js. La versión Edge de ImageResponse y Next.js 15 no están afectadas por este problema.

Detalles Técnicos

ImageResponse utiliza Satori, una biblioteca de Vercel, para convertir el diseño de la imagen en código SVG antes de generar el archivo PNG final. Las aplicaciones afectadas son aquellas que “pasan valores controlados por el atacante a contenido SVG, atributos o estilos durante la generación de imágenes”. Un ejemplo citado en el aviso de Vercel muestra cómo un valor de la URL de la solicitud se inserta dentro de un elemento de título SVG. Sin embargo, no se especifica si el texto en elementos comunes, como un encabezado dentro de un div, también está incluido.

Para identificar dónde se utiliza esta función en una aplicación, se debe buscar ImageResponse importado desde next/og, por ejemplo, en manejadores de rutas y en archivos de imagen de Open Graph. Estos manejadores generan la imagen al recibir una solicitud, mientras que un archivo de imagen de Open Graph puede crearla en el momento de la construcción o al recibir una solicitud.

Hasta el 23 de septiembre, no se han encontrado informes públicos de ataques que exploten esta vulnerabilidad ni código de explotación disponible. La única versión corregida es Next.js 16.3.6, que puede instalarse mediante el comando `npm install next@16.3.6`. Actualmente, no hay una versión corregida para la línea 16.2, lo que significa que las aplicaciones que utilicen esta versión deben actualizarse a la 16.3.6.

Medidas Alternativas

Para aquellos que no puedan realizar la actualización inmediata, la solución alternativa sugerida es mantener los valores controlados por el atacante fuera del contenido SVG, atributos y estilos que renderiza ImageResponse en Node.js. El aviso de Vercel no recomienda cambiar a la versión Edge, y la documentación de Next.js marca el runtime Edge como obsoleto.

Un análisis realizado el 23 de septiembre por The Hacker News no encontró que npm audit marcara la versión 16.3.5, una versión afectada. Además, el aviso aún no estaba listado en la GitHub Advisory Database, y no se había publicado ningún registro de CVE-2026-94545. Se recomienda a los desarrolladores comprobar directamente la versión de Next.js utilizada.

Satori, que se incluye dentro del paquete de Next.js, no aparece como una dependencia en el archivo de bloqueo, lo que puede dificultar la identificación de la vulnerabilidad. El aviso de Vercel no aclara si las aplicaciones alojadas en su plataforma están protegidas. En casos de vulnerabilidades críticas anteriores en Next.js, la empresa indicó que las aplicaciones alojadas estaban protegidas y no necesitaban actualizaciones.

Conclusión

El bug se encuentra en Satori. Su propio aviso, publicado el mismo día, indica que ciertos valores alcanzaron su salida SVG sin ser debidamente escapados, lo que permitió que un valor especialmente elaborado se interpretara como código SVG en lugar de texto plano. Esto podría conducir a vulnerabilidades en otras bibliotecas de las que depende Next.js y provocar la ejecución de código, aunque Vercel no ha especificado cuáles son estas bibliotecas. Los desarrolladores que utilicen Satori directamente deben actualizar a la versión 0.33.5, que incluye la corrección.

Fuente

Ver noticia original