Node.js生態系常用的JavaScript沙箱函式庫vm2,近期被揭露存在重大沙箱逃逸漏洞CVE-2026-22709,該漏洞CVSS風險分數高達9.8分,屬於重大(Critical)風險等級。攻擊者可藉由特定JavaScript程式碼觸發漏洞,繞過vm2原本設計的沙箱限制,並在宿主環境中執行任意程式碼。vm2維護團隊於2025年10月重啟停止更新近兩年的專案,並建議使用者升級至vm2 3.10.3或更新版本,以降低遭濫用風險。

vm2是一套用於Node.js環境的沙箱工具,設計目的是在同一個Node.js行程中,限制不受信任JavaScript程式碼對系統資源的存取,常見於線上程式執行平臺、外掛機制與可自訂腳本功能等應用情境。根據NPM平臺統計,vm2在過去一年間,每週下載量長期維持約100萬次,顯示該函式庫至今仍被大量專案實際採用。

vm2專案維護者、同時也是原作者的Patrik Simek在GitHub安全通報中指出,CVE-2026-22709與vm2在處理Promise.prototype.then與Promise.prototype.catch回呼函式的淨化機制有關。在vm2 3.10.0以及更早版本中,相關回呼函式的淨化流程可被繞過,使攻擊者得以逃脫沙箱隔離機制,並執行任意程式碼。

針對這項漏洞,vm2專案於後續版本中逐步進行修補。開發者說明,3.10.1版僅能部分緩解CVE-2026-22709的沙箱逃逸問題,而在隨後釋出的3.10.2版中,則進一步收緊修補邏輯,以避免攻擊者透過其他手法繞過防護機制。開發者亦提供示範程式碼,說明在未完整修補情況下,漏洞如何被觸發並於宿主系統上執行指令。

維護者確認3.10.3版完成已知資安漏洞修補

事實上,vm2過去數年已多次被揭露存在沙箱逃逸漏洞,包括CVE-2022-36067CVE-2023-29017CVE-2023-30547。vm2作者Patrik Simek於2023年曾坦言,vm2在設計上難以作為強安全邊界,並因此將專案標註為停止維護。不過,他在2025年10月宣布重啟專案時指出,考量vm2仍被大量使用,且缺乏具備相同彈性的替代方案,選擇持續維護並修補已知漏洞,嘗試透過改善架構與開發流程,降低實際使用風險。Patrik Simek於2月間向外媒表示,上述漏洞皆已於vm2 3.10.3版中完成修補。

vm2官方文件與NIST皆提醒:應用層沙箱難以作為完整安全邊界

vm2專案在官方文件中也明確提出重要安全聲明,指出該函式庫不應被視為可承擔完整安全邊界的隔離機制,無法保證在所有情境下防禦惡意行為。這樣的定位亦與NIST在資安實務指引中的觀點一致。NIST指出,應用層沙箱本身難以構成完整的安全邊界,對於需要執行不受信任程式碼的服務,仍應審慎評估其使用情境,並視需求採用容器、虛擬機等作業系統層級的隔離機制,或其他具備更嚴謹安全邊界的執行環境,以降低單一防護機制失效所帶來的整體風險。

熱門新聞

Advertisement