MadeYouReset:新型 HTTP/2 DDoS 威脅與應對策略
MadeYouReset 是一種新型的 HTTP/2 DDoS 攻擊方法,與 2023 年的快速重置(Rapid Reset)相關。攻擊者通過向伺服器發送格式錯誤的框架,迫使伺服器重置流,雖然流在 HTTP/2 的計算中被釋放,但後端的請求處理仍在進行。這使得一個 TCP 連接能夠透過代理向原始伺服器發送大量請求。修補受影響的實施和強制執行請求及控制框架速率限制是最快的緩解措施。
Rapid Reset 與 MadeYouReset 的區別
- 快速重置:客戶端大量發送 RST_STREAM 以快速取消流,消耗伺服器資源。
- MadeYouReset:攻擊者發送無效框架,使伺服器發出 RST_STREAM,流在設定的最大並發流之外被認為已關閉,但後端工作仍持續。結果是,單一連接能使原始伺服器超出協商的流量限制。
此問題由 Imperva 和特拉維夫大學披露;CERT/CC 描述其為 HTTP/2 流計算與實際後端活動之間的不匹配。目前尚未有野外利用的報告,攻擊也與正常流量混合,使得簡單的請求每秒(RPS)或連接計數器無法有效檢測。
受影響的軟體及修補狀態
這一底層缺陷(CVE-2025-8671)影響了許多 HTTP/2 環境和代理項目,包括 AMPHP、Apache Tomcat、Eclipse Foundation 項目、F5、Fastly、gRPC、Mozilla、Netty、SUSE Linux、Varnish Software、Wind River 和 Zephyr Project。目前,Apache Tomcat、F5、Fastly 和 Varnish 已發布修補程式,其他廠商正在調查或準備修正。部分廠商正根據其自己的 CVE ID 跟蹤此問題。(Mozilla 指出 Firefox 本身不受影響,其托管的服務正在修補中。)
問題的根本原因
HTTP/2 允許任一端隨時取消流。許多實現繼續處理已被重置的請求,因為上游的工作(例如緩存查找、原始伺服器轉發、緩衝等)已經排定。此時,流不再計入 SETTINGS_MAX_CONCURRENT_STREAMS。攻擊者利用這一漏洞:
- 發送請求(HEADERS,通常帶有 END_STREAM)。
- 在該流上發送無效框架以觸發伺服器上的流錯誤。
- 伺服器回覆 RST_STREAM(流在計算中關閉),但後端工作仍在繼續。
- 快速重複此過程,在一個 TCP 連接上累積無限制的並發請求。
伺服器重置的觸發框架
- WINDOW_UPDATE 與 0 或大於 2^31−1 的增量。
- 在半關閉(遠程)的流上發送 HEADERS、DATA、CONTINUATION。
- PRIORITY 帶有無效長度。
攻擊步驟
- 左側:正常操作受 SETTINGS_MAX_CONCURRENT_STREAMS 限制。
- 右側:重複的無效框架迫使伺服器 RST_STREAM;流從計算中消失,但原始伺服器工作繼續,導致代理/原始伺服器因排隊的回應而崩潰。
為何代理和原始伺服器受影響
代理在每個請求上做得更多:解碼、轉換標頭、緩存查找、原始伺服器選擇、緩衝管理、重新編碼、流量控制。當客戶端流消失時,代理仍需承擔原始伺服器 I/O 和緩衝的成本,然後在後期丟棄結果。並發性現在受後端容量限制,而非 HTTP/2 流限制,因此小規模攻擊速率可導致 CPU、記憶體和套接字耗盡。
實務監控信號
即使不解析 HTTP/2 框架,也可監控以下效果:
- 客戶端流量穩定但原始伺服器並發性上升。
- 客戶端請求開始多但回應寫入少(大量工作在後期被丟棄)。
- 伺服器發出 RST_STREAM、GOAWAY 或 HTTP/2 流錯誤的尖峰出現在代理日誌/指標中。
- 上游吞吐量和延遲增加,但成功回應無相應增長。
- 每連接異常:一個 IP 保持單一 HTTP/2 連接活躍。
在面對這些挑戰時,選擇合適的防禦方案至關重要。北斗數位 BDHWeb 提供全面的 DDoS 防禦服務,確保您的網路安全性能穩定,詳情請訪問 北斗數位網站。