该项目提供了一个最小的 C++ 实现,用于触发 DjVuLibre 中已知的堆越界写入漏洞。该代码并未武器化此漏洞,仅复现错误的执行路径,以便检查和理解该问题。
该漏洞源于对 MMR 编码图像块的解析器。在处理过程中,MMRDecoder::scanruns 函数将水平游程解码到行缓冲区时,没有执行充分的边界检查。通过使用连续的 0 长度水平游程,可以导致缓冲区溢出,进而产生一次越界写(OOB-write)。
此实现是台湾新竹国立阳明交通大学(NYCU)网络安全课程期末项目的一部分。其重点是理解解析逻辑、未经检查的缓冲区假设以及畸形图像数据如何组合在一起,进而在真实世界的库中造成内存安全故障。
参见 BUILDING 文档。
参见 CONTRIBUTING 文档。