天下漏洞,尽知其名
HIGH 重点关注

CVE-2026-102729 gx_binres_theme_load 主题缓冲区溢出漏洞

影响攻击者可触发越界写入,可能导致内存破坏或代码执行

AI 研判

gx_binres_theme_load() 在加载主题资源时,按请求的主题 ID 计算缓冲区大小,即使资源中不存在该 ID 的主题也会分配缓冲区。当主题 ID 大于等于资源声明的主题数量时,会分配零字节缓冲区,随后加载过程越过主题表末尾,将后续数据当作主题头并写入零字节缓冲区,造成越界写。

影响范围

gx_binres_theme_load

受影响的具体产品与版本范围暂无公开信息,涉及使用 gx_binres_theme_load() 处理不可信主题资源的实现。

漏洞详情

该漏洞属于越界写入(缓冲区溢出)。成因是函数未校验请求的主题 ID 是否超出资源声明的主题数量,导致分配零字节缓冲区后仍继续解析并写入 GX_THEME 及其表结构。攻击者可通过提供特制的主题资源文件触发,使写入越过缓冲区边界,破坏相邻内存。

利用条件与风险

利用前提是目标程序加载攻击者可控的主题资源文件;实战中可导致内存破坏,进而可能实现代码执行或拒绝服务,具体风险取决于运行环境。

修复建议

官方修复方案暂无公开信息;建议在加载前严格校验主题 ID 是否小于资源声明的主题数量,并对缓冲区大小做非零检查,避免对零字节缓冲区进行写入。

原始情报

`gx_binres_theme_load()` sizes its theme buffer for the theme it was asked for, and allocates it even when the resource holds no theme with that id. A theme id at or past the theme count declared by the resource gets a buffer of zero bytes. The load pass then walks past the end of the theme table, takes whatever follows as a theme header, and writes a `GX_THEME` and its tables into that zero-byte buffer.