该论文是一篇系统化知识(SoK)研究,聚焦于真实世界场景下的多层间接调用分析。间接调用(如通过函数指针、虚函数表或跳转表进行的调用)是现代二进制程序(尤其是C/C++代码)中控制流完整性问题的主要来源,也是攻击者篡改控制流、实施面向返回编程(ROP)等攻击的重要目标。现有研究提出了大量间接调用分析技术,但大多在理想化基准或受限环境中评估,缺乏对真实软件生态中复杂性的系统考量。本文首次系统性地梳理并比较了多层间接调用分析技术(包括静态分析、动态分析、混合分析以及基于类型推导、值集分析、指针分析等不同原理的方法),重点讨论各技术在面对真实世界二进制程序——如编译器优化产生的间接跳转、内联汇编、动态生成代码、虚拟调用、异常处理中的跳转表等——时的准确性、召回率与性能开销。论文还构建了涵盖常见真实开源项目的评测基准,对多种代表性分析工具(如CodeSonar、SVF、Andersen指针分析等)进行了统一评估,揭示了现有方法在精度与可扩展性之间的显著权衡。此外,作者提出了多层分析框架的概念:结合粗粒度的类型匹配与细粒度的流敏感分析,通过分层过滤来降低误报率同时保持可接受的召回率。实验结果表明,单纯依赖单一层次的分析在真实世界二进制上往往失效,而多层协同能够显著提升可用性。该文提供了亲历性的实践指南,包括如何选择分析策略、如何处理不透明谓词与混淆代码,以及如何将分析结果集成到控制流完整性(CFI)加固流程中。适合从事二进制分析、漏洞挖掘、编译器安全与CFI研究的学者和工程师阅读。
💡 推荐理由: 间接调用分析是CFI、漏洞检测与逆向工程的核心基础;真实世界二进制复杂度常使传统分析失效,该SoK系统化对比了现有方法的优劣,为蓝队选择合适的分析工具与加固策略提供了重要参考依据。
🎯 建议动作: 研究跟进