Se ha descubierto que varias implementaciones de HTTP/2 son susceptibles a una nueva técnica de ataque llamada MadeYouReset, que podría explorarse para llevar a cabo potentes ataques de denegación de servicio (DoS).
HTTP/2 se diseñó para mejorar el rendimiento: conexiones multiplexadas más rápidas, priorización de flujos y compresión de encabezados. Sin embargo, estas mismas características también han abierto la puerta a sofisticados ataques de denegación de servicio. En 2023, la vulnerabilidad de reinicio rápido de HTTP/2 acaparó titulares después de que atacantes explotaran el mecanismo de cancelación de flujos del protocolo para bloquear servicios a gran escala.
Ahora, con una nueva y fascinante variante descubierta gracias a la colaboración entre Imperva e investigadores de la Universidad de Tel Aviv, las reglas del juego han cambiado. El descubrimiento fue realizado por Gal Bar Nahum, estudiante de maestría, y la profesora Anat Bremler-Barr del Laboratorio Deepness de la Escuela Blavatnik de Ciencias de la Computación e Inteligencia Artificial, junto con el Dr. Yaniv Harel del Centro Cibernético de la Universidad de Tel Aviv. A diferencia de la versión original, donde los clientes envían spam con tramas RST_STREAM para agotar los recursos del servidor, este nuevo método engaña al servidor para que restablezca sus propios flujos, causando daños similares sin violar directamente las reglas del protocolo: de ahí el nombre: "MadeYouReset".
"MadeYouReset supera el límite habitual impuesto por el servidor de 100 solicitudes HTTP/2 simultáneas por conexión TCP desde un cliente. Este límite pretende mitigar los ataques DoS al restringir el número de solicitudes simultáneas que un cliente puede enviar", afirmaron los investigadores Gal Bar Nahum, Anat Bremler-Barr y Yaniv Harel. "Con MadeYouReset, un atacante puede enviar miles de solicitudes, lo que crea una condición de denegación de servicio para usuarios legítimos y, en algunas implementaciones de proveedores, puede escalar hasta provocar fallos por falta de memoria".
MadeYouReset es la última vulnerabilidad en HTTP/2, tras Rapid Reset (CVE-2023-44487) y HTTP/2 CONTINUATION Flood, que podría utilizarse como arma para organizar ataques DoS a gran escala.
Al igual que los otros dos ataques utilizan las tramas RST_STREAM y CONTINUATION, respectivamente, en el protocolo HTTP/2 para ejecutar el ataque, MadeYouReset se basa en Rapid Reset y su mitigación, lo que limita el número de transmisiones que un cliente puede cancelar mediante RST_STREAM.
Específicamente, aprovecha que la trama RST_STREAM se utiliza tanto para la cancelación iniciada por el cliente como para señalar errores de transmisión. Esto se logra mediante el envío de tramas cuidadosamente diseñadas que desencadenan violaciones de protocolo de forma inesperada, lo que obliga al servidor a reiniciar la transmisión mediante la emisión de un RST_STREAM.
"Para que MadeYouReset funcione, la transmisión debe comenzar con una solicitud válida que el servidor comience a procesar y luego generar un error de transmisión para que el servidor emita un RST_STREAM mientras el backend continúa procesando la respuesta", explicó Bar Nahum.
"Al crear ciertas tramas de control no válidas o violar la secuencia del protocolo en el momento justo, podemos hacer que el servidor envíe un RST_STREAM para una transmisión que ya contenía una solicitud válida".
Las seis primitivas que hacen que el servidor envíe tramas RST_STREAM incluyen:
- Trama WINDOW_UPDATE con un incremento de 0
- Trama PRIORITY con una longitud distinta de 5 (la única longitud válida)
- Trama PRIORITY que hace que un flujo dependa de sí mismo
- Trama WINDOW_UPDATE con un incremento que hace que la ventana supere 2^31 − 1 (que es el tamaño máximo de ventana permitido)
- Trama HEADERS enviada después de que el cliente haya cerrado el flujo (mediante el indicador END_STREAM)
- Trama DATA enviada después de que el cliente haya cerrado el flujo (mediante el indicador END_STREAM)
Este ataque es notable, sobre todo porque evita que un atacante envíe una trama RST_STREAM, omitiendo así por completo las mitigaciones de reinicio rápido, y además tiene el mismo impacto que este último.
En un aviso, el Centro de Coordinación CERT (CERT/CC) indicó que MadeYouReset explota una discrepancia causada por los reinicios de flujo entre las especificaciones HTTP/2 y las arquitecturas internas de muchos servidores web reales, lo que resulta en el agotamiento de recursos, algo que un atacante puede aprovechar para inducir un ataque DoS.
"El descubrimiento de vulnerabilidades de reinicio rápido activadas por el servidor pone de relieve la creciente complejidad del abuso de protocolos modernos", declaró Imperva. "Dado que HTTP/2 sigue siendo la base de la infraestructura web, protegerlo contra ataques sutiles que cumplen con las especificaciones, como MadeYouReset, es más crucial que nunca".
HTTP/1.1 debe morir
La divulgación de MadeYouReset se produce después de que la firma de seguridad de aplicaciones PortSwigger detallara nuevos ataques de desincronización de HTTP/1.1 (también conocidos como contrabando de solicitudes HTTP), incluyendo una variante de CL.0 llamada 0.CL, que expone a millones de sitios web a ataques hostiles. Akamai (CVE-2025-32094) y Cloudflare (CVE-2025-4366) han abordado los problemas. Para más información se puede ver HTTP 1 MUST DIE.
El contrabando (smuggling) de solicitudes HTTP es una vulnerabilidad de seguridad que afecta al protocolo de la capa de aplicación y que aprovecha la inconsistencia en el análisis de solicitudes HTTP no conformes con RFC por parte de los servidores front-end y back-end, lo que permite a un atacante "contrabandear" una solicitud y eludir las medidas de seguridad.
"HTTP/1.1 tiene una falla fatal: los atacantes pueden crear una ambigüedad extrema sobre dónde termina una solicitud y dónde comienza la siguiente", declaró James Kettle de PortSwigger. HTTP/2+ elimina esta ambigüedad, lo que hace que los ataques de desincronización sean prácticamente imposibles. Sin embargo, habilitar HTTP/2 en el servidor perimetral no es suficiente; debe usarse para la conexión ascendente entre el proxy inverso y el servidor de origen.
Fuente: THN