Node.js 沙箱易受原型污染攻击

f86b59c95cb12308f633dce50ed5272a.gif 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

70cd15545ff841f88cfd5363ca551226.gif

研究人员表示,用于测试不可信 JavaScript 代码的沙箱 vm2 中存在一个漏洞,可使恶意人员规避该库的安全控制并执行远程代码执行攻击。

Vm2的 GitHub 页面显示,该库是“一个能够通过白名单 Node 内置模块运行不可信代码的沙箱。安全地运行!”然而,CISPA 信息安全德国亥姆霍兹中心(德国的一个网络安全研究组织)发现该库易受原型污染攻击。

原型污染是JavaScript 和其它基于对象的语言中的一种漏洞类型,可使攻击者动态地将属性注入敏感对象中,运行任意代码。

c759b695f3ef4e0616be63113da3a223.gif

“沙箱突围“

如下发布的 PoC展示了几行代码即可利用该漏洞,在主机上执行原型污染和远程代码执行漏洞。

const {VM} = require("vm2");
let vmInstance = new VM();


let code = `    
    res = eval('import(\\'./foo.js\\');')    
    res.__proto__.__proto__.polluted = res.__proto__.__proto__.toString.constructor("return this")().process.mainModule.require("child_process").execSync("touch HACKED").toString();
`;
vmInstance.run(code);
console.log(polluted);

虽然该漏洞被称为“原型污染漏洞”,但协助发现并报告该漏洞的研究员 Cristian-Alexandru Staicu 表示,更好的说法应当是“沙箱突围”。

Staicu 表示,“在所发布的 PoC 中,我们同时展示了一个原型污染 payload 和一个任意代码执行漏洞。它们都是沙箱突围的结果。Vm2 应该阻止对全局对象/特权操作(如要求)的访问权限,我们展示了攻击者如何绕过该安全控制。”

虽然该漏洞并未提供主机设备的根访问权限,但它提供了对 Node.js API的完整访问权限,而这正是 vm2 试图限制的。“

d20593fec977fd6f07a901ba1aec4958.gif

递归漏洞

研究人员在长达数月的时间里一直都在调查位于 JavaScript 沙箱中的漏洞。

3月份,研究人员报告了位于另外一个沙箱 isolated-vm 中的沙箱突围漏洞,可使攻击者获得对 Node.js 上下文 “function” 对象的引用。

研究人员还在至少三个其它沙箱库中发现了类似漏洞。由于目前还在漏洞提交阶段且补丁尚未发布,因此 Staicu 并未透露这些漏洞的详情。他指出,“截至目前,我们的调查结果显示通过 ES6 代理难以对 JavaScript 代码进行沙箱化。我们在多数所分析系统中发现了突围情况,因此在使用这些库执行恶意代码时必须非常小心。”


推荐阅读

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

关于原型污染漏洞的完整指南

jQuery CVE-2019-11358 原型污染漏洞分析和修复建议

【漏洞预警】jQuery 前端库出现罕见的原型污染漏洞,影响范围广泛(含技术分析)

原文链接

https://portswigger.net/daily-swig/node-js-sandboxes-are-open-to-prototype-pollution

https://snyk.io/vuln/SNYK-JS-VM2-1585918

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

afb91125b9072ec5dcf0bd7dbf47d094.png

8732993232731b6af1608a041f5be5d6.png

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   3a5f7354b378d0122e4cf7d9f4b2de15.gif 觉得不错,就点个 “在看” 或 "赞” 吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值