安全漏洞总结:domParseChar 中的越界堆读取 漏洞概述 漏洞编号: #146 漏洞类型: 越界堆读取 (Out-of-bounds heap read) 触发条件: 在解析截断的 UTF-8 序列时, 函数会读取未初始化的堆内存。 具体原因: 当遇到多字节 UTF-8 序列的起始字节(如 )时,函数会读取后续字节,但未验证这些字节是否存在或有效。如果序列被截断,函数会越过 NUL 终止符,继续读取未初始化的堆内存。 影响范围 潜在影响: - 可能导致进程崩溃(拒绝服务)。 - 可能读取敏感数据(如果堆布局允许)。 受影响函数: 调用场景: 所有用户提供的元素/属性名称(如 , , 等)。 修复方案 建议修复: 在 中添加对连续字节的验证。 具体步骤: 1. 在读取连续字节之前,验证每个字节: - (a) 不是 NUL。 - (b) 符合 UTF-8 格式(例如,对于 4 字节序列,检查 )。 2. 如果任何检查失败,设置 并返回 0。 POC 代码