觀點 · 資訊分享
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 9 月 15 日同時釋出 1.31.6 和 1.30.5,修補一個跟 HTTP/3 有關的緩衝區溢位漏洞(CVE-2026-90439),有開 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 或更舊。三項都符合,就屬於需要優先處理的情況。
接著讀
全部觀點 →Azure Application Gateway 開始支援 HTTP/3:手機換網路不用重新連線,但預覽版還不能搭 WAFMicrosoft 讓 Azure Application Gateway 進入 HTTP/3(QUIC)的公開預覽,可以在單一監聽器上開啟。連線建立更快、換網路不必重連,但預覽階段不支援 WAF 閘道、IPv6、多網站監聽器,也不能用 CLI 或 Terraform 設定。閱讀 →Cloudflare WAF 開始檢查「伺服器回了什麼」:攻擊有沒有得逞看得出來,免費方案也能用Cloudflare 推出 WAF 完整交易偵測與回應規則,把請求和伺服器的回應放在一起判斷,在回應送出前就能攔下。所有方案(含免費)都能用,第一批受管規則針對 php2shell 漏洞。閱讀 →OpenAI API 推出 12 小時提示快取:同一段話重複問 AI,用越多次越便宜OpenAI 讓 API 可以把重複使用的提示詞「記住」12 小時(原本只有 30 分鐘)。第一次要多付一點,但同一段內容用到第 3 次就開始省錢,用 12 次大約省下 7 成。閱讀 →