返回首页

vm2 沙箱逃逸(GHSA-cfcw-xp6x-25gj)迁移实战

沙箱逃逸(GHSA-cfcw-xp6x-25gj)迁移实战

迁移背景

vm2 的沙箱逃逸漏洞(CVSS 9.8)+ 项目停止维护,意味着这不是打补丁,而是换方案。本篇给出可操作的迁移路线。

第一步:盘点

找出所有使用 vm2 的位置(含间接依赖):

 ls vm2
rg -l "require('vm2')|from 'vm2'" .

第二步:按场景选替代方案

场景 A:执行可信代码,只需隔离命名空间

  • 用 Node 内置 vm 模块即可,但注意它不是安全沙箱。

场景 B:执行不可信代码,需要强隔离

  • 独立子进程 + seccomp/AppArmor 限制系统调用;
  • 或容器(Docker 单次执行模式);
  • 或 Firecracker/gVisor 微虚拟机(多租户场景)。

场景 :纯数据计算、无 I/O

  • 用受限表达式求值器(如 expr-eval)替代完整 JS 运行时。

第三步:渐进替换

  1. 对每个调用点先加"请求级隔离"兜底(独立进程);
  2. 按风险从高到低迁移,回归测试;
  3. 在依赖审计工具中 ban 掉 vm2,防止回潮。

小结

沙箱迁移的关键是先兜底、再替换。在彻底迁走之前,先用进程级隔离挡住最坏情况,是每个生产团队都该做的过渡动作。

评论