
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 프레임)의 비율을 제한하지 않습니다. 공격자는 대량의 스트림을 열고 즉시 재설정할 수 있으며, 요청을 완료하지 않고도 과도한 서버 리소스 소비를 유발하여 서비스 거부로 이어질 수 있습니다.
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
높은 재설정 비율로 인해 서버가 응답하지 않게 됩니다.