HTTP/2 Bomb|一台家用電腦 20 秒耗盡伺服器 32GB 記憶體
一句話總結
HTTP/2 Bomb:一台 100Mbps 家用機 20 秒耗盡伺服器 32GB 記憶體。NGINX、Apache、IIS、Envoy、Cloudflare Pingora 默認配置全中招。
HTTP/2 Bomb|一台家用電腦 20 秒耗盡伺服器 32GB 記憶體
OpenAI Codex 發現,由安全公司 Calif 披露。受影響:NGINX、Apache HTTPD、Microsoft IIS、Envoy、Cloudflare Pingora——默認配置下全部中招。
原理
兩個已知技術的組合:HPACK 壓縮炸彈 + Slowloris 連接佔用。HPACK 是 HTTP/2 的 header 壓縮方案,攻擊者發送幾乎空的 header,但每個 entry 都觸發伺服器分配 per-entry bookkeeping 記憶體——繞過了各伺服器針對「decoded size」設置的上限(因為幾乎沒有東西需要解碼)。然後用 HTTP/2 的零字節 flow-control window 把連接掛住,讓伺服器無法釋放任何已分配的記憶體。
結果:單個 100Mbps 家用連接幾秒內讓伺服器不可用,Apache HTTPD 和 Envoy 上 20 秒吃掉 32GB。
修補狀態
NGINX:升至 1.29.8+;不能升的直接關掉 HTTP/2(
---
via The Hacker News / Calif 技術分析
OpenAI Codex 發現,由安全公司 Calif 披露。受影響:NGINX、Apache HTTPD、Microsoft IIS、Envoy、Cloudflare Pingora——默認配置下全部中招。
原理
兩個已知技術的組合:HPACK 壓縮炸彈 + Slowloris 連接佔用。HPACK 是 HTTP/2 的 header 壓縮方案,攻擊者發送幾乎空的 header,但每個 entry 都觸發伺服器分配 per-entry bookkeeping 記憶體——繞過了各伺服器針對「decoded size」設置的上限(因為幾乎沒有東西需要解碼)。然後用 HTTP/2 的零字節 flow-control window 把連接掛住,讓伺服器無法釋放任何已分配的記憶體。
結果:單個 100Mbps 家用連接幾秒內讓伺服器不可用,Apache HTTPD 和 Envoy 上 20 秒吃掉 32GB。
修補狀態
NGINX:升至 1.29.8+;不能升的直接關掉 HTTP/2(
http2 off;)。Apache:mod_http2 v2.0.41 已修;或設 Protocols http/1.1。IIS、Envoy、Cloudflare Pingora:目前無補丁。---
via The Hacker News / Calif 技術分析
