觀點 · 資訊分享

nginx 修補 HTTP/3 緩衝區溢位漏洞:開了 HTTP/3 又用舊 OpenSSL 的要升級

nginx 9 月 15 日同時釋出 1.31.6 與 1.30.5,修補一個影響 HTTP/3 的堆積記憶體緩衝區溢位(CVE-2026-90439)。官方把嚴重度列為 medium,觸發條件是特定設定下使用 HTTP/3 且 OpenSSL 為 3.5.0 以前的版本。

發布
2026-09-15
篇幅
約 4 分鐘 · 1,753 字
結構
7 節 + 3 題常見問題
標籤
#nginx#CVE-2026-90439#HTTP/3#OpenSSL
nginx 修補 HTTP/3 緩衝區溢位漏洞:開了 HTTP/3 又用舊 OpenSSL 的要升級

一句話看懂:nginx 9 月 15 日同時釋出 1.31.6 和 1.30.5,修補一個跟 HTTP/3 有關的緩衝區溢位漏洞(CVE-2026-90439),有開 HTTP/3 又用舊版 OpenSSL 的網站要升級。

nginx 修補 HTTP/3 緩衝區溢位資訊圖卡:有開 HTTP/3、又用舊版 OpenSSL 的網站,要升到修正版

先用白話講:「緩衝區溢位」是什麼?

想像你拿一個杯子裝水,杯子只有 300 毫升,但倒水的人沒看刻度,一直倒,水就流出杯子、淹到旁邊的桌面。緩衝區溢位就是這樣:程式為資料準備了固定大小的記憶體空間,卻沒有檢查進來的資料有沒有超過,多出來的資料就會蓋到旁邊的記憶體。

蓋到哪裡、會造成什麼後果,要看情況;輕則程式當掉,嚴重時可能被人利用來做更多事。

發生什麼事

  • 9 月 15 日:nginx 釋出主線版 1.31.6 與穩定線 1.30.5
  • 漏洞編號 CVE-2026-90439:官方的更新紀錄寫的是:在特定設定下使用 HTTP/3,且 OpenSSL 為 3.5.0 以前的版本時,nginx 的工作行程(worker process)可能發生堆積記憶體(heap)緩衝區溢位
  • 受影響版本:nginx 官網的安全公告列為 1.29.2 到 1.31.5,嚴重度 medium(中等)
  • 已修正版本:1.31.6 以上、1.30.5 以上
  • 同一版還有其他調整:從 SSL 連線收到的 QUIC 傳輸參數擴充現在一律忽略,以及 location 判斷錯誤被忽略、geo 設定檔損毀時可能當機等錯誤修正

官方沒有說明這個溢位被利用後的具體後果,也沒有提到已經有人在攻擊,所以我不替它下更大的結論;較保守的假設是「至少可能讓工作行程出問題」,這是我的推測,不是官方說法。

我該怎麼檢查?

檢查內容 怎麼看 需要處理的情況
nginx 版本 nginx -v 落在 1.29.2 到 1.31.5
有沒有啟用 HTTP/3 看設定檔 listen 是否有 quic 有啟用
OpenSSL 版本 nginx -V 輸出的 built with OpenSSL 3.5.0 或更舊

給開發者的技術細節

  • 主線(mainline)與穩定線(stable)是 nginx 的兩條版本線:想要新功能用主線,想求穩定用穩定線。這次兩條線都有修正版,不需要為了修補而換線
  • 用 Docker 映像檔的話,要確認映像用的 nginx 版本,再拉新的 tag 重新部署;系統套件管理員安裝的,則看發行版是否已經把修正移植進來
  • 升級後用 nginx -t 檢查設定,再重新載入
  • 後續(10 月 14 日):nginx 又釋出 1.31.7,修補另外 5 個漏洞,其中一個也跟 HTTP/3 有關(CVE-2026-95101:HTTP/3 的未知框架內容可能被當成請求本文);如果你現在才在處理,直接升到更新的版本比較省事

我的看法

nginx 是我自己架設服務時幾乎一定會用到的元件,不管是網站反向代理還是 NAS 上的服務。這次的漏洞有條件限制:要有 HTTP/3、又要搭舊版 OpenSSL,所以不是每個人都中,但「條件限制」常常讓人覺得不急,然後就忘了。

我的習慣是把「nginx、OpenSSL 版本」當成定期要看的清單,而不是出事才看。如果你的服務是用 Docker 包好的,也別假設基底映像會自動更新,要主動重新建置。至於 HTTP/3,如果業務上沒有明確需要,多開一個功能就多一份攻擊面,不需要就先關掉也是一個選擇。

名詞小辭典

  • HTTP/3 / QUIC:新一代的網頁傳輸協定,建在 UDP 上,連線建立更快。
  • OpenSSL:很多伺服器軟體用來處理加密連線的函式庫。
  • 工作行程(worker process):nginx 實際處理連線請求的程式單位,一個 nginx 通常有多個。
  • 堆積記憶體(heap):程式執行時動態配置的記憶體區域,這次溢位發生的位置。

資料來源

常見問題

什麼是緩衝區溢位?
程式事先準備了一塊固定大小的記憶體來裝資料,卻沒有檢查進來的資料會不會超過,結果多出來的資料蓋到旁邊不該動的地方。就像一個杯子倒水倒過頭,水流到桌上。
我沒有開 HTTP/3 也要升級嗎?
官方的描述是「使用 HTTP/3」時才會發生,所以沒啟用 HTTP/3 的設定較不受影響。不過 nginx 版本本來就該跟著修正版更新,同一版也包含其他錯誤修正,建議還是排進升級計畫。
要怎麼知道自己是不是中招?
確認三件事:nginx 版本是不是落在 1.29.2 到 1.31.5 之間、設定檔裡有沒有啟用 HTTP/3(通常是 listen 指令加上 quic 參數)、系統用的 OpenSSL 是否為 3.5.0 或更舊。三項都符合,就屬於需要優先處理的情況。
LINE