
近日,Node.js沙箱庫vm2曝出一個高危漏洞(CVE-2026-22709),攻擊者可利用該漏洞突破沙箱限制,在底層主機系統上執行任意代碼。
這款開源的vm2庫能夠創建安全執行環境,支持用戶運行不受信任的JavaScript代碼,且限制其訪問文件系統,是實現代碼隔離執行的常用工具。
vm2歷來被廣泛應用于支持用戶腳本執行的SaaS平臺、在線代碼運行工具、聊天機器人及各類開源項目中,僅在GitHub平臺上,使用該庫的項目就超20萬個。不過因沙箱逃逸漏洞頻發,該項目曾在2023年停止維護,且被判定為不適用于運行不受信任的代碼。
去年10月,項目維護者決定重啟vm2項目,并發布3.10.0版本,該版本修復了當時已知的所有漏洞,同時保持“向下兼容至Node 6版本”的特性。
目前該庫在npm平臺上依舊擁有極高的人氣,過去一年間,其周下載量穩定在100萬次左右。
![]()
漏洞根源:數據清理機制存在疏漏
此次曝出的最新漏洞,根源在于vm2庫未能對處理異步操作的Promise組件實現完善的沙箱隔離,導致無法確保代碼始終在獨立的隔離環境中執行。
vm2雖會對其自身內置Promise實現所綁定的回調函數做數據清理處理,但異步函數返回的是全局Promise對象,該對象的.then()和.catch()回調函數并未得到妥善的清理校驗。
項目維護者表示:“在vm2 3.10.0版本中,Promise.prototype.then和Promise.prototype.catch的回調函數清理機制可被繞過”,而這一漏洞“會讓攻擊者得以突破沙箱限制,運行任意代碼”。
據開發者介紹,vm2 3.10.1版本已對該CVE-2026-22709沙箱逃逸漏洞做出部分修復,后續推出的3.10.2版本則進一步強化了修復措施,避免漏洞被再次繞過。
同時開發者還公開了相關演示代碼,展示了攻擊者如何在vm2沙箱中觸發該漏洞、實現沙箱逃逸,并在主機系統上執行命令。
![]()
已發布的漏洞利用片段
鑒于在受影響的vm2版本中,CVE-2026-22709漏洞的利用方式極為簡易,官方建議所有用戶盡快將庫版本升級至最新版。
![]()
歷史漏洞:沙箱逃逸問題屢發
vm2此前也曾多次曝出高危沙箱逃逸漏洞,其中包括被披露的CVE-2022-36067,攻擊者利用該漏洞可突破隔離環境,在主機系統上執行命令。
2023年4月,研究人員發現另一同類漏洞(CVE-2023-29017),且相關利用程序隨即被公開;同月晚些時候,研究人員又發布了CVE-2023-30547漏洞的利用程序,這也是影響vm2的又一個高危沙箱逃逸漏洞。
其開發者表示,目前vm2的最新版本為3.10.3,所有已披露的漏洞均在該版本中得到妥善修復。
參考及來源:https://www.bleepingcomputer.com/news/security/critical-sandbox-escape-flaw-discovered-in-popular-vm2-nodejs-library/
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.