事件经过
vm2的NodeVM沙箱在配置为允许'https'内置模块时,向沙箱代码暴露主机的实际https.globalAgent对象而不是隔离的代理,因为某些方法调用绕过只读包装器并直接转发到实时主机对象。
影响分析
vm2是一个常见的构建块,被一些基于JavaScript的AI智能体和代码解释器工具用于沙箱化LLM生成或用户提交的代码;沙箱中的主机对象泄漏破坏了智能体代码执行功能所依赖的隔离保证,可能实现从智能体代码执行沙箱到主机进程的权限提升或横向移动。
攻击途径
当NodeVM被显式配置为允许require('https')时,内置模块加载器将主机模块包装在只读代理中,但是诸如Agent.prototype.on()之类的方法调用被转发到底层真实主机对象而不是沙箱副本,向沙箱/不受信任代码暴露主机进程的实时https.globalAgent,并启用进一步的沙箱逃逸原始程序。
受影响系统
vm2版本3.11.3至3.11.6
缓解措施
升级到vm2 3.11.8或更高版本(解决此问题和12个相关沙箱逃逸CVE)。vm2的维护者也建议避免同进程JS沙箱作为单一安全边界——对于LLM代理生成的脚本等真正不受信任的代码,使用单独的进程/容器/虚拟机。