虫 区溢出漏洞 上面表格里列出的蠕虫即使经过多年,在当前的互联网上还经常被捕捉到。 栈溢出漏洞是相对比较容易发现的漏洞,静态动态分析的方法对于此漏洞的挖掘已经相当成熟,因此这类漏洞,特别是服务端程序中,目前基本处于日渐消亡的状态。 实例: - 暴风影音stormtray进程远程栈缓冲区溢出漏洞 长度检查不充分的串连接操作。
- Sun Solaris snoop(1M)工具远程指令执行漏洞( CVE-2008-0964 ) 无长度检查的*printf调用。
- Novell eDirectory HTTPSTK Web服务器栈溢出漏洞 无长度检查的memcpy调用。
- FlashGet FTP PWD命令超长响应栈溢出漏洞
- Imatix Xitami If-Modified-Since头远程栈溢出漏洞。 极其危险的sscanf类调用。
- Borland StarTeam Multicast服务用户请求解析远程栈溢出漏洞( CVE-2008-0311 )
- Microsoft DirectShow MPEG2TuneRequest 溢出漏洞( CVE-2008-0015 ) 手抖,缓冲区的指针被当做缓冲区本身被数据覆盖溢出。
2.3.1.2 堆缓冲区溢出
导致堆缓冲区溢出的来源与栈溢出的一致,基本都是因为一些长度检查不充分的数据操作,唯一不同的地方只是发生问题的对象不是在编译阶段就已经确定分配的栈缓冲区,而是随着程序执行动态分配的堆块。 实例:
- HP OpenView NNM Accept-Language HTTP头堆溢出漏洞( CVE-2009-0921) 典型的先分配后使用的堆溢出问题。
- PHP (phar extension)堆溢出漏洞
堆溢出特有的溢出样式:由于整数溢出引发Malloc小缓冲区从而最终导致堆溢出。
2.3.1.3 静态数据区溢出
发生在静态数据区BSS段中的溢出,非常少见的溢出类型。 实例:
- Symantec pcAnyWhere awhost32远程代码执行漏洞(CVE-2011-3478)
2.3.1.4 格式串问题
在*printf类调用中由于没有正确使用格式串参数,使攻击者可以控制格式串的内容操纵*printf调用越界访问内存。此类漏洞通过静态或动态的分析方法可以相对容易地被挖掘出来,因此目前已经很少能够在使用广泛的软件中看到了。
实例:
- Qualcomm Qpopper 2.53格式串处理远程溢出漏洞(CVE-2000-0442)