CVE-2018-25291Project64 2.3.2版本中存在缓冲区溢出漏洞,该漏洞出现在插件目录设置字段。本地攻击者无需用户交互即可利用此漏洞,通过在应用程序的“选项 > 设置 > 目录”界面中输入极其冗长的字符串(例如6000字节的载荷)来覆盖内存。当设置被重新加载或打开时,应用程序无法正确处理该超长输入,导致程序崩溃,从而引发拒绝服务攻击。
该漏洞的根本原因是Project64在解析和存储“插件目录”配置项时,缺乏对输入字符串长度的有效边界检查。软件内部使用了固定大小的缓冲区来接收用户通过GUI界面输入的目录路径。当本地攻击者输入一个长度约为6000字节的恶意字符串时,数据量远超缓冲区的预留空间。这种输入导致缓冲区溢出,多余的字节会覆盖相邻的内存地址,可能破坏堆栈帧、指令指针或其他关键变量。由于该漏洞发生在本地,且不需要预先认证或用户交互,攻击者可以轻易地通过修改配置文件或直接在设置界面输入来触发。当应用程序尝试重新读取这些设置时,无效的内存引用导致异常处理失败,最终造成应用程序强制终止。尽管目前主要影响是拒绝服务,但内存损坏的本质意味着潜在的代码执行风险。