安全研究人員發現名為 HTTP/2 Bomb 的阻斷服務 (Denial of Service, DoS) 攻擊手法,能由一台機器發動,不到一分鐘內讓網頁伺服器崩潰。
OpenAI Codex 代理人在資安業者 Calif 研究人員引導下找出 HTTP/2 Bomb 。它是結合 2 個已知 HTTP/2 DoS 攻擊手法而成,包括利用 HTTP/2 流量的 HPACK 壓縮放大 (compression amplification) 和 Slowloris(慢速連線攻擊)的資源占用。
第一部分是濫用 HTTP/2 協定的 HPACK 標頭壓縮演算法機制。本攻擊手法是攻擊者建立連線時,先發送一個體積巨大的標頭欄位,使其寫入動態表。隨後攻擊者在多個 Stream 中,反覆發送僅 1 個位元組 (Byte) 的索引來引用該欄位。結果觸發高倍率的解壓縮放大效應,例如在 Envoy 伺服器可達 5,700 倍,而在 Apache httpd 為 4,000 倍。意謂著攻擊者只需耗費極少的網路頻寬,就能強迫伺服器在記憶體中配置、展開高達數 GB 的標頭資料。
第二部分是基於 HTTP/2 流量控制的 Slowloris 資源占用,也就是經典 Slowloris 慢速連線攻擊在 HTTP/2 上的變體。攻擊者在觸發上述的標頭請求後,故意向伺服器宣告「流量控制視窗 (Window Size) 為 0」,代表暫時無法接收任何資料。為維持連線不逾時,伺服器與攻擊者會陷入僵持狀態,導致已配置的大量記憶體空間被迫持續滯留。
研究人員指出,兩者結合,在 100Mbps 連線上的單一用戶端在短短 20 秒內就能耗盡 32GB 的 RAM,迫使伺服器配置記憶體卻又不釋放它。 Calif 研究人員解釋,攻擊前半段由於標頭值很小,且放大來自內部管理記憶體簿記 (Per-header Bookkeeping) 結構和記憶體配置,可繞過現有防護機制,如解碼標頭總量限制。而後半段則偽裝成正常網路塞車,得以繞過「慢速連線 (Slowloris) 防護」。
研究人員測試,主要 Web Server 都受到 HTTP/2 Bomb 攻擊手法的影響,包括 NGINX 、 Apache HTTP Server 、 Microsoft IIS 、 Envoy 和 Cloudflare Pingora 等。壞消息是網路上已有概念驗證攻擊程式 (PoC) 。
不過已經有部分平台釋出修補程式。 nginx 1.29.8 版及 Apache httpd mod_http2 2.0.41 已經修補這漏洞。 IIS 、 Envoy 和 Pingora 則尚未有修補程式。
另外也可以利用伺服器配置提供間接防護。例如在 CDN 或反向代理伺服器 (reverse proxy) 後方的 Web Server 就不會曝露 HTTP/2 端點。有些環境則可藉由自訂標頭數限制或關閉 HTTP/2 免於攻擊。
