OpenNext Cloudflare: La interceptación de caché puede omitir la protección del middleware en rutas codificadas
Resumen
Cuando la interceptación de caché está habilitada, @opennextjs/cloudflare puede interpretar las rutas con codificación por porcentaje de forma diferente durante la coincidencia del middleware y la búsqueda en caché.
Una solicitud codificada puede no coincidir con el middleware de autorización y luego ser descodificada en la clave de caché de una ruta protegida. En consecuencia, la respuesta almacenada en caché puede devolverse sin ejecutar el middleware.
enableCacheInterception está deshabilitado de forma predeterminada.
Impacto
Un atacante remoto no autenticado puede recuperar contenido almacenado en caché de rutas destinadas a estar protegidas por middleware.
Una aplicación se ve afectada si:
- habilita explícitamente
enableCacheInterception; - depende del middleware para el control de acceso; y
- cuenta con una ruta coincidente almacenada en caché.
Detalles
Anteriormente, la coincidencia del middleware utilizaba el pathname codificado de la solicitud, mientras que la interceptación de caché descodificaba el pathname antes de seleccionar una entrada en la caché.
Por ejemplo, considere una aplicación con:
- matcher de middleware
/admin/:path*; - middleware que devuelve
401 Authentication requiredpara/admin; - una ruta estática generada y almacenada en caché
/admin; y - interceptación de caché habilitada:
export default defineCloudflareConfig({
incrementalCache: staticAssetsIncrementalCache,
enableCacheInterception: true,
});
Un atacante puede solicitar:
GET /%61dmin
El pathname codificado no coincide con /admin/:path*, por lo que el middleware de autorización no se ejecuta. A continuación, la interceptación de caché descodifica %61dmin a admin y puede devolver la respuesta almacenada en caché de /admin:
HTTP/1.1 200 OK
x-opennext-cache: HIT
Protected content
Las rutas mal formadas expusieron una inconsistencia adicional. Por ejemplo:
GET /%61dmin/%ZZ
La implementación anterior descodificaba cada segmento de forma independiente. Descodificaba %61dmin a admin, pero retenía el segmento mal formado %ZZ, permitiendo que la búsqueda en caché continuara utilizando una ruta parcialmente descodificada.
Parches
La corrección unifica el tratamiento de rutas codificadas entre la coincidencia de middleware y la búsqueda en caché, y rechaza las rutas mal formadas en lugar de descodificarlas parcialmente. Consulte las correcciones originales en opennextjs-aws#1199 y opennextjs-aws#1200..
Se recomienda a los usuarios actualizar a @opennextjs/cloudflare@1.20.2 o superior.
Qué hacer
Actualice a @opennextjs/cloudflare@1.20.2 o posterior. Si no es posible actualizar de inmediato, aplique las siguientes medidas de mitigación:
- Desactive la interceptación de caché eliminando
enableCacheInterception: true. - Aplique la autorización directamente dentro de los controladores de rutas protegidas en lugar de depender únicamente del middleware.
- Rechace rutas codificadas dirigidas a rutas protegidas mediante un proxy de confianza antes de que lleguen al Worker.
Añadir variantes individuales codificadas en los patrones del matcher no es una solución completa, ya que los nombres de ruta pueden admitir múltiples codificaciones equivalentes.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | @opennextjs/cloudflare | >= 0.3.0, < 1.20.2 | 1.20.2 |
Referencias
- https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-2vc4-c4r6-p6v6
- https://nvd.nist.gov/vuln/detail/CVE-2026-100409
- https://github.com/opennextjs/opennextjs-aws/pull/1199
- https://github.com/opennextjs/opennextjs-aws/pull/1200
- https://github.com/opennextjs/opennextjs-cloudflare/commit/38ea40b669be272ddf09a7df7e70c69d0b57404b
- https://github.com/opennextjs/opennextjs-cloudflare
- https://github.com/opennextjs/opennextjs-cloudflare/releases/tag/@opennextjs/cloudflare@1.20.2
- Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N- Debilidad (CWE)
CWE-177, CWE-180- Plataforma
- npm
- Paquete
@opennextjs/cloudflare- Publicada
- 15.10.2026
- Actualizado
- 16.10.2026 08:00
Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.
OSV / GitHub Advisory Database - GHSA-2vc4-c4r6-p6v6 - CC BY 4.0
Historial de vulnerabilidades: @opennextjs/cloudflare
Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 2
- Primera → última
- 06.2025 10.2026
- Sin corrección
- 0
- Explotada en ataques
- 0
Distribución por gravedad
- Alta 2
Divulgaciones por año
- 2025: 1
- 2026: 1
-
OpenNext Cloudflare: La interceptación de caché puede omitir la protección del middleware en rutas codificadas esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.