jerryscript jerry-snapshot 工具:无限长的字面量列表解析器 → process_generate 中的全局缓冲区溢出 (OOB 写入)

作者: h0rk1p创建于 2026年6月20日更新于 2026年6月20日

jerryscript jerry-snapshot tool: unbounded literals-list parser -> global-buffer-overflow (OOB write) in process_generate 严重程度: 中 | CVSS 3.1: 3.9 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L | CWE: CWE-787 | 受影响: jerryscript @b7069350c2e52e7dc721dfb75f067147bd79b39b

概要

jerry-snapshot 命令行工具的 --load-literals-list-format 解析器 (process_generate) 循环读取文本文件中的字面量项,每个项都将 num_of_lit 增加 1,并将 magic_string_items[num_of_lit] (一个 8 字节指针) 和 magic_string_lengths[num_of_lit] (一个 4 字节由攻击者控制的长度) 写入,而没有对 num_of_lit 进行限制,以防止其超过 JERRY_LITERAL_LENGTH (4096),这两个固定大小的全局数组的大小。具有超过 4096 个正数值项的字面量列表会将数据写入 magic_string_items (大小为 32768 = 4096*8) 后面的相邻全局变量 (input_buffer),这是一个可控制的全局缓冲区溢出写入。这在 jerry-snapshot 工具中,该工具仅在 -DJERRY_CMDLINE_SNAPSHOT=ON (文档中描述,支持,但默认情况下为关闭;默认的 jerry 二进制文件不包含它) 环境下构建。

内容来源: jerryscript-project/jerryscript