二进制程序漏洞挖掘:混合符号执行与模糊测试研究

需积分: 50 98 下载量 74 浏览量 更新于2024-08-10 收藏 2.93MB PDF 举报
"面向二进制程序的混合符号执行技术-基于matlab的一维条形码检测" 这篇博士学位论文探讨了面向二进制程序的混合符号执行技术,特别关注其在漏洞挖掘中的应用。混合符号执行是一种结合了动态和静态分析的技术,旨在克服传统符号执行的局限性,例如路径爆炸问题和处理矢量数据单元的挑战。 符号执行在处理依赖于系统API或第三方库的代码时,由于缺乏源代码,往往难以模拟这些调用的影响。例如,当涉及数组或字符串操作时,如果索引是符号变量,分析工具可能无法准确追踪赋值的具体位置,这在分析函数如`strncpy`时会遇到问题,无法确定实际拷贝了多少字符。 近年来,随着约束求解器和符号执行引擎性能的提升,研究人员开始关注提高漏洞挖掘的效率和效果,而不是追求完备性。Prefix是一个早期的符号执行工具,后来发展为Prefast,被微软用于源代码静态分析。Prefast通过抽象语法树转换、过程调用拓扑排序和路径约束检验,实现过程间的符号执行。它能检测指针相关的漏洞,如未初始化的指针引用和空指针解引用,并且在路径结束时检查资源泄露。为了控制路径爆炸,Prefix限制每个函数内检查的路径数量,并利用函数摘要加速后续的模拟执行。 面向二进制程序的漏洞挖掘比源代码级别的分析更具挑战性,因为商业软件通常不公开源代码,而且编译和链接过程可能导致新的漏洞。静态分析的误报率高,而动态模糊测试虽然误报率低,但依赖于有效的测试数据生成,对于复杂数据格式的测试效率较低。 论文的主要贡献在于提出了校验和感知的模糊测试方法,这是对现有动态漏洞挖掘技术的增强,解决了在遇到校验和检查机制时的局限性。这种方法增强了畸形样本在程序执行中的传递深度,改进了静态漏洞挖掘中的建模和遍历策略,提升了整体的漏洞发现能力。 这篇论文的研究成果对于提升二进制程序的安全性,尤其是针对那些无法获取源代码的系统,具有重要的理论和实践价值。通过混合符号执行和模糊测试的创新结合,为解决软件安全漏洞问题提供了新的思路和工具。