FixVibe
Covered by FixVibemedium

Next.js Configuración incorrecta del encabezado de seguridad en next.config.js

Las aplicaciones Next.js que utilizan next.config.js para la gestión de encabezados son susceptibles a sufrir brechas de seguridad si los patrones de coincidencia de rutas son imprecisos. Esta investigación explora cómo las configuraciones erróneas de comodines y expresiones regulares provocan que falten encabezados de seguridad en rutas sensibles y cómo reforzar la configuración.

CWE-1021CWE-200

Impacto

Los encabezados de seguridad que faltan se pueden aprovechar para realizar clickjacking, secuencias de comandos entre sitios (XSS) o recopilar información sobre el entorno del servidor [S2]. Cuando encabezados como Content-Security-Policy (CSP) o X-Frame-Options se aplican de manera inconsistente en todas las rutas, los atacantes pueden apuntar a rutas específicas desprotegidas para eludir los controles de seguridad de todo el sitio [S2].

Causa raíz

Next.js permite a los desarrolladores configurar encabezados de respuesta en next.config.js utilizando la propiedad headers [S2]. Esta configuración utiliza una coincidencia de rutas que admite comodines y expresiones regulares [S2]. Las vulnerabilidades de seguridad suelen surgir de:

  • Cobertura de ruta incompleta: Es posible que los patrones comodín (p. ej., /path*) no cubran todas las subrutas previstas, lo que deja páginas anidadas sin encabezados de seguridad [S2].
  • Divulgación de información: De forma predeterminada, Next.js puede incluir el encabezado X-Powered-By, que revela la versión del marco a menos que se deshabilite explícitamente a través de la configuración poweredByHeader [S2].
  • CORS Configuración incorrecta: Los encabezados Access-Control-Allow-Origin mal definidos dentro de la matriz headers pueden permitir el acceso no autorizado entre orígenes a datos confidenciales [S2].

Arreglos concretos

  • Patrones de ruta de auditoría: asegúrese de que todos los patrones source en next.config.js utilicen comodines apropiados (por ejemplo, /:path*) para aplicar encabezados globalmente cuando sea necesario [S2].
  • Desactivar huellas dactilares: configure poweredByHeader: false en next.config.js para evitar que se envíe el encabezado X-Powered-By a [S2].
  • Restringir CORS: establezca Access-Control-Allow-Origin en dominios confiables específicos en lugar de comodines en la configuración de headers [S2].

Cómo lo prueba FixVibe

FixVibe podría realizar una prueba cerrada activa rastreando la aplicación y comparando los encabezados de seguridad de varias rutas. Al analizar el encabezado X-Powered-By y la coherencia de Content-Security-Policy en diferentes profundidades de ruta, FixVibe puede identificar brechas de configuración en next.config.js.