Node.js沙箱函式庫vm2再爆重大逃逸漏洞
vm2用途是讓Node.js應用程式在受限制環境中執行不受信任的JavaScript程式碼,常見情境包括線上程式執行、SaaS應用的使用者腳本以及自動化工具等,透過隔離沙箱內程式碼,避免其直接存取主機端的程序、檔案系統或其他敏感Node.js API。
CVE-2026-26956破壞了vm2的隔離特性,官方確認問題可在Vm2 3.10.4搭配Node.js v25.6.1的x64 Linux環境觸發,觸發條件是攻擊者控制傳入VM.run()的程式碼,且Node.js版本具備WebAssembly例外處理與JSTag支援。
vm2的防護仰賴JavaScript層的程式碼轉換與跨環境物件代理機制,而該漏洞攻擊路徑則透過WebAssembly在更低層級捕捉例外,使主機端產生的TypeError未經vm2清理就回到沙箱內。攻擊程式可再沿著該物件的建構子關係,取得主機端的程序物件,進而呼叫child_process執行主機命令。
在此之前,vm2今年初也曾揭露沙箱逃逸漏洞CVE-2026-22709,由於Promise.prototype.then與Promise.prototype.catch的callback清理機制可被繞過,攻擊者可能藉此逃脫沙箱隔離機制,並執行任意程式碼。受影響版本為3.10.0及更早版本,vm2已在3.10.2修補,嚴重性同樣達重大等級。
Sandbox Escape
In vm2 for version 3.10.0, `Promise.prototype.then` `Promise.prototype.catch` callback sanitization can be bypassed. This allows attackers to escape the sandbox and run arbitrary code. ```js c...
github.com
Comments (0)