CVE-2016-20037xwpe编辑器1.5.30a-2.1及更早版本存在严重的栈缓冲区溢出漏洞。该漏洞源于程序对输入数据缺乏足够的边界检查,本地攻击者无需用户交互即可利用此漏洞。通过向程序传递包含262字节垃圾数据及随后shellcode的恶意命令行参数,攻击者能够破坏堆栈结构,覆盖指令指针,最终实现本地任意代码执行或导致应用程序崩溃,完全控制系统。
该漏洞属于典型的基于栈的缓冲区溢出。在xwpe处理命令行参数时,未对输入字符串的长度进行严格限制。当攻击者输入长度超过预设缓冲区大小的数据时,多余的数据将溢出到相邻的栈内存中。攻击者可构造特定的恶意载荷,即先输入约262字节的垃圾数据以填充栈空间直至覆盖返回地址,紧接着放置Shellcode。当受影响的函数尝试返回时,CPU会从栈中弹出被篡改的返回地址,从而跳转执行攻击者的Shellcode。由于CVSS向量显示无需任何权限(PR:N)和用户交互(UI:N),且影响范围覆盖机密性、完整性和可用性,这使得低权限用户也能轻易利用此漏洞进行提权或造成拒绝服务。