Empc:基于路径覆盖的符号执行有效路径优先级排序
密码学与安全
2025-05-07 v1
摘要
符号执行是一种强大的程序分析技术,能够形式化地推理程序行为的正确性并检测软件缺陷。它可以系统地探索被测程序的执行路径,但面临一个固有的局限性:路径爆炸。当符号执行遇到需要符号推理的路径数量过多(与程序规模呈指数关系)时,就会发生路径爆炸。这严重影响了符号执行的可扩展性和性能。为了解决这个问题,先前的工作利用各种启发式方法对符号执行的路径进行优先级排序。它们使用静态规则或启发式方法对指数级数量的路径进行排序,并探索排名最高的路径。然而,在实践中,这些工作往往无法泛化到多样化的程序。在这项工作中,我们提出了一种新颖且有效的基于路径覆盖的路径优先级排序技术,名为Empc。我们的关键见解是,并非所有路径都需要进行符号推理。与传统的路径优先级排序不同,我们的方法利用一小部分路径作为最小路径覆盖(MPC),该覆盖可以覆盖被测程序的所有代码区域。为了鼓励路径优先级排序的多样性,我们计算多个MPC。然后,我们引导符号执行的搜索在多个MPC内的少量路径上进行,而不是在指数级数量的路径上。我们基于KLEE实现了我们的技术Empc。我们对Empc进行了全面评估,以考察其在代码覆盖、缺陷发现和运行时开销方面的性能。评估表明,与KLEE的最佳搜索策略相比,Empc可以多覆盖19.6%的基本块,与最先进的工作cgs相比,可以多覆盖24.4%的代码行。Empc还比KLEE的最佳搜索策略多发现了24个安全违规。同时,Empc可以显著降低KLEE的内存使用量,最高可达93.5%。
引用
@article{arxiv.2505.03555,
title = {Empc: Effective Path Prioritization for Symbolic Execution with Path Cover},
author = {Shuangjie Yao and Dongdong She},
journal= {arXiv preprint arXiv:2505.03555},
year = {2025}
}
备注
To appear on 46th IEEE Symposium on Security and Privacy