HTTP/2於2015年推出,為HTTP協議帶來多項增強功能,包括高效的數據傳輸、請求處理、響應速度,以及對基於網站的信息交易進行標頭壓縮。但除這些效率之外,HTTP/2也給管理員和安全團隊帶來一系列獨特的挑戰。本周早些時候,研究人員公佈一個新發現的與HTTP/2相關的漏洞,該漏洞可用於對易受攻擊的目標實施拒絕服務(DoS)攻擊。
在thehackernews的報道中,安全研究員Bartek Nowotarski 於 1 月 25 日向卡內基梅隆大學計算機應急小組(CERT)協調中心報告這一問題。
該漏洞被稱為"HTTP/2 CONTINUATION Flood",它利用配置不當的HTTP/2 實現,這些實現未能限制或凈化請求數據流中的 CONTINUATION 幀。
CONTINUATION 幀是一種用於延續報頭塊片段序列的方法,允許報頭塊在多個幀中分割。當服務器收到一個特定的 END_HEADERS 標志,表明沒有其他 CONTINUATION 或其他幀時,先前分割的報頭塊就被視為已完成。
如果 HTTP/2 實現不限制單個數據流中可發送的 CONTINUATION 幀的數量,就很容易受到攻擊。如果攻擊者開始向未設置 END_HEADERS 標志的易受攻擊服務器發送 HTTP 請求,該請求將允許攻擊者向該服務器持續發送 CONTINUATION 幀流,最終導致服務器內存不足而崩潰,並導致成功的拒絕服務 (DoS) 攻擊。
CERT 還列舉該漏洞的另一個變種,即使用 HPACK Huffman 編碼的 CONTINUATION 幀造成 CPU 資源耗盡,同樣導致 DoS 攻擊成功。
Nowotarski 指出,這意味著單臺機器甚至單TCP連接都有可能破壞服務器的可用性,造成從服務崩潰到性能下降等各種後果。
分佈式拒絕服務(DDoS)攻擊會創建大規模僵屍網絡,通過純粹的流量來壓垮網絡,而 DoS 攻擊則不同,它可以通過向傳輸控制協議(TCP)連接發送大量請求來耗盡目標服務器的資源,從而利用單個設備制造虛假網絡流量。
與該新漏洞有關的幾個常見漏洞和暴露 (CVE) 記錄已經創建。這些記錄包括:
CVE-2024-2653 - amphp/http
CVE-2024-27316 - Apache HTTP Server: HTTP/2 DoS by memory exhaustion on endless continuation frames
CVE-2024-24549 - Apache Tomcat: HTTP/2 header handling DoS
CVE-2024-31309 - Resource exhaustion in Apache Traffic Server
CVE-2024-27919 - HTTP/2: memory exhaustion due to CONTINUATION frame flood
CVE-2024-30255) - HTTP/2: CPU exhaustion due to CONTINUATION frame flood
CVE-2023-45288 - HTTP/2 CONTINUATION flood in net/http
CVE-2024-28182 - Reading unbounded number of HTTP/2 CONTINUATION frames to cause excessive CPU usage
CVE-2024-27983 - node::http2::Http2Session::~Http2Session() leads to HTTP/2 server crash
CVE-2024-2758 - Tempesta FW rate limits are not enabled by default
建議用戶將受影響的軟件升級到最新版本,以減輕潛在威脅。在沒有修復程序的情況下,建議考慮暫時禁用服務器上的 HTTP/2。
根據 w3techs.com 的一項調查,目前約有 35.5% 的網站使用 HTTP/2。