vm2 是 node.js 的代码测试沙箱,一般用于测试不受信任的 JavaScript 代码。但近日德国网络安全研究小组 CISPA Helmholtz 的一组研究表明,Node.js 的 vm2 沙箱并不安全,这个包的一些版本可能受到原型污染(prototype pollution)攻击,攻击方可以绕过 vm2 的安全控制并进行远程代码执行(RCE) 攻击。
JavaScript 是基于原型的语言,当创建新对象时,它们会继承原型“对象”的属性和方法,包含 toString、constructor 和hasOwnProperty 等基本功能。而原型污染(prototype pollution)正是 JavaScript 和其他基于对象的语言的漏洞,允许攻击者向敏感对象动态注入属性,从而运行任意代码。
在 Snyk 发布的 PoC 中,研究人员 Cristian-Alexandru 展示了 vm2 的原型污染负载和任意代码执行。(测试详情请点此查看)。 Staicu 表示: vm2 本应严格控制对全局对象/特权操作的访问,然而在测试中,这些安全控制可以被绕过。
如果你也在使用 vm2,建议及时升级到 3.9.4 或更高版本,避免遭受原型污染的影响。
猜你喜欢:暂无回复。