Apache 軟體基金會(Apache Software Foundation,ASF)釋出 Apache HTTP Server(httpd)安全更新,修補多項弱點。其中最受關注的是
CVE-2026-23918(CVSS 8.8)。官方指出,該漏洞源於 HTTP/2 處理流程中的「雙重釋放」,可能導致拒絕服務(DoS),甚至被利用進一步造成遠端程式碼執行(RCE)。
此漏洞影響 Apache HTTP Server 2.4.66,並已在 2.4.67 中修補。
研究人員指出,漏洞出現在 mod_http2 模組的串流清理流程,涉及 h2_mplx.c 的 stream cleanup path。
攻擊者可在同一個 HTTP/2 串流上先送出 HEADERS frame,接著在多工器尚未完成註冊前,再送出帶有非零錯誤碼的 RST_STREAM,從而觸發異常。
在此情境下,nghttp2 會依序觸發 on_frame_recv_cb 與 on_stream_close_cb 兩個回呼(callback),最終都會呼叫到清理函式,導致同一個 h2_stream 指標被放入清理陣列兩次。當後續逐一銷毀(destroy)串流並呼叫 apr_pool_destroy 時,第二次操作會命中已被釋放的記憶體,造成程序崩潰,甚至可能被利用進一步控制流程。
就攻擊影響來看,研究人員表示拒絕服務 DoS 門檻極低,只需一條 TCP 連線與兩個 frame 即可讓工作執行緒當掉,而且不需要驗證,也不需要特殊標頭或特定 URL。若目標環境啟用 mod_http2,並採用多執行緒 MPM,在預設部署情境下就可能受到影響。
至於 RCE 風險,研究人員已在 x86_64 上建立可運作的概念驗證(PoC)。攻擊鏈會利用 mmap 重用機制,將偽造的 h2_stream 結構放回已釋放的虛擬位址,並把其 pool cleanup function 指向 system();同時再利用 Apache 記分板記憶體作為穩定容器,用來存放結構與命令字串。由於 scoreboard 在伺服器生命週期內位址固定,即使啟用位址空間配置隨機化(ASLR)也不易改變,使攻擊更具可行性。不過在實務上,攻擊通常仍需要額外的資訊洩漏,才能取得 system() 與 scoreboard 的位移資訊;此外,堆噴(heap spray)也具有一定機率性。
研究人員也提醒,
採用 MPM prefork 的環境不受此弱點影響。然而,由於 mod_http2 常見於預設編譯與部署,且 HTTP/2 在生產環境普遍啟用,整體攻擊面仍相當大。官方建議使用者儘速更新至修補版本,以降低風險。
防護建議
- 儘速升級至 Apache HTTP Server 2.4.67 或更新版本,並確認相關套件與容器映像同步更新
- 盤點是否啟用 HTTP/2 與 mod_http2,若短期無法更新,可評估暫時停用 HTTP/2 以降低攻擊面
- 檢查目前使用的 MPM 類型,並針對多執行緒 MPM 環境加強監控 worker 異常重啟與連線行為
本文轉載自 TheHackerNews。