liblcf v0.8.1 在 liblcf 的 `Read... 笔记

liblcf v0.8.1 在 liblcf 的 ReadInt() 函数中存在整数溢出,导致越界读取和拒绝服务。

由 Ron E 于 8 月 18 日发布:一个精心制作的 RPG Maker 存档文件(.lsd)可以触发 liblcf 的 lcfstrings 压缩整数解码逻辑(LcfReader::ReadInt())中的整数溢出,从而导致无限循环的移位和累加。溢出的值稍后用于缓冲区大小分配和结构解析,从而导致大量的内存访问请求和解析错误。重现步骤1. 使用附加的 .lsd 文件(参见 PoC 部分)。2. 运行:./lcfstrings...