
CVE-2026-11118 の Python PoC。RST_STREAM によるリソース枯渇を介した HTTP/2 Rapid Reset DDoS を実証し、脆弱なサーバーシミュレーターとエクスプロイトクライアントを含みます。
# 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)
HTTP/2サーバーは、ストリームリセット(RST_STREAMフレーム)の頻度を制限していません。攻撃者は多数のストリームを開いてすぐにリセットできるため、リクエストを完了させることなくサーバーリソースを過剰に消費させ、サービス拒否(DoS)を引き起こす可能性があります。
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
高いリセット率により、サーバーが応答しなくなります。