实际上,所有这些安全缺陷都与数字运算产生不可信赖、用户可修改数值有关,潜在的溢出结果数据被用来作为进行诸如内存分配或缓冲区索引之类的关键操作。Kowshik表示,“通过利用整数溢出来重写任意存储位置,黑客能够以超级用户权限来运行安全关键应用,在现实世界软件中的整数溢出安全缺陷实例中,攻击者可以使用任意代码的地址来覆盖程序需要跳转的地址。”以下整数溢出除了打印错误值之外并不进行任何操作,因此该程序并不会造成破坏:
X = 0;
if (a > MAX_INT /2 && b > MAX_INT / 2)
/* x will *not* be equal to a + b */
x = a + b;
print(“x = %d\n”, x);
但是,有时候一个恶意用户可以借助整数溢出来控制内存分配尺寸,并且让系统执行恶意操作,诸如以下代码:
x = get_some_number_from_a_packet()
/*overflow in computation */
P = malloc(x * sizeof(int));
/* bad problem here */
P[x-1] = 0;
这种方法看似有些麻烦,是许多脚本小子(script-kiddies)们使用的方法,不过,借助于最新的现成恶意软件工具,只需点击几下鼠标就可以实现这种复杂的攻击。
二、Web漏洞利用工具集(Web Exploit Toolkits)
Web漏洞利用工具集已经存在了很长时间,目前已经存在了许多不同的工具集,诸如MPack、IcePack、AdPack,当然还有Neosploit。花钱不多即可从网上买到这类工具,购买后一个小时内即可将其激活。购买者所需要做的就是增加一个键盘记录器路径,输入所希望的数据发送目的地,并将其运行在某个服务器上。然后就是发送垃圾信息来引诱攻击目标到陷阱网站上。