二进制程序安全漏洞挖掘:动态与静态分析结合

需积分: 39 98 下载量 198 浏览量 更新于2024-08-10 收藏 2.93MB PDF 举报
"中第三列给出了轨迹文件-基于matlab的一维条形码检测" 这篇文档主要探讨了在安全领域中的二进制程序漏洞挖掘技术,尤其是针对基于MATLAB的条形码检测系统。作者实现了一个名为TaintReplayer的原型系统,该系统利用Pin工具进行执行轨迹记录,并在Windows 7环境下进行测试。实验选择了Adobe Acrobat和Google Picasa这两款广泛应用的软件作为测试对象,分别记录它们处理PNG图片时的执行轨迹。实验结果显示,Adobe Acrobat的轨迹文件大小为2.69 GB,包含190,617,272条x86指令,而Google Picasa的轨迹文件为3.02 GB,包含229,020,734条x86指令。 进一步的分析中,作者使用C++标准模板库STL的set和bitset结构进行细粒度的污点分析,以评估不同数据结构在漏洞分析中的性能。然而,基于STL set的系统运行速度过慢,无法在合理时间内完成分析,因此仅对比了基于roBDD(Reduced Ordered Binary Decision Diagrams)和STL bitset的污点分析系统,关注其内存使用量和分析时间。 文档指出,软件安全漏洞挖掘是当前网络安全领域的关键研究方向,因为软件漏洞是信息安全风险的主要来源。传统的源代码漏洞挖掘方法受限于源代码的可获得性以及编译和链接过程中的问题。因此,直接针对二进制程序的漏洞挖掘研究显得至关重要。然而,这种方法面临着静态分析的高误报率和动态分析的测试数据生成难题。 文章提出了一种校验和感知的模糊测试方法,以解决在遇到校验和检查时模糊测试的局限性。模糊测试是一种动态漏洞挖掘技术,通常具有较低的误报率,但其效果受测试数据质量的影响。在面对包含完整性校验的数据格式时,现有的测试数据生成方法往往效率低下。因此,提出的新方法旨在增强对这类复杂数据格式的测试能力,从而提高动态漏洞挖掘的效率。 这篇文档深入研究了二进制程序漏洞挖掘的挑战,特别是静态和动态分析方法的优缺点,并提出了针对校验和的模糊测试策略,以改善现有动态漏洞挖掘技术的效能。这些研究成果对于提高软件安全性,预防和减少漏洞带来的潜在危害具有重要意义。