Apache httpd 2.4.69 修補 mod_http2 共用緩衝區重入造成的 use-after-free
oss-security / Apache HTTP Server Project · 2026-10-01
mod_http2 在同一個 HTTP/2 session 內共用的暫存 brigade session->bbtmp,被重入(re-entrancy)使用時會留下已釋放的指標,進而造成 use-after-free 與 wild write。這個問題從 2.4.0 一路存在到 2.4.68,2.4.69 於 2026-10-01 修補,編號 CVE-2026-57941。
Apache 自己把嚴重度標為 moderate。但它是記憶體破壞類漏洞,而且出現在多數啟用 HTTP/2 的 httpd 都會載入的模組裡,值得今天就排進升級。
漏洞機制
公告的描述只有一句:mod_http2 的 use-after-free,起因是共用的 session->bbtmp 重入,標題另外提到 wild write。bucket brigade 是 httpd 傳遞資料的鏈結串列;bbtmp 從名稱看是 session 層級的暫存 brigade。
從標題可以合理推論:同一個 session 上有兩條程式路徑共用這一個暫存物件,內層呼叫清理或重用它之後,外層仍拿著舊的指標繼續寫入。但公告與 CHANGES_2.4 都沒有公開呼叫路徑、觸發條件或利用方式,修補內容在 svn 的 r1938665,該 revision 頁面目前需要認證才能開啟,本文未能核對 diff。
因此「是否能被遠端未認證觸發」「能否做到程式碼執行」,公告未說明,本文不下結論。
受影響版本
- 受影響:Apache HTTP Server
2.4.0至2.4.68 - 修補:
2.4.69,修補 revision 為r1938665 - 回報者:Lucian Nitescu、Simon Kappel、Gianluca Danesin(Altervista)
| 日期 | 事件 |
|---|---|
| 2026-06-15 | 回報給 Apache 安全團隊 |
| 2026-10-01 | r1938665 修補,2.4.69 發布,公告送出 |
從回報到修補相隔約三個半月;這段期間是否有公開利用,公告未提。
影響範圍
先確認自己有沒有走到 mod_http2。沒載入該模組、也沒啟用 h2 的站台,不會碰到這段程式碼;這是依模組名稱做的判斷,公告本身沒有列出前提條件,保守起見仍建議直接升級。可以用下面的指令確認:
# 模組有沒有載入
apachectl -M | grep http2
# 有沒有啟用 h2
grep -R "Protocols" /etc/apache2 /etc/httpd 2>/dev/null
apachectl -v # 版本需 >= 2.4.69要特別留意的是發行版與容器映像檔:很多環境不是自己編譯 httpd,而是跟著發行版套件或 httpd 官方映像更新。版本字串停在 2.4.68 以前,不代表一定沒修;發行版常把修補 backport 進舊版本號,要以發行版自己的安全公告為準。本文未查證各發行版的修補狀態。
另外,Synology 這類把 Apache 包進產品的環境,也要看廠商何時更新內含的 httpd,不能只看上游發布日期。
同一版本的其他修補
2.4.69 並不是只修這一個洞。CHANGES_2.4 的 2.4.69 區段列出 20 條 SECURITY 項目,涵蓋 mod_dav_fs、mod_auth_digest、mod_proxy_uwsgi、mod_vhost_alias、mod_ssl 等模組。其中有幾條值得一併檢視:
CVE-2026-56154:mod_rewrite 的 use-after-free(%{LA-U:HTTP:...}),公告標為 lowCVE-2026-56449:mod_proxy_html 處理惡意回應內容時的 out-of-bounds write,標為 lowCVE-2026-42356:CGI 目錄中對非 CGI 檔案做內部轉址時的 limited RCE
也就是說,升級的理由不只是 mod_http2:只要你的設定用到上述任一模組,同一次升級就一併處理了。反過來說,若因為變更管理無法立刻升級,就得逐條評估每個 CVE 是否碰到自己載入的模組,成本不低。
修補與緩解
官方的修補方式是升級到 2.4.69。公告沒有提供不升級也能生效的設定緩解,所以能確認的唯一修補路徑就是換版本。
如果暫時無法升級,一個可行的折衷是關閉 HTTP/2,讓連線退回 HTTP/1.1:
# before
Protocols h2 http/1.1
# after(暫時緩解,公告未將此列為官方緩解)
Protocols http/1.1這是依漏洞位於 mod_http2 所做的推論,並非公告提供的做法;代價是失去多工與標頭壓縮,反向代理後方若有依賴 h2 的客戶端也要先確認相容性。
修補 diff 與逐條細節以 Apache 官方漏洞頁為準。