xiand.ai
13 abr 2026 · Actualizado 13:38 UTC
Ciberseguridad

Un error de distinción entre mayúsculas y minúsculas deja a millones de aplicaciones Nuxt vulnerables al contrabando de peticiones

Una vulnerabilidad en el framework HTTP h3 permite a los atacantes eludir las capas de seguridad mediante el uso de mayúsculas y minúsculas inconsistentes en los campos de cabecera.

Ryan Torres

2 min de lectura

Un error de distinción entre mayúsculas y minúsculas deja a millones de aplicaciones Nuxt vulnerables al contrabando de peticiones
Foto: javascript.plainenglish.io

El investigador de seguridad Simon Koeck ha descubierto una vulnerabilidad crítica en h3, el framework HTTP subyacente que utilizan el popular framework web Nuxt.js y el motor de servidor Nitro. El fallo permite a los atacantes realizar ataques de contrabando de peticiones HTTP (HTTP request smuggling) al explotar un error de distinción entre mayúsculas y minúsculas en la forma en que el framework procesa los datos de las cabeceras.

El núcleo del problema reside en una función dentro de h3 que analiza los cuerpos de las peticiones. Al comprobar la codificación de transferencia fragmentada (chunked transfer encoding), el código realiza una búsqueda que distingue entre mayúsculas y minúsculas para la cadena "chunked". Sin embargo, según el RFC 7230, los valores de las cabeceras HTTP deben tratarse como insensibles a mayúsculas y minúsculas. Al enviar una cabecera como "Transfer-Encoding: ChunKed", un atacante puede engañar al framework h3 para que ignore el cuerpo de la petición por completo.

La mecánica del ataque de contrabando

Cuando una aplicación se despliega detrás de un proxy inverso, la discrepancia entre cómo el proxy y el backend interpretan la petición crea una brecha de seguridad. Un proxy estándar identificará correctamente "ChunKed" como una codificación fragmentada válida y reenviará la petición completa. Debido a que h3 no reconoce la codificación, trata la petición como si no tuviera cuerpo y devuelve una respuesta inmediata.

Esto genera una desincronización entre el proxy y el servidor. Los datos que h3 ignoró permanecen en el búfer de conexión, donde se malinterpretan como el inicio de una petición HTTP posterior. Esto permite a un atacante inyectar, o "pasar de contrabando", una segunda petición no autorizada en el sistema.

Koeck confirmó este comportamiento comparando h3 con el framework Express. Mientras que Express identificó correctamente la petición malformada y esperó los datos restantes, h3 procesó la petición al instante, sin reconocer el cuerpo.

Esta vulnerabilidad plantea riesgos significativos para los despliegues web modernos. Dado que la petición contrabandeada queda efectivamente oculta de la inspección inicial, puede eludir los firewalls de aplicaciones web (WAF) y los proxies de autenticación. En un entorno de conexión compartida "keep-alive", esto puede provocar el envenenamiento de la respuesta, donde datos sensibles o tokens de sesión destinados a un usuario se entregan a otro.

"Lo peor de todo: nada de esto deja un rastro evidente", señaló Koeck. Debido a que el backend trata la petición contrabandeada como una transacción nueva y legítima, el ataque suele evitar los sistemas tradicionales de registro y monitorización. Se recomienda a los desarrolladores que utilicen Nuxt y Nitro que se aseguren de que sus entornos estén actualizados para mitigar el riesgo de desincronización.

Comentarios

Los comentarios se almacenan localmente en tu navegador.