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ónpoweredByHeader[S2]. - CORS Configuración incorrecta: Los encabezados
Access-Control-Allow-Originmal definidos dentro de la matrizheaderspueden 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
sourceennext.config.jsutilicen comodines apropiados (por ejemplo,/:path*) para aplicar encabezados globalmente cuando sea necesario [S2]. - Desactivar huellas dactilares: configure
poweredByHeader: falseennext.config.jspara evitar que se envíe el encabezadoX-Powered-Bya [S2]. - Restringir CORS: establezca
Access-Control-Allow-Originen dominios confiables específicos en lugar de comodines en la configuración deheaders[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.
