Node.js沙箱函式庫vm2繼WASM沙箱逃逸後,再修NodeVM巢狀執行設定漏洞
vm2的用途,是讓Node.js應用程式在受限制的環境中執行JavaScript,常用於線上程式執行、外掛功能、自動化腳本或讓使用者自訂邏輯的服務。問題在於,這些程式碼雖然被放進沙箱,但沙箱還是在同一個Node.js程序內運作,一旦隔離邊界被繞過,攻擊者就可能接觸到原本不該碰到的主機端能力。
vm2被編號為CVE-2026-44007的NodeVM巢狀執行漏洞,影響3.11.0及更早版本,修補版本為3.11.1。其漏洞情境是當開發者在NodeVM開啟nesting:true,卻同時以為已透過require:false關閉模組載入功能時,沙箱內程式碼仍可能載入vm2,再建立另一個內層NodeVM,並用攻擊者指定的設定執行主機命令。3.11.1的修補方式,是在這種矛盾設定出現時直接報錯,避免開發者誤判保護效果。
vm2近期安全修補是連續發生的版本更新。維護者先在3.10.5版修補CVE-2026-26956,該漏洞與WebAssembly例外處理機制有關,攻擊者若能控制交給vm2執行的JavaScript,可能讓主機端錯誤物件回到沙箱,進一步取得主機端程序能力。
在3.10.5之後,vm2維護者又於3.11.0版進行協調式安全發布,關閉13個安全通報,其中多項涉及完整沙箱逃逸與遠端程式碼執行風險。接著3.11.1修補NodeVM巢狀執行設定造成的沙箱逃逸問題,3.11.2又修補3項安全問題,其中2項列為RCE風險。因此,對仍使用vm2執行不受信任JavaScript的服務而言,升級至目前最新的3.11.2版本,才是較完整的處置方式。
vm2專案說明也提醒,vm2不應是執行不受信任程式碼時的唯一防線。若服務允許外部程式碼進入執行環境,開發者除了升級至3.11.2,也應檢查是否需要搭配獨立程序、容器、虛擬機器或雲端受託管執行環境,以降低沙箱邊界失效後的影響範圍。
Release v3.11.0 · patriksimek/vm2
Coordinated security release closing 13 advisories, plus a new bufferAllocLimit option and a realpath() method on the FileSystem adapter contract. Minor version bump because of the new public optio...
github.com
Comments (0)