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