Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

¿Qué es la omisión de autorización del Middleware de Next.js (CVE-2025-29927)?

Se ha descubierto una vulnerabilidad crítica (CVE-2025-29927) en el middleware. Lee el artículo para saber qué es y cómo solucionarlo.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

Introducción

Next.js ha surgido como uno de los frameworks de React más populares para construir aplicaciones web modernas, ofreciendo potentes características como el renderizado del lado del servidor, rutas de API y capacidades de middleware. Sin embargo, se ha descubierto recientemente una vulnerabilidad crítica (CVE-2025-29927) que afecta la funcionalidad del middleware, lo que podría permitir a los atacantes eludir por completo los mecanismos de autenticación y autorización.

Esta vulnerabilidad es particularmente preocupante porque el middleware se utiliza a menudo para implementar comprobaciones de autenticación, control de acceso basado en roles y otras medidas de seguridad. Cuando se ve comprometido, puede conducir a un acceso no autorizado a recursos protegidos, exposición de datos confidenciales y, potencialmente, la toma de control completa de la aplicación.

💡
Y aquí tienes un pequeño bono desde el principio: si te gusta el testing de APIs, querrás echar un vistazo a Apidog. Es una herramienta fantástica que se integra perfectamente con Python, ¿y lo mejor? ¡Puedes descargar Apidog gratis! ¡Es perfecto para automatizar tus pruebas de API!
Apidodg all in one image
button

Vulnerabilidad CVE-2025-29927 Explicada

CVE-2025-29927 es una vulnerabilidad crítica en Next.js que permite a los atacantes eludir por completo las comprobaciones de autorización basadas en middleware. La vulnerabilidad proviene de un fallo de implementación en la forma en que Next.js maneja ciertas cabeceras HTTP en las solicitudes.

Cuando una solicitud incluye una cabecera x-middleware-prefetch especialmente diseñada, la ejecución del middleware puede ser eludida por completo, permitiendo el acceso directo a rutas protegidas. Esta vulnerabilidad afecta a las aplicaciones que dependen únicamente del middleware para implementar controles de autenticación y autorización.

Detalles Técnicos de CVE-2025-29927

La vulnerabilidad explota la forma en que Next.js procesa las solicitudes de prefetch. Al establecer la cabecera x-middleware-prefetch en 1, los atacantes pueden hacer que Next.js trate la solicitud como una operación de prefetch, lo que bajo ciertas condiciones elude las comprobaciones de seguridad en el middleware.

Un atacante podría explotar esta vulnerabilidad con una simple solicitud HTTP como:

GET /dashboard HTTP/1.1
Host: vulnerable-app.com
x-middleware-prefetch: 1

Incluso si el middleware contiene código para redirigir a los usuarios no autenticados fuera de /dashboard, esta solicitud eludiría esa comprobación y potencialmente obtendría acceso al panel de control protegido.

El enlace de Github al problema de seguridad: https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw

Prueba de Concepto

La explotación es sencilla y no requiere herramientas especiales más allá de la capacidad de enviar solicitudes HTTP personalizadas. Usando una herramienta como curl, un atacante podría ejecutar:

curl -H "x-middleware-prefetch: 1" https://vulnerable-app.com/dashboard

Esta simple solicitud podría potencialmente eludir las comprobaciones de autenticación y obtener acceso al contenido protegido.

¿Qué Versiones de Next.js Están Afectadas?

Esta vulnerabilidad afecta a las versiones de Next.js hasta:

  • 13.4.9 para Next.js 13
  • 14.0.4 para Next.js 14

Las aplicaciones son vulnerables si:

  1. Usan middleware para comprobaciones de autenticación o autorización
  2. Se ejecutan en versiones afectadas de Next.js
  3. No tienen comprobaciones de autenticación adicionales del lado del servidor o a nivel de API

La vulnerabilidad es particularmente preocupante para las aplicaciones implementadas en plataformas sin servidor como Vercel, donde el middleware es a menudo el método principal para implementar la autenticación debido a sus capacidades de función Edge.

Cómo Detectar Si Tu Aplicación Next.js Es Vulnerable

Para determinar si tu aplicación es vulnerable, puedes:

  1. Comprobar tu versión de Next.js
  2. Probar rutas protegidas con la cabecera x-middleware-prefetch: 1
  3. Revisar la implementación del middleware para la dependencia exclusiva del middleware de Next.js para los controles de seguridad

El impacto de esta vulnerabilidad varía dependiendo de lo que esté protegiendo el middleware:

  • Impacto Bajo: Middleware utilizado para características no relacionadas con la seguridad como pruebas A/B o analíticas
  • Impacto Medio: Middleware que protege contenido no sensible
  • Impacto Alto: Middleware que protege datos sensibles, paneles de administración o información financiera
  • Impacto Crítico: Middleware como la única capa de autenticación para toda la aplicación

Qué Debes Hacer Ante el Problema Crítico de Seguridad de Next.js

1. Actualizar a Versiones Parcheadas

La mitigación más sencilla es actualizar a las versiones parcheadas:

  • Next.js 13.4.10 o posterior para Next.js 13
  • Next.js 14.0.5 o posterior para Next.js 14

2. Implementar Defensa en Profundidad

No confíes únicamente en el middleware para la seguridad:

// pages/dashboard.js or app/dashboard/page.js
export async function getServerSideProps(context) {
  const session = await getSession(context);
  
  if (!session) {
    return {
      redirect: {
        destination: '/login',
        permanent: false,
      },
    };
  }
  
  return {
    props: { session },
  };
}

3. Aplicar Validación de Cabecera Personalizada

Añade validación en tu middleware para rechazar solicitudes con cabeceras sospechosas:

export function middleware(request) {
  // Reject requests with x-middleware-prefetch header
  if (request.headers.get('x-middleware-prefetch')) {
    return new NextResponse(null, { status: 403 });
  }
  
  // Regular middleware logic
  // ...
}

4. Usar Edge Config para Controlar el Acceso

Para las aplicaciones implementadas en Vercel, considera usar Edge Config para mantener una lista de bloqueo de IPs o patrones de solicitud potencialmente maliciosos.

Cómo Migrar de Vercel a Cloudflare

How to Migrate from Vercel to Cloudflare

Si estás considerando mover tu aplicación Next.js de Vercel a Cloudflare para mejorar la seguridad.

El proyecto se puede encontrar en Github: https://github.com/ygwyg/diverce, y aquí tienes una guía paso a paso sobre cómo usar esta herramienta para migrar de Next.js a Cloudflare:

1. Prepara Tu Aplicación Next.js

Primero, asegúrate de que tu aplicación sea compatible con Cloudflare Pages:

# Install the Cloudflare Pages adapter
npm install @cloudflare/next-on-pages

Actualiza tu next.config.js:

// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  // Cloudflare Pages compatible settings
  output: 'export',
  images: {
    unoptimized: true,
  },
  // Existing configuration...
};

module.exports = nextConfig;

2. Configura Cloudflare Pages

  1. Crea una cuenta de Cloudflare si no tienes una
  2. Navega al Panel de Control de Cloudflare → Pages
  3. Conecta tu repositorio de GitHub/GitLab
  4. Configura los ajustes de compilación:
  • Comando de compilación: npm run build
  • Directorio de salida de la compilación: .next
  • Establece las variables de entorno de tu proyecto Vercel

3. Implementa Cloudflare Workers para la Funcionalidad del Middleware

Crea un archivo functions/_middleware.js en tu proyecto:

export async function onRequest({ request, next, env }) {
  // Get the URL from the request
  const url = new URL(request.url);
  
  // Authentication logic
  // Example: Check authentication token
  const token = request.headers.get('Authorization');
  
  if (!token && url.pathname.startsWith('/dashboard')) {
    return Response.redirect(new URL('/login', request.url), 302);
  }
  
  // Continue to the next middleware or the destination
  return await next();
}

4. Configura los Ajustes de DNS

Actualiza tus ajustes de DNS para que apunten a Cloudflare:

  1. En el Panel de Control de Cloudflare, ve a tu dominio
  2. Añade un registro CNAME que apunte a tu implementación de Cloudflare Pages
  3. Asegúrate de que SSL/TLS esté configurado en "Full" o "Full (Strict)"

5. Implementa Medidas de Seguridad Adicionales

Aprovecha las características de seguridad de Cloudflare:

  • Habilita Cloudflare WAF (Web Application Firewall)
  • Configura reglas de limitación de velocidad
  • Configura Cloudflare Access para capas de autenticación adicionales
  • Usa Cloudflare Workers para lógica de seguridad personalizada

6. Prueba y Soluciona Problemas

Antes de migrar completamente:

  1. Implementa en un entorno de pruebas
  2. Prueba todas las rutas y funcionalidades
  3. Verifica que las integraciones de API sigan funcionando
  4. Comprueba si hay alguna limitación específica de Cloudflare

Conclusión

CVE-2025-29927 representa una seria vulnerabilidad en el middleware de Next.js que puede socavar por completo la seguridad de la aplicación. La capacidad de eludir la autenticación basada en middleware con una sola cabecera HTTP demuestra por qué la defensa en profundidad es crucial en la seguridad de las aplicaciones web.

Para proteger tus aplicaciones Next.js:

  1. Actualiza a las versiones parcheadas inmediatamente
  2. Implementa múltiples capas de autenticación
  3. No confíes únicamente en el middleware para los controles de seguridad
  4. Considera implementar reglas WAF para bloquear cabeceras sospechosas
  5. Prueba regularmente tu aplicación en busca de vulnerabilidades de seguridad

Si estás considerando alejarte de Vercel, Cloudflare ofrece características de seguridad robustas que pueden ayudar a mitigar vulnerabilidades similares en el futuro. Al aprovechar la red perimetral de Cloudflare, las capacidades de WAF y la plataforma Workers, puedes construir una aplicación Next.js más segura y resistente.

Recuerda que la seguridad es un proceso continuo: mantenerse informado sobre nuevas vulnerabilidades y mantener las dependencias actualizadas es esencial para proteger tus aplicaciones y los datos de los usuarios.

💡
Y aquí tienes un pequeño bono desde el principio: si te gusta el testing de APIs, querrás echar un vistazo a Apidog. Es una herramienta fantástica que se integra perfectamente con Python, ¿y lo mejor? ¡Puedes descargar Apidog gratis! ¡Es perfecto para automatizar tus pruebas de API!
Apidodg all in one image
button
Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con OllamaPunto de vista

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

Mikael Svenson

April 28, 2025

¿Dónde Descargar Swagger UI en Español Gratis?Punto de vista

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

Oliver Kingsley

April 23, 2025

¿Dónde Descargar Postman en Español Gratis?Punto de vista

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

Oliver Kingsley

April 22, 2025