
Python-PoC für CVE-2026-11118 zur Demonstration eines HTTP/2-Rapid-Reset-DDoS-Angriffs durch RST_STREAM-Ressourcenerschöpfung; enthält einen verwundbaren Server-Simulator und einen Exploit-Client.
# 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)
Ein HTTP/2-Server begrenzt die Rate der Stream-Resets (RST_STREAM-Frames) nicht. Ein Angreifer kann eine große Anzahl von Streams öffnen und diese sofort zurücksetzen, was zu übermäßigem Ressourcenverbrauch des Servers führt, ohne dass Anfragen abgeschlossen werden müssen. Dies führt zu einem Denial of Service.
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
Der Server reagiert aufgrund der hohen Reset-Rate nicht mehr.