# QuickJS js_print_object 使用后释放漏洞
## 概述
在 QuickJS 的 `js_print_object` 函数中存在一个使用后释放(use-after-free)漏洞。该漏洞源于在打印某些对象(如数组、Map、Set)时,执行了可能引发副作用的操作,从而导致在遍历过程中底层数据结构被修改。
## 影响版本
存在该问题的 QuickJS 版本:未明确具体版本,需检查受影响的 `quickjs` 代码中的 `js_print_object` 实现。
## 细节
- 在打印数组时,函数首先获取数组长度 `len1`,之后遍历数组。
- 在遍历过程中调用 `js_print_value`,该操作并非无副作用,可能会触发用户定义的回调。
- 攻击者可通过回调修改数组长度,导致 `len1` 超出数组实际长度,造成访问越界和 use-after-free。
- 类似问题也出现在打印 Map/Set 对象时:遍历 `ms->records` 列表过程中,`js_print_value` 的调用可能删除其中元素,导致 use-after-free。
## 影响
攻击者可利用该漏洞在上下文相关的堆内存中触发使用后释放,可能导致程序崩溃或执行任意代码,进而造成信息泄露或控制流劫持。
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: High impact issue in QuickJS: use-after-free in js_print_object [434196651] - Issue Tracker -- 🔗来源链接
标签:
神龙速读暂无评论