如果網站跑在 Node.js 上,這幾天應優先檢查執行環境的安全更新。新加坡網絡安全局(CSA)於 2026 年 10 月 30 日警告,Brotli 解壓縮漏洞 CVE-2026-111497 已有遭利用的通報;Node.js 已在 10 月 21 日提供修補。
對站長來說,關鍵是應用會不會解壓縮外界提供的 Brotli 資料,以及正式服務是否真的換成修補後的 Node.js。只更新網站套件,或看到 CDN 有開防護,都不足以確認執行環境已經安全。
這個漏洞在什麼情況下會觸發?
Brotli 是壓縮格式。這次問題出在解碼器處理異常壓縮資料時,可能寫出內部緩衝區的範圍。Node.js 官方指出,若攻擊者能提供應用會交給 node:zlib 解壓的 Brotli 資料,便可能造成程序崩潰、記憶體資料外洩,甚至遠端程式碼執行。
因此,安裝 Node.js 本身不代表任何請求都能觸發漏洞。要檢查的是資料流:使用者上傳、請求內容,或伺服器向外部網站取得的壓縮回應,是否會進入受影響的解碼器。網站向訪客傳送 Brotli 壓縮檔案,與應用解壓攻擊者控制的資料,是不同方向的操作。
哪些 Node.js 版本需要更新?
以下列出這次安全修補的版本門檻。同一分支中低於門檻的版本需要更新;部署時可採用該分支目前受支援、已包含修補的較新版本。
| Node.js 分支 | 本次修補版本 |
|---|---|
| 22.x | 22.23.4 |
| 24.x | 24.22.1 |
| 26.x | 26.12.1 |
Node.js 20 已結束支援,不能等這個分支收到同一批修補。仍使用舊分支的專案,應與維護者安排升級至受支援版本,同時確認框架與原生模組的相容性。
評級也要看來源:Node.js 在 10 月 21 日公告將這項問題列為高風險(high);CSA 的 10 月 30 日警告則列出 CVSS v3.1 9.8 分,並指出已有遭利用通報。這些通報不表示你的網站已遭入侵,但已足以把更新排到優先處理。
自架網站與容器:檢查正在服務的程序
請維護者確認正式應用使用的 Node.js 版本,包括容器、程序管理工具與背景工作。SSH 登入後看到的系統版本,可能與網站程序實際使用的版本不同。
容器部署應更新基礎映像、重新建置並部署,再核對新容器的執行版本;自架服務則須更新執行環境並重新啟動相應程序。部署後檢查登入、API、檔案處理與背景工作,保留可回復的上一版部署資料。若發現異常程序或不明外連,應保留日誌並請維護者進一步調查。
放在 Vercel,也要確認重新部署
Vercel 在 10 月 29 日的公告說明,自 10 月 28 日美西時間上午 11 時起,新部署使用已修補的 Node.js。既有專案應重新部署;仍設定 Node.js 20.x 的專案,須先改用受支援的 22.x 或 24.x。
Vercel 的 WAF 防護只涵蓋經過其網路的流量,無法涵蓋函數向其他伺服器取得的回應。使用 Vercel 前台、但另有自架 API 或後端的網站,仍須更新那些伺服器。自架 Next.js 也應檢查底層 Node.js,不能只看 Next.js 套件版本。
若交由主機商維護,可直接詢問:「這個站實際使用哪個 Node.js 版本?是否已包含 CVE-2026-111497 修補並重啟服務?」請對方提供執行版本或修補依據,比只確認防火牆已開啟更有用。
資料核對日期:2026 年 11 月 1 日。封面為 AI 生成的漏洞概念插畫,並非攻擊畫面。
