最新研究指出:Node.js 的 VM2 沙箱易受原型污染攻擊
vm2 是 node.js 的代碼測試沙箱,一般用于測試不受信任的 JavaScript 代碼。但 近日 德國網絡安全研究小組 CISPA Helmholtz 的一組研究表明,Node.js 的 vm2 沙箱并不安全, 這個包的一些版本 可能受到原型污染( prototype pollution )攻擊,攻擊方可以 繞過 vm2 的安全控制并進行 遠程代碼執行 (RCE) 攻擊。
JavaScript 是基于原型的語言,當創建新對象時,它們會繼承原型“對象”的屬性和方法,包含 toString、 constructor 和hasOwnProperty 等基本功能。而原型污染 ( prototype pollution )正 是 JavaScript 和其他基于對象的語言的漏洞,允許攻擊者向敏感對象動態注入屬性,從而運行任意代碼。
在 Snyk 發布的 PoC 中,Staicu 展示了 Vm2 的 原型污染負載和任意代碼執行。 (測試詳情請點此查看 )。 研究人員 Cristian-Alexandru Staicu 表示: Vm2 本應嚴格控制對全局對象/特權操作的訪問,然而在測試中,這些安全控制可以被繞過。
如果你也在使用 vm2,建議及時升級到 3.9.4 或更高版本,避免遭受原型污染的影響。