CVE-2018-25267UltraISO是一款广泛使用的光盘映像文件处理软件。在其9.7.1.3519及更早版本中,被发现存在一个严重的安全漏洞。该漏洞属于本地缓冲区溢出,具体出现在“制作CD/DVD映像”对话框的“输出文件名”输入区域。由于软件未对用户输入的文件名长度进行有效验证,攻击者能够精心构造包含特定数据的恶意字符串。当将该字符串粘贴到输出文件名字段时,会触发缓冲区溢出,覆盖关键的SEH(结构化异常处理)及SE处理程序记录。成功利用此漏洞可导致应用程序崩溃,造成拒绝服务攻击。
该漏洞的根本原因是UltraISO在处理“Make CD/DVD Image”对话框中的“Output FileName”字段时,未对输入数据的长度进行严格的边界检查,导致基于栈的缓冲区溢出。在Windows操作系统中,异常处理机制常被用于捕获运行时错误,而SEH(结构化异常处理)链存储在栈上。攻击者利用这一特性,通过构造特定长度的恶意字符串(约304字节的填充数据),精确覆盖栈上的SEH记录和后续的SE处理程序指针。攻击链通常包括:首先发送大量填充字符以溢出缓冲区并到达SEH结构位置;然后覆盖“Next SEH”指针(通常使用跳转指令如\xeb\x06\x90以跳过填充数据);最后覆盖“SE Handler”指针,使其指向系统内存中可执行的“POP POP RET”指令序列或攻击者植入的Shellcode。尽管当前公开的利用代码主要演示了导致拒绝服务的崩溃效果,但从技术层面分析,控制SEH记录意味着劫持了程序的异常处理流程,这为进一步的任意代码执行奠定了基础。该漏洞无需用户认证即可在本地触发。