在现代计算机科学领域,二进制程序漏洞挖掘技术是信息安全领域的一项重要研究内容,尤其在软件安全中扮演着关键角色。由于软件安全漏洞的存在可能导致信息安全风险,漏洞挖掘和防护工作就显得尤为关键。本文将围绕面向二进制程序的漏洞挖掘关键技术进行研究,探讨其逆向分析的各个环节及相关的核心技术。
要理解漏洞挖掘的概念。软件漏洞是指软件产品中存在的缺陷,这些缺陷可能会被恶意用户利用,导致未授权的数据访问或系统控制。因此,漏洞挖掘就是指通过一系列的分析和测试手段,发现这些安全漏洞的过程。
在面向源代码的漏洞挖掘中,研究人员能够通过分析源代码来发现潜在的安全问题。然而,由于商业保密和知识产权的考虑,许多软件厂商并不公开其产品的源代码。此外,即使源代码是可获取的,源代码分析也无法揭露编译和链接过程中可能引入的漏洞。因此,直接面向二进制程序的安全漏洞挖掘技术显得尤为重要,尽管这项技术面临更多的挑战。
面向二进制程序的安全漏洞挖掘可以分为动态和静态两种方法。动态漏洞挖掘依赖于程序运行时的状态和行为,而静态漏洞挖掘则依赖于对程序代码的静态分析。动态方法通过执行程序以发现运行时的异常行为,而静态方法则通过分析代码结构来预测可能的漏洞。每种方法都有其优缺点,动态分析容易产生误报,而静态分析可能会因为分析的复杂性而出现路径爆炸的问题。
为了解决这些问题,本文提出了以下几种创新技术:
1. 校验和感知的模糊测试方法:模糊测试是动态漏洞挖掘中常用的方法,但其在遇到校验和检测时常常受限。本文提出了绕过校验和检测的模糊测试方法,该方法不需要源代码,不依赖于具体数据格式及校验算法,显著扩大了模糊测试的应用范围。
2. 基于roBDD的离线细颗粒度污点分析方法:由于内存消耗和分析效率问题,细颗粒度动态污点分析的应用受到限制。本文提出了一种基于reduced ordered binary decision diagram(roBDD)的离线细颗粒度污点分析方法,有效地提高了污点分析的性能并减少了内存需求。
3. 导向性样本生成方法:为了提高模糊测试的效率,本文提出了一种基于细颗粒度污点分析的导向性样本生成方法,该方法可以自动识别影响安全敏感操作的输入数据片段,生成能直接影响安全敏感操作的畸形测试数据,从而提高动态漏洞挖掘的效率。
4. 基于混合符号执行的智能样本生成方法:本文还提出了一种基于混合符号执行和约束求解技术的智能样本生成方法,可以判断执行轨迹上是否潜在的安全漏洞,并对轨迹上的约束条件取反求解,生成遍历不同执行轨迹的新测试样本。
5. 面向脆弱性包络的整数溢出漏洞静态挖掘方法:针对整数溢出漏洞的特点,提出了相应的漏洞模型和脆弱性包络自动识别方法,通过分析脆弱性包络中的程序路径,有效降低了路径总数,缓解了路径爆炸问题。
本文还设计实现了两个系统,分别是软件安全漏洞动态挖掘系统TaintScope和整数溢出漏洞静态挖掘系统IntScope。这两个系统被成功应用于多个著名IT公司的产品中,发现并报告了多个零日漏洞,很多已通过中国国家信息安全漏洞库得到了记录。
面向二进制程序的漏洞挖掘技术是一个高度复杂的领域,涵盖了逆向工程、静态和动态分析、符号执行、模糊测试等多个方向。这些技术的结合使用可以大幅提高发现软件漏洞的效率和准确性,对于维护软件安全和信息安全具有重要的意义。随着研究的不断深入和技术的进步,未来漏洞挖掘技术将更加高效、智能,能够更好地保障我们数字世界的稳定与安全。
- 1
- 2
前往页