软件所漏洞研究取得新进展
文章来源: | 发布时间:2017-05-13 | 【打印】 【关闭】
众所周知,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。内存破坏漏洞是众多攻击(包括APT攻击等)的根源。栈溢出漏洞是一类经典的内存破坏漏洞,但是随着一系列安全机制在系统中的大范围应用,以及编译器提供的安全检查的默认开启,传统的栈溢出漏洞越来越少见。近几年来,堆相关的漏洞,如堆溢出,逐渐取代栈溢出成为最流行的漏洞类型之一。根据微软2013年的报告针对Windows7的攻击中,25%利用的是堆溢出漏洞。由于发现漏洞既是攻击者攻击的前提,也是防御者修补或者防御的基础。因而如何快速、准确的发掘堆溢出漏洞,一直是攻防双方关注的重点问题。
近期,中国科学院软件研究所软件智能分析协同创新团队,针对这一问题提出了一个新的基于执行路径离线分析的方案,并构建了一套原型系统HOTracer,将有助提高软件安全保障能力。
传统的漏洞挖掘,主要基于模糊测试等手段进行。但由于软件自身的复杂性、堆溢出漏洞触发条件的复杂性,以路径覆盖率为导向的模糊测试技术及其他技术(如AddressSanitizer),在挖掘堆溢出漏洞方面有所欠缺。这些技术严重依赖于输入样本去执行有漏洞的程序路径及触发漏洞本身,同时可能遗漏同一路径多个漏洞中的若干个。
软件智能分析协同创新团队针对这一问题展开了长期研究工作。HOTracer系统通过对代表性的程序动态执行路径进行离线深入分析,深度挖掘路径中可能存在的堆溢出漏洞。具体而言,通过对执行路径中堆相关的操作即分配、释放及访问进行识别,并关联相关的堆分配/访问操作(即分配和访问同一堆对象);同时跟踪输入对堆操作的影响,对堆溢出漏洞进行建模,找出潜在漏洞;进而构造样本验证潜在的漏洞。
HOTracer总体框架
HOTracer具有以下特点,一是漏洞挖掘过程避免了盲目尝试,通过关联相关的堆访问操作,聚焦潜在的漏洞位置,并针对性地发掘漏洞,效率更高;二是挖掘过程不需要输入样本动态触发程序异常,通过离线分析保证了对路径的分析深度和全面性。比如在实验过程中,我们在对Word软件的已知漏洞CVE-2014-1761执行路径深入分析之后,在同一条路径上又发现了另外一个未知的堆溢出漏洞,影响所有版本的Word软件。
基于HOTracer系统,在研究中团队对Word、iTunes、RealPlayer、QQPlayer等常用软件进行了分析,共发现未知漏洞47个,漏洞已通报相关厂商,部分已得到修复,并获得CVE(公共漏洞和暴露)编号。对此,QQPlayer厂商腾讯公司对团队的发现给予了奖励。
该论文全体作者都是软件所软件智能分析协同创新团队成员,全部来自可信计算与信息保障实验室,包括团队苏璞睿研究员、冯登国研究员、张超副教授、杨轶副研究员、黄桦烽高级工程师、贾相堃博士。其中苏璞睿是中科院软件所研究员,协同创新团队负责人,张超是清华大学副教授,协同创新团队客座研究员。该成果是协同创新团队协作的最新成果。
发掘的未知漏洞清单
目前该项成果已形成论文,并被USENIX Security 2017录用。USENIX Security Symposium(USENIX安全论坛)是网络与系统安全领域四大顶级会议之一。