Vercel publicó Next.js 16.4.1 y 15.5.28 el 14 de octubre de 2026 para corregir dos vulnerabilidades críticas de ejecución remota de código (RCE) sin autenticación y una denegación de servicio de severidad alta. Que tu app esté expuesta depende de tres cosas: tu versión de Next.js, si usas App Router con Server Actions o Cache Components, y si la alojas tú mismo en Linux basado en glibc.
Las tres fallas vienen de código upstream, no de Next.js en sí: Vercel tituló la publicación “Security Update for Upstream Vulnerabilities”. Dos se originan en React y tienen sus propios avisos de seguridad en React; la tercera es un fallo de memoria en una biblioteca de imágenes de la que depende Next.js. Next.js es donde aparecen porque empaqueta y llama a ese código.
¿Qué es una vulnerabilidad RCE?
Una vulnerabilidad RCE (remote code execution) permite que un atacante ejecute código propio en tu servidor a través de la red. Cuando además es “sin autenticación”, el atacante no necesita cuenta ni sesión: basta con enviar una petición manipulada a una app pública. Es la categoría más grave que puede tener un framework web, porque quien la explota controla el proceso con los mismos permisos que tu aplicación.
¿Qué vulnerabilidades corrige Next.js 16.4.1?
La versión corrige dos RCE críticas y una denegación de servicio (DoS) de severidad alta, cada una con un disparador distinto:
| Aviso | Severidad (CVSS v4) | Versiones afectadas | Disparador |
|---|---|---|---|
| GHSA-673q-mjm6-r5xr | Crítica, 9.5 | 16.0.0 – 16.4.0 | App Router + Cache Components, con una función use cache que devuelve varios typed arrays |
| CVE-2026-96889 / GHSA-2464-fhr4-w9xw | Crítica, 9.5 | 10.0.0 – 15.5.27 y 16.0.0 – 16.4.0 | Image Optimization API con Next.js ejecutándose en Linux basado en glibc |
| GHSA-p3m5-59mp-jv5r | Alta, 8.2 | 13.0.0 – 15.5.27 y 16.0.0 – 16.4.0 | App Router con al menos una Server Action |
Solo la vulnerabilidad de imágenes tiene CVE asignado; las otras dos se registran como avisos de seguridad de GitHub (GHSA).
¿Qué es la RCE en funciones use cache con typed arrays?
Afecta solo a Next.js 16. Una app es vulnerable si usa App Router con Cache Components y tiene una función use cache que devuelve varios typed arrays. El aviso upstream relacionado es GHSA-xqc2-xf4c-x3h3, de React.
Vercel indica que no existe ningún workaround conocido, y pide actualizar de inmediato aunque tu app no tenga funciones de ese tipo. Que no devuelvas typed arrays es motivo para no entrar en pánico, no para saltarte la actualización.
¿Qué es CVE-2026-96889, la RCE en Image Optimization?
Es la de mayor alcance: el aviso considera afectadas todas las versiones de Next.js desde la 10.0.0 cuando Next.js se ejecuta en Linux basado en glibc. El origen es un fallo de memoria en la biblioteca upstream que usa la optimización de imágenes. El título del aviso indica que aplica cuando se usan archivos SVG, pero el texto no detalla las condiciones exactas, así que no des por hecho que tu configuración te deja fuera.
¿Qué es la denegación de servicio en Server Actions?
Peticiones manipuladas contra una app con App Router y al menos una Server Action pueden disparar el uso de CPU hasta bloquear el resto de peticiones de ese proceso. Las apps con Pages Router, o sin Server Actions, no son vulnerables. El aviso upstream relacionado es GHSA-h3gv-c5rc-p453, de React.
¿Cómo saber si mi app Next.js es vulnerable?
Revisa tres cosas:
- Versión. Cualquier versión anterior a 15.5.28, y cualquier 16.x anterior a 16.4.1, entra en el rango de al menos uno de los avisos.
- Funcionalidades. Busca
cacheComponents: trueen tunext.config: es la opción que activa Cache Components y la directivause cache, y pasó a ser una opción de primer nivel en Next.js 16.0.0. Luego busca'use server'en tu código para localizar Server Actions. - Entorno de ejecución. Si alojas la app tú mismo en Linux, comprueba si el sistema está basado en glibc: es el alcance que declara el aviso de imágenes.
Si tu versión está afectada, actualiza aunque las respuestas a los puntos 2 y 3 te tranquilicen. La recomendación de Vercel es explícita en eso.
¿Cómo actualizar Next.js a la versión parcheada?
Instala la versión corregida de tu rama:
npm install next@15.5.28 # for 15.5
npm install next@16.4.1 # for 16.4
Son los comandos exactos de la publicación de Vercel. La 16.4.1 corresponde a la rama Active LTS y la 15.5.28 a la Maintenance LTS. Según el aviso de imágenes, actualizar Next.js hace además que tu gestor de paquetes instale una versión corregida de sharp.
¿Qué hago si no puedo actualizar Next.js hoy?
Para la RCE de imágenes, el workaround del aviso es asegurarte de que el sharp que usa Next.js sea la 0.35.5 o posterior. Las instalaciones nuevas ya reciben una versión corregida, pero un lockfile existente puede mantener una antigua.
Comprueba qué versión tienes instalada:
npm ls sharp
Si es anterior a la 0.35.5, puedes forzar la versión con overrides de npm en el package.json raíz de tu proyecto (npm solo tiene en cuenta los overrides del archivo raíz):
{
"overrides": {
"sharp": ">=0.35.5"
}
}
Una advertencia de la documentación de npm: si sharp también es una dependencia directa en tu package.json, el override tiene que coincidir con la especificación de esa dependencia o npm lanza un error EOVERRIDE. En ese caso, sube directamente la versión de la dependencia.
Esta solución temporal cubre solo CVE-2026-96889. No sirve para la RCE de use cache ni para la DoS de Server Actions, que no tienen workaround más allá de actualizar.
¿Hay parche para Next.js 13 o 14?
Al momento de publicar esta nota (17 de octubre de 2026), no. Los avisos solo listan correcciones en 15.5.28 y 16.4.1, mientras que la RCE de imágenes alcanza hasta la 10.0.0 y la DoS hasta la 13.0.0. Si estás en 13.x o 14.x, puedes cerrar la RCE de imágenes con el pin de sharp descrito arriba; cerrar la DoS exige pasar a 15.5.28 o posterior. Si venías aplazando la migración a Next.js 15, esta versión es un buen motivo para ponerle fecha.
¿Por qué llegó fuera del calendario habitual?
Vercel anunció la actualización con una semana de antelación: dos de las correcciones se habían retrasado desde la versión de seguridad de septiembre mientras las dependencias upstream se ponían al día. Los investigadores llegaron a través del programa Open Source Bug Bounty de Vercel en HackerOne.
¿Y tú? ¿Cuánto tarda tu equipo, normalmente, en desplegar un parche de seguridad crítico como este desde que se publica?
- Next.js 16
- Next.js 15
- Next.js 14 o anterior
- Otra situación (cuéntanos cuál)
Comenta abajo o, si este artículo te llegó por correo, responde directamente al email: tu respuesta se publica aquí.
Relacionado: Critical Vulnerability in React and Next.js
