Node.js 為三個現行分支發布緊急安全修復
目錄
你可能想知道
- 10 月 21 日的安全版本涵蓋哪些 Node.js 分支與漏洞?
- 即使無法立即安裝最新修補程式,使用已終止生命週期 Node.js 版本的組織為何仍應採取行動?
主要內容
Node.js 於台北時間 10 月 21 日發布安全更新,涵蓋現行的 26.x、24.x 與 22.x 發行分支。修補版本分別為 26.12.1、24.22.1 與 22.23.4。根據該專案的安全公告,此次版本更新修補 10 項漏洞:4 項高危、3 項中危及 3 項低危。各分支的最高嚴重度皆為 HIGH。該專案也警告,已終止生命週期(EOL)的版本可能受到相同問題影響,並鼓勵使用者改用受支援的版本。
這次更新值得重視,因為 Node.js 是廣大開發與維運生態系的一部分。前端建置流程、後端 API 與 AI 代理環境可能仰賴相同的執行時期,而 npm 套件與部署映像可能讓舊版持續存在,即使團隊早已更新應用程式程式碼。因此,當務之急是採取實際行動:確認部署所用的分支、安裝對應的修補版本,並檢查相關的連線、壓縮與憑證驗證元件是否也已更新。
最受關注的問題是 CVE-2026-111497,這是一項Brotli 解碼器越界寫入漏洞。官方說明指出,此漏洞可能導致遠端程式碼執行。此次更新涵蓋的三個現行分支 26.x、24.x 與 22.x 全部受影響。Brotli 用於解碼壓縮內容,因此透過此路徑處理資料的系統應優先安裝修補程式。實際曝險程度可能取決於應用程式如何處理傳入或中介內容,但團隊應先確認執行時期與使用方式,不要逕自認定部署環境安全無虞。
另外三項漏洞被評為高危。CVE-2026-105482 涉及主機名稱包含空字元並遭截斷時的 DNS 解析問題;26.x、24.x 與 22.x 均受影響。CVE-2026-105483 涉及以全形數字表示 IP 位址時,可繞過 TLS 憑證主機名稱驗證;公告列出的受影響版本為 26.x 與 24.x。CVE-2026-106069 則是另一項 TLS 主機名稱驗證繞過問題:主機經寬鬆解析後解析為 IP 位址時便會受到影響,且涵蓋全部三個分支。這些問題說明,除了廣受關注的壓縮漏洞之外,也應重視主機名稱解析與憑證檢查。
並非所有高危問題都影響每個現行分支。例如,CVE-2026-105483 列出的受影響分支為 26.x 與 24.x,不包括 22.x。因此,務必將官方受影響版本資訊與正式環境實際執行的版本進行比對,而不是把此次更新視為所有分支都完全相同的修補程式。組織也應檢查容器、持續整合映像、開發者工作站與封裝工具中內嵌的執行時期。只更新主要伺服器,可能會讓其他環境繼續使用有漏洞的版本。
中危項目包括 CVE-2026-105481:持久連線在請求送出前便處理回應;CVE-2026-106072:對非正規 IPv4 主機名稱的 TLS 憑證驗證不當;以及 CVE-2026-106074:crypto.randomUUID() 或 randomInt() 的快取值寫入使用者啟動快照與單一可執行應用程式(SEA)後,不同程序可能重複使用相同值。這三項均影響 26.x、24.x 與 22.x。亂數問題對使用快照或 SEA 封裝的團隊尤其重要,因為這些部署方式可能改變程序間狀態的初始化與重複使用方式。
三項低危問題在部分情況下也只影響特定分支。CVE-2026-106070 僅影響 26.x,涉及 ZIP 標頭驗證失敗後可能傳回攻擊者可控的前綴位元組。CVE-2026-106071 也僅列於 26.x,涉及權限模型中的檔案系統萬用字元授予過多存取權限。CVE-2026-106073 涉及透過 fs.realpathSync 繞過權限模型,影響全部三個分支。雖然這些問題的嚴重度評為低,但依賴執行時期限制作為防禦層之一的應用程式,仍應留意權限模型相關問題。升級後應檢視這些控制措施,不應將其視為修補程式的替代品。
安全版本也更新了 Node.js 使用的第三方元件。c-ares、根憑證套件(包括與 eMudhra 中繼 CA 相關的處理)及 Undici 的更新適用於全部三個分支。OpenSSL 更新納入 24.x 與 22.x,SQLite 更新則納入 22.x。發行說明列出的版本包括 c-ares 1.34.9、OpenSSL 3.5.9,以及以下 Undici 版本:26.x 為 8.12.2、24.x 為 7.30.1、22.x 為 6.29.1。這些相依元件的變更提醒我們,執行時期安全性除了取決於 Node.js 核心程式碼,也可能仰賴隨附的函式庫。
建議的應對方式是將每項部署對應至其分支,並升級至相符的修補版本:26.12.1、24.22.1 或 22.23.4。團隊應確認正式環境容器與 CI 映像中的執行時期版本,檢查基礎映像與本機開發工具,並確認鎖定檔或建置流程不會繼續載入舊版執行時期。若 Node.js 由中央統一管理,請更新相關發行套件或映像,並重新建置相依應用程式。部署後,團隊可驗證實際生效的版本,並檢查壓縮處理、DNS 解析與 TLS 主機名稱檢查是否依預期運作。
同一天,PHP 也發布了安全更新。其修補版本為 8.5.12、8.4.27、8.3.36 與 8.2.35,修正兩項可能導致未經驗證的遠端程式碼執行的重大問題:CVE-2026-109618 與 CVE-2026-109619。對同時營運 Node.js 與 PHP 服務的組織而言,這代表多種語言執行時期同時面臨更新壓力。務實的應對方式是先部署官方修復,再將反向代理、壓縮協商與憑證鏈設定納入應用程式堆疊的整體評估。
Node.js 仍是雲端服務、加密貨幣交易介面與 AI 代理工具鏈常用的基礎。此次版本更新的最高嚴重度為 HIGH,並明確指出 Brotli、TLS 與 DNS 處理是重要關注領域。使用受支援分支的團隊,降低風險最直接的方式是安裝相符的安全版本,並確認所有執行時期副本都已更新。仍在執行 EOL 分支的系統,則應依該專案的建議,盡可能儘早遷移至受支援版本,因為這些系統可能持續曝險,且無法取得相同的安全修復。
重點摘要表
| 項目 | 說明 |
|---|---|
| Node.js 修補版本 | 26.x 更新至 26.12.1,24.x 更新至 24.22.1,22.x 更新至 22.23.4。 |
| 漏洞數量與嚴重度 | 此次版本修補 10 項問題:4 項高危、3 項中危及 3 項低危。最高嚴重度為 HIGH。 |
| 重大 Brotli 問題 | CVE-2026-111497 是 Brotli 解碼器越界寫入漏洞,官方公告指出可能導致遠端程式碼執行;三個分支全受影響。 |
| TLS 與 DNS 疑慮 | 高危問題包括涉及空字元的 DNS 截斷,以及兩項 TLS 主機名稱驗證繞過問題。 |
| 元件更新 | 三個分支皆更新 c-ares、根憑證與 Undici;OpenSSL 更新適用於 24.x 與 22.x,SQLite 更新適用於 22.x。 |
| EOL 版本 | Node.js 專案警告,EOL 版本也可能受到影響,並建議改用受支援的版本。 |
| 同期 PHP 修復 | PHP 修補版本 8.5.12、8.4.27、8.3.36 與 8.2.35 修正 CVE-2026-109618 與 CVE-2026-109619。 |
後續...
Node.js 此次版本更新凸顯,執行時期維護應視為持續性的營運責任,而非只在重大 CVE 出現時才採取一次性應對。團隊可透過追蹤正式環境、測試環境、CI、容器與本機工具中的執行時期版本,維持明確的升級流程,並在發布安全更新時查閱相關官方發行說明,降低遺漏曝險的可能性。
接下來應完成升級,確認各環境確實執行修補版本,並檢視周邊信任邊界:壓縮輸入、名稱解析、憑證驗證與權限控制。仍依賴 EOL Node.js 的組織應規劃遷移至受支援分支。這項工作可能需要時間,但繼續使用不受支援的執行時期,也代表團隊無法獲得定期安全更新,因而難以應對未來的漏洞。
最後編輯時間:2026/10/22
