vm2 中的关键远程代码执行漏洞,vm2 是一款广泛使用的 ... 笔记

vm2 中的关键远程代码执行漏洞,vm2 是一款广泛使用的 Node.js 沙箱库

GitLab 威胁研究小组在 Node.js 库 vm2 中发现了一个关键性的沙箱逃逸漏洞,CVSS 3.1 评分为 10.0。该缺陷允许远程代码执行,根源在于 vm2 自身 README 中的默认配置。当启用 require.external 时,该漏洞在 vm2 3.11.6 及更早版本中可直接利用。GitLab 确认其未使用 vm2,该漏洞已通过私有报告并在 3.11.7 版本中迅速修复。然而,针对此特定攻击的修复并未完全解决更广泛的配置风险。使用 require.external 的开发人员必须手动加固配置,通过限制 require.root 并将 context 设置为'sandbox'。鉴于 vm2 历史上反复出现沙箱逃逸漏洞,对于真正不可信的代码,建议避免使用 vm2,转而采用容器或独立进程。该漏洞的工作原理是允许沙箱内的代码 require vm2 本身,从而获取宿主机的 require() 函数。这使得能够创建第二个无限制沙箱,具备完整的执行能力。3.11.7 版本中的修复阻止了直接攻击,但如果 require.root 范围过宽,仍会留下漏洞。