CVE-2017-20226Mapscrn 2.0.3版本存在严重的栈缓冲区溢出漏洞。本地攻击者无需认证或交互,通过提交特制的超大输入缓冲区触发溢出,利用精心构造的返回地址和Shellcode覆盖栈内存,进而执行任意代码或引发拒绝服务,严重影响系统安全。
该漏洞的根源在于Mapscrn 2.0.3在接收并处理外部输入数据时,未能正确执行边界长度检查,触发了经典的栈缓冲区溢出。攻击者通过构造一个包含特定布局的恶意缓冲区进行利用:首先是用于填充栈空间的垃圾数据,接着是精心计算的返回地址,随后是NOP滑梯(用于提高跳转成功率),最后是实质性的Shellcode。当程序执行复制操作时,缓冲区溢出覆盖了栈上的基址指针(EBP)和返回地址(EIP)。函数返回时,CPU跳转至攻击者控制的地址执行Shellcode。由于攻击向量为本地且无需特殊权限(PR:N),该漏洞极易被利用以获取系统控制权或造成拒绝服务。CVSS 3.1评分高达8.4,属于高危漏洞。