Principales conclusiones:
- El fin de la vida útil transfiere la responsabilidad de la seguridad a usted: Cuando finaliza el soporte de Next.js, las vulnerabilidades no desaparecen, sino que su equipo se convierte en responsable de gestionar el riesgo.
- Puede mantenerse seguro sin tener que reescribir todo: El refuerzo, la higiene de las dependencias y las defensas por capas te dan tiempo para planear una actualización.
- Las actualizaciones incrementales reducen el riesgo y el agotamiento: Avanzar versión a versión con supervisión y asistencia ampliada mantiene la estabilidad de las aplicaciones y la cordura de los equipos.
Si has creado algo significativo con Next.js (un panel de control de productos, una interfaz SaaS o un portal interno), ya conoces la mezcla de orgullo y ansiedad que conlleva depender de un marco de trabajo JavaScript en rápida evolución. El ritmo de innovación es fantástico hasta que te das cuenta de que tu versión de Next.js está a punto de llegar fin de vida útil.
He visto cómo este momento provoca auténtico pánico en los equipos. Te enteras de que se han descubierto nuevas vulnerabilidades, sigues utilizando una versión anterior y alguien plantea la pregunta inevitable:
«¿Tenemos que reescribirlo todo?».
Buenas noticias: no, no tienes que desechar todo. Pero sí debes comprender qué sucede cuando finaliza el soporte, qué es una significa realmente una vulnerabilidad de Next.js significa realmente para tu aplicación y cómo mantener la seguridad mientras ganas tiempo para realizar una actualización limpia.
Vamos a analizarlo juntos.
La realidad del ciclo de vida que nadie te cuenta
Next.js avanza rápidamente. Es una de las razones por las que se ha convertido en el marco de trabajo de facto para las aplicaciones basadas en React. Pero esa misma velocidad significa que las versiones van y vienen rápidamente.
Cada versión principal pasa por dos etapas de soporte: LTS activa (nuevas funciones, correcciones de errores y parches de seguridad) y, a continuación, LTS de mantenimiento (solo correcciones de seguridad críticas). Una vez que se cierra esa ventana, se considera fin de vida.
Esa última etapa suena suave —«fin de la vida útil»— pero en la práctica significa una cosa: estás solo. No habrá más actualizaciones, ni parches de seguridad, ni garantías de que tus paquetes npm favoritos sigan siendo compatibles.
Entonces, cuando finalice el soporte, la gran pregunta será: ¿qué pasará si se descubre una nueva vulnerabilidad en Next.js?

El impacto real de una vulnerabilidad de Next.js
Es fácil pensar en las vulnerabilidades como algo abstracto, pero no lo son.
A principios de 2025, un problema crítico (CVE-2025-29927) permitió a los atacantes eludir la autorización en el middleware Next.js manipulando un encabezado específico. Se corrigió rápidamente si se utilizaba una versión compatible. De lo contrario, ese error permanece en la pila, esperando silenciosamente a que alguien lo suficientemente curioso (o malintencionado) lo descubra.
Y ese es el verdadero coste de utilizar software sin soporte técnico. Cuando tu versión llega al final de su vida útil, los responsables del mantenimiento dejan de ocuparse de la ardua tarea de encontrar y corregir estos agujeros de seguridad. Cualquier vulnerabilidad recién descubierta se convierte en algo de lo que tienes que ocuparte tú mismo.
Ahora bien, eso no significa que tu aplicación esté condenada al fracaso. Solo significa que necesitas un plan de seguridad que no dependa únicamente de las actualizaciones del marco de trabajo.
Por qué los equipos retrasan las migraciones (y por qué eso está bien)
Las migraciones rara vez son el proyecto favorito de nadie. Llevan tiempo, rompen dependencias y suelen aparecer justo cuando hay problemas más urgentes que resolver. Hay equipos que posponen las actualizaciones durante un año por miedo a romper una única función crítica escondida en lo más profundo del código heredado.
Es comprensible. Pero también es ahí donde entra en juego el riesgo. Cuanto más tiempo permanezcas en versiones sin soporte, más probable será que una vulnerabilidad de Next.js te exponga.
El truco está en gestionar ese riesgo sin precipitarse a reescribir el código. Se puede ganar tiempo, de forma segura, reforzando las defensas y planificando actualizaciones de forma gradual.
Paso uno: saber exactamente cuál es tu situación
Empieza por averiguar qué versión de Next.js está ejecutando tu aplicación. Ejecuta npm list next (o yarn list next) y anote el número de versión.
A continuación, consulte la política de lanzamiento de Next.js. Allí se indica el calendario de soporte de cada versión principal. Compare su versión con esas fechas para ver si todavía se encuentra en LTS activo, LTS de mantenimiento o si ha pasado a fin de vida útil.
Una vez que conozca su estado, podrá planificar en consecuencia. Si aún se encuentra en mantenimiento LTS, actualice pronto, ya que su tiempo es limitado. Si ya se encuentra en EOL, asuma que hay vulnerabilidades sin parchear y concéntrese en compensar los controles de seguridad de inmediato.
Paso dos: Fortalece lo que ya tienes
Si no puede actualizar inmediatamente, debe hacer que su aplicación actual sea más difícil de explotar. Aquí es donde el refuerzo pragmático marca la diferencia:
1. Middleware seguro y autorización
La reciente vulnerabilidad de Next.js se dirigía a la lógica del middleware, así que empieza por ahí. Revisa cómo gestionas la autenticación y la protección de rutas. No confíes únicamente en el middleware para la autorización. Añade también comprobaciones dentro de la lógica real de tu aplicación.
2. Reforzar los encabezados y la validación de entradas
Comprueba dos veces tus encabezados de seguridad HTTP (CSP, X-Frame-Options, Referrer-Policy) para reducir tu exposición a inyecciones, clickjacking y otros ataques comunes. Desinfecta cada dato introducido por el usuario. Evita dangerouslySetInnerHTML a menos que sea absolutamente necesario (y si debe hacerlo, limpie las entradas manualmente).
3. Mantenga las dependencias en buen estado
Next.js es solo una pieza del rompecabezas de tu seguridad. Audita el resto de tus paquetes npm con npm audit o herramientas como Snyk, y actualiza todo lo que se marque. Un marco seguro no te salvará de una dependencia vulnerable.
4. Añadir defensas en tiempo de ejecución
Si es posible, coloque su aplicación detrás de un firewall de aplicaciones web (WAF) o un proxy inverso. Unas reglas sencillas pueden bloquear los encabezados sospechosos (como x-middleware-subrequest) o solicitudes malformadas antes de que lleguen a su servidor.
Paso tres: añadir capas de protección
Ni siquiera una aplicación bien mantenida puede ser totalmente segura. Por eso, es aconsejable pensar en capas:
- Controles de acceso a la red: Limite las rutas de administración detrás de VPN o listas de direcciones IP permitidas.
- Supervisión y alertas: configure alertas para patrones de tráfico extraños o solicitudes inusuales.
- Aislamiento de contenedores: Ejecute Next.js dentro de contenedores Docker con privilegios mínimos, de modo que, incluso si se ve comprometido, el daño sea limitado.
- Análisis de vulnerabilidades: Realice análisis periódicos en busca de entradas conocidas de «vulnerabilidades de next.js» y aplique los parches correspondientes a las dependencias.
No son soluciones milagrosas, pero te permiten ganar tiempo, y ese tiempo puede ser fundamental cuando se trata de evitar una actualización apresurada y arriesgada.
Paso cuatro: No ignore las opciones de asistencia ampliada
A veces, actualizar de inmediato no es realista. Quizás estés en medio de un lanzamiento, o quizás tu pila incluya bibliotecas que no se han actualizado a la última versión de Next.js.
En ese caso, vale la pena considerar soluciones de soporte ampliado. Algunos proveedores se especializan en la retrocompatibilidad de parches de seguridad para marcos y bibliotecas más antiguos. Estos servicios mantienen seguras las versiones EOL mientras planifica su transición. Por ejemplo, TuxCare's Soporte de ciclo de vida extendido para bibliotecas ofrece este tipo de red de seguridad, manteniendo discretamente la seguridad de las dependencias más antiguas mientras los equipos se modernizan.
No es una solución definitiva, pero te da un respiro para actualizar según tus condiciones.
Paso cinco: planifique la actualización como si fuera una maratón, no un sprint.
Cuando finalmente esté listo para actualizar, resista la tentación de saltarse cinco versiones a la vez. En su lugar, considérelo como una serie de pasos más pequeños y controlados.
Comience por identificar sus rutas más utilizadas: los componentes que gestionan la autenticación, los pagos o los datos confidenciales. Actualícelos primero. Pruébelos a fondo antes de tocar las partes menos críticas.
Si tienes secciones heredadas que no se pueden migrar de inmediato, considera aislarlas en subdominios o microfrontends separados. De esa manera, incluso si ejecutan una versión anterior temporalmente, no pondrán en riesgo toda la aplicación. La migración incremental es más lenta, pero mantiene tu aplicación estable y tu equipo cuerdo.
Hay otra ventaja en actualizar lentamente: aprendes mucho sobre cómo funciona realmente tu sistema. Las actualizaciones incrementales revelan dependencias ocultas, API obsoletas y partes de la arquitectura que, silenciosamente, crean problemas de mantenimiento. Solucionar esos problemas sobre la marcha hace que tu aplicación sea más ágil y rápida.
Paso seis: Sigue observando el horizonte
La seguridad no es algo estático. Constantemente aparecen nuevas vulnerabilidades, no solo en Next.js, sino también en Node.js, React y tus dependencias.
Establezca una rutina para supervisar:
- Avisos de GitHub sobre Next.js
- Boletines de seguridad de Node.js y npm
- Bases de datos de vulnerabilidades como CVE.org o Snyk
Es fácil considerar esto como ruido de fondo, pero cada nueva vulnerabilidad de Next.js es una señal de alerta temprana. Si las rastreas de forma proactiva, tendrás semanas, a veces meses, de ventaja antes de que los atacantes automaticen sus exploits.
Lista de verificación rápida previa a la migración
Antes de terminar la planificación, revise esta lista de verificación simplificada:
- Identifica tu versión actual de Next.js y su estado de compatibilidad.
- Comprueba si hay alguna vulnerabilidad conocida que afecte a esa versión.
- Revisar el middleware y la lógica de autenticación en busca de puntos débiles.
- Desinfectar las entradas y aplicar encabezados de seguridad.
- Audite las dependencias y actualice lo que pueda.
- Añadir protecciones y supervisión a nivel de red.
- Planifique su ruta de migración, versión por versión.
- Realice pruebas exhaustivas después de cada etapa.
No es un trabajo glamuroso, pero es lo que mantiene tu aplicación y a tus usuarios a salvo.
El panorama general: mantenerse seguro sin agotarse
Cuando ves titulares sobre una nueva «vulnerabilidad de next.js», es fácil entrar en pánico. Pero la verdad es que todos los marcos de trabajo acaban enfrentándose a retos de seguridad. Lo que diferencia a los equipos resilientes de los reactivos es cómo gestionan esa transición.
No es necesario que lo reescribas todo. Ni siquiera tienes que actualizarlo de la noche a la mañana. Pero sí necesitas visibilidad, estructura y un plan.
La seguridad es un proceso continuo, que premia mucho más la constancia que las hazañas heroicas. El objetivo no es ser invulnerable, sino ser un poco más difícil de explotar que el objetivo medio.
Mantén tus marcos de trabajo actualizados, tus dependencias reducidas y tu sistema de monitorización activo. Cuando llegue el día en que tu versión de Next.js llegue al final de su ciclo de vida, ya contarás con los sistemas y la seguridad necesarios para gestionarlo sin problemas.
El fin de la vida útil no significa el fin de la seguridad. Solo significa que ahora el plan de acción está en tus manos y, con el plan adecuado, podrás gestionarlo con confianza.



