二进制程序的符号执行与模糊测试在漏洞挖掘中的应用

需积分: 39 98 下载量 24 浏览量 更新于2024-08-10 收藏 2.93MB PDF 举报
"这篇博士学位论文探讨了在MATLAB环境中一维条形码的检测技术,并结合了模糊测试和校验和感知的概念。文章着重讨论了在符号执行和二进制程序分析中的挑战,尤其是在处理数组推理和精确地址符号化时遇到的问题。 在高级编程语言如MATLAB中,数组操作是常见的数据处理方式。然而,在符号执行过程中,当索引值是符号变量时,对数组的访问涉及到符号地址推理,这是一个复杂的问题。现有的工具如EXE和Klee已经支持符号索引,利用约束求解器中的数组读写谓词收集约束条件。例如,用`write`和`read`原语可以描述对数组的写入和读取操作,帮助求解器推断不同条件下的变量取值。 在二进制程序层面,情况变得更加复杂。由于缺乏高级语言中的变量概念,数组的起始地址和长度难以确定,使得精确的符号化地址推理变得困难。尽管有研究如文献[77]尝试解决这个问题,但它们通常局限于特定场景,如堆对象的管理,无法处理局部变量。BitBlaze是早期在二进制级别进行符号地址推理的系统,通过在每次内存读写时进行处理。 论文还提到了软件安全漏洞挖掘的重要性,尤其是针对二进制程序的安全漏洞挖掘。静态分析方法可能存在高误报率,而动态模糊测试虽误报率低,但受限于测试数据生成的质量,特别是在面对包含校验和的复杂数据格式时。为此,论文提出了校验和感知的模糊测试技术,以克服现有方法在处理含有校验和的测试数据时的不足。 论文的主要贡献在于首次提出将校验和考虑进模糊测试的方法,增强了在程序执行中畸形样本的深度传递,并在静态漏洞挖掘中改进了漏洞建模和遍历策略。这些研究进展对于提高二进制程序漏洞挖掘的效率和准确性具有重要意义。"