CVE-2016-20048iSelect 1.4.0-2+b1版本存在严重的本地缓冲区溢出漏洞。由于程序在处理 -k/--key 参数时未正确验证输入长度,攻击者可通过提交超长的恶意参数覆盖堆栈内存。成功利用该漏洞可导致应用程序崩溃或以用户权限执行任意代码,对系统机密性、完整性和可用性造成严重影响。
该漏洞属于典型的堆栈缓冲区溢出。iSelect在处理命令行参数 -k/--key 时,使用了固定大小为1024字节的堆栈缓冲区来存储用户输入,但未进行严格的长度校验。攻击者可以精心构造包含NOP sled、Shellcode及返回地址的恶意输入。当输入数据超过1024字节时,缓冲区边界被突破,多余的字符将覆盖堆栈上的返回地址。当函数返回时,程序流程被劫持跳转到Shellcode执行,从而允许攻击者获取系统控制权限。由于攻击向量为本地,攻击者需具备本地访问权限,但无需用户交互即可利用。