查看原文
其他

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

综合编译 代码卫士 2022-05-23

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

编译:代码卫士


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


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

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


“沙箱突围“


如下发布的 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 试图限制的。“


递归漏洞


研究人员在长达数月的时间里一直都在调查位于 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”。




奇安信代码卫士 (codesafe)

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

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



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存