查看: 186|回复: 3

isolated-vm类型混淆漏洞可导致宿主机RCE

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
isolated-vm 是一个用于在 Node.js 中执行不可信 JavaScript 的库,开发者可借助它访问 V8 引擎的 Isolate 接口,构建完全隔离的 JavaScript 运行环境。近日,EndorLabs 披露了该库中存在一个高危类型混淆漏洞,可导致攻击者在宿主机上实现远程代码执行(RCE)。

该漏洞位于 ExternalCopy 函数中,该函数负责在 Isolate 之间复制数据。为优化性能,ExternalCopy 使用 transferList 传递大型 ArrayBuffer,将内存从源缓冲区分离并交给目标。问题在于,数据转移时重建逻辑对字节数组列表进行了两次遍历,第二次遍历盲目信任第一次的结果。当 transfer_list 数组中的元素被定义为 getter 时,两次遍历可能返回不同值,攻击者利用这一 TOCTOU(时间检查/时间使用)弱点,可解引用攻击者控制的指针。

漏洞虽未分配 CVE 编号,但影响所有在 isolate 中运行不可信代码且共享至少一个 Reference 的嵌入者。宿主机若将受调用方影响的数组作为 transferList 传入,也会直接受影响。攻击者可通过 ivm.Reference 构造恶意 transferList 并触发漏洞,成功利用可导致宿主进程崩溃(拒绝服务)或控制流劫持,进而可能在宿主机上执行任意代码。

isolated-vm 官方已在 6.2.0 和 7.0.1 版本中修复该问题,修复方式为在复制过程中禁止运行用户 JavaScript。建议所有使用该库的开发者尽快升级至 6.2.0 或 7.0.1 及以上版本,避免在共享 Reference 的环境中运行不可信代码。

EndorLabs 指出,漏洞根因在于原生的 C++ 胶水层:该层以非内存安全语言编写,在安全敏感操作中会重新读取攻击者控制的 JavaScript 对象,一次未检查的强制类型转换即可将隔离原语变为完整逃逸。对于构建在 V8 Isolate 沙箱之上的应用,升级前应暂停向沙箱内传递对宿主机敏感对象的引用,并审计现有 transferList 使用方式。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: isolated-vm类型混淆漏洞可导致宿主机RCE

这个分析写得很清楚,特别是TOCTOU那部分,一下子就把问题本质点透了。之前还真没想过transferList里的getter能被利用成两次遍历结果不一致,这种边角料逻辑确实容易被人忽略。已经升级到7.0.1了,感谢分享。
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: isolated-vm类型混淆漏洞可导致宿主机RCE

这个漏洞分析得很到位,TOCTOU 的利用思路确实经典。对于跑不可信代码的隔离环境来说,能通过 getter 在两次遍历之间做手脚,说明光靠 JS 层限制还不够,C++ 胶水层对对象属性的信任还是有风险。 升级到 6.2.0 / 7.0.1 应该是最直接有效的办法。不过在实际项目里,如果暂时没法升级,至少得按照建议暂停把宿主敏感对象引用传给沙箱,同时好好审一下 transferList 的构造逻辑,别让不可信输入直接参与。感谢楼主搬运这个信息,很有价值。
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: isolated-vm类型混淆漏洞可导致宿主机RCE

感谢分享这个漏洞分析,信息很清晰。isolated-vm 本身定位就是处理不可信代码,出现这种绕过隔离的漏洞确实值得警惕。特别是 TOCTOU 结合 C++ 胶水层这个根因,说明即使外层 API 设计得再安全,底层实现一旦对攻击者可控对象做非内存安全操作,还是容易出问题。 已经用这个库的开发者确实应该尽快升级,同时也需要重新审视一下 transferList 的使用,尤其是那些会从沙箱外部传入的场景。感觉这类问题也提醒我们,给沙箱传引用时最好默认不信任,能少传就少传。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-8-21 23:30 , Processed in 0.025107 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部