信息网络安全 ›› 2025, Vol. 25 ›› Issue (9): 1357-1366.doi: 10.3969/j.issn.1671-1122.2025.09.004
收稿日期:2025-05-19
出版日期:2025-09-10
发布日期:2025-09-18
通讯作者:
薛磊 作者简介:薛磊(1987—),男,山东,副教授,博士,CCF高级会员,主要研究方向为智能网联系统安全、二进制程序分析|张际灿(1998—),男,山东,博士研究生,主要研究方向为软件安全、程序分析|杜平心(1990—),男,北京,研究员,硕士,主要研究方向为软件安全
基金资助:
XUE Lei1(
), ZHANG Jican1, DU Pingxin2
Received:2025-05-19
Online:2025-09-10
Published:2025-09-18
摘要:
在软件安全分析领域,二进制程序分析技术正面临编译器优化复杂化与结构信息缺失带来的双重挑战,传统工具链普遍存在分析流程割裂、依赖人工操作、语义表达不足等问题,难以满足结构化、自动化漏洞挖掘任务的需求。文章提出一种基于增强型语义程序依赖图的智能化二进制分析方法,通过统一建模控制流、数据依赖与符号路径约束信息,实现对程序语义的三维结构化表达。在实验评估中,增强型语义程序依赖图展现了显著的性能优势,在 OpenSSL 项目无优化级别下,SPDG 恢复的基本块数比 Ghidra 提升了60.5%,控制边数提升了42.5%;SPDG在数据依赖追踪上也比 Ghidra 提升了287.1%,恢复了超过13万条数据依赖链。此外,在符号执行覆盖率方面,SPDG 在 OpenSSL 的无优化级别下达到 64.7%,优于Angr的60%。在漏洞检测任务中,SPDG 成功识别了 9 个漏洞样例,仅误报 1 次,准确率达 90.0%,显著高于其他工具。
中图分类号:
薛磊, 张际灿, 杜平心. 基于增强型语义程序依赖图的智能化二进制分析方法[J]. 信息网络安全, 2025, 25(9): 1357-1366.
XUE Lei, ZHANG Jican, DU Pingxin. Intelligent Binary Analysis Method Based on Enhanced Semantic Program Dependency Graph[J]. Netinfo Security, 2025, 25(9): 1357-1366.
表1
SPDG 配置体系分类
| 维度 | 核心参数 | 描述 |
|---|---|---|
| 控制流构建 | cfg_type, context_sensitivity_level | 控制快速或模拟执行构建模式,上下文敏感级别(1~3) |
| 数据依赖分析 | track_tmps, cross_ function, def_use_threshold | 控制是否追踪临时变量、是否启用跨过程追踪与定义使用阈值 |
| 符号执行策略 | symbolic_memory, concretize_memory, max_steps | 控制符号内存启用与路径深度 |
| 图数据库同步 | sync_nodes, sync_edges, sync_constraints, batch_size | 控制Neo4j节点、边、约束同步策略 |
| 运行时日志 | log_level | 控制日志详细程度 |
表6
OpenSSL控制流恢复结果
| 优化 等级 | 工具 | 时间/s | 基本块数量/个 | 边数量 /条 | 基本块提升百分比 | 边提升 百分比 |
|---|---|---|---|---|---|---|
| -O0 | Ghidra | 88 | 21533 | 32452 | — | — |
| IDA Pro | 65 | 23901 | 33120 | 10.9% | 2.0% | |
| Binary Ninja | 98 | 25884 | 35648 | 20.2% | 9.8% | |
| SPDG_fast | 67 | 34575 | 46250 | 60.5% | 42.5% | |
| SPDG_emulated | 80 | 34582 | 46260 | 60.6% | 42.5% | |
| -O1 | Ghidra | 51 | 17411 | 27305 | — | — |
| IDA Pro | 45 | 19821 | 29401 | 13.8% | 7.7% | |
| Binary Ninja | 82 | 22100 | 32190 | 26.7% | 17.8% | |
| SPDG_fast | 58 | 30100 | 40143 | 72.9% | 47.0% | |
| SPDG_emulated | 60 | 30109 | 40153 | 72.8% | 47.1% | |
| -O2 | Ghidra | 70 | 17791 | 27904 | — | — |
| IDA Pro | 50 | 19230 | 30210 | 8.1% | 8.2% | |
| Binary Ninja | 85 | 21500 | 32380 | 20.9% | 16.0% | |
| SPDG_fast | 66 | 29812 | 40101 | 67.7% | 43.5% | |
| SPDG_emulated | 72 | 29821 | 40112 | 67.7% | 43.6% | |
| -O3 | Ghidra | 91 | 18535 | 29185 | — | — |
| IDA Pro | 65 | 20310 | 31222 | 9.6% | 7.0% | |
| Binary Ninja | 112 | 22490 | 33100 | 21.0% | 13.4% | |
| SPDG_fast | 80 | 31258 | 42406 | 68.6% | 45.3% | |
| SPDG_emulated | 88 | 31267 | 42417 | 68.6% | 45.3% |
| [1] | XU Weiyang, LI Yao, TANG Yong, et al. Research on Cross-Architecture Vulnerabilities Searching in Binary Executables[J]. Netinfo Security, 2017, 17(9): 21-25. |
| 徐威扬, 李尧, 唐勇, 等. 一种跨指令架构二进制漏洞搜索技术研究[J]. 信息网络安全, 2017, 17(9): 21-25. | |
| [2] | HORWITZ S, REPS T, BINKLEY D. Interprocedural Slicing Using Dependence Graphs[J]. ACM Transactions on Programming Languages and Systems, 1990, 12(1): 26-60. |
| [3] | THE ANGR PROJECT CONTRIBUTORS. Introduction[EB/OL]. (2021-06-05)[2025-05-10]. https://docs.angr.io/en/latest/quickstart.html. |
| [4] | BASQUE Z L, BAJAJ A P, GIBBS W, et al. Ahoy SAILR! There Is No Need to DREAM of C: A Compiler-Aware Structuring Algorithm for Binary Decompilation[C]// USENIX. 33rd USENIX Security Symposium. Berkeley: USENIX, 2024: 361-378. |
| [5] | THE ANGR PROJECT CONTRIBUTORS. Intermediate Representation[EB/OL]. (2021-06-05)[2025-05-10]. https://docs.angr.io/advanced-topics/ir. |
| [6] | FERGUSON J, KAMINSKY D. Reverse Engineering Code with IDA Pro[M]. Burlington: Syngress, 2008. |
| [7] | GHIDRA DEVELOPMENT TEAM. How to Create Program Dependency Graph in Ghidra?[EB/OL]. (2021-07-10)[2025-05-10]. https://github.com/NationalSecurityAgency/ghidra/issues/3491. |
| [8] | KHATTAK U F, AL-NAFFAKH H A H, ALI A. A Review on Graph Representation for Object-Oriented Programming[EB/OL]. (2024-04-05)[2025-05-10]. https://doi.org/10.1051/bioconf/20249700131. |
| [9] | FERRANTE J, OTTENSTEIN K J, WARREN J D. The Program Dependence Graph and Its Use in Optimization[J]. ACM Transactions on Programming Languages and Systems, 1987, 9(3): 319-349. |
| [10] | RAMALINGAM G. On Sparse Evaluation Representations[EB/OL]. (2002-04-28)[2025-05-10]. https://doi.org/10.1016/S0304-3975(00)00315-7. |
| [11] | GITHUB SECURITY LAB. QL Language Specification[EB/OL]. (2021-05-20)[2025-05-10]. https://codeql.github.com/docs/ql-language-reference/ql-language-specification/. |
| [12] | FRANCIS N, GREEN A, GUAGLIARDO P, et al. Cypher: An Evolving Query Language for Property Graphs[C]// ACM. The 2018 International Conference on Management of Data. New York: ACM, 2018: 1433-1445. |
| [13] | YAMAGUCHI F, GOLDE N, ARP D, et al. Modeling and Discovering Vulnerabilities with Code Property Graphs[C]// IEEE. 2014 IEEE Symposium on Security and Privacy. New York: IEEE, 2014: 590-604. |
| [14] | JOERN PROJECT CONTRIBUTORS. Joern Documentation[EB/OL]. (2019-10-23)[2025-05-10]. https://docs.joern.io/quickstart/. |
| [15] | ALLAMANIS M, BROCKSCHMIDT M, KHADEMI M. Learning to Represent Programs with Graphs[EB/OL]. (2018-05-04)[2025-05-10]. https://doi.org/10.48550/arXiv.1711.00740. |
| [16] | CADAR C, DUNBAR D, ENGLER D R. Klee: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs[C]// USENIX. 8th Symposium on Operating Systems Design and Implementation. Berkeley: USENIX, 2008: 209-224. |
| [17] | SHOSHITAISHVILI Y, WANG Ruoyu, SALLS C, et al. SOK: (State of) The Art of War: Offensive Techniques in Binary Analysis[C]// IEEE. 2016 IEEE Symposium on Security and Privacy. New York: IEEE, 2016: 138-157. |
| [18] | HE Jingxuan, SIVANRUPAN G, TSANKOV P, et al. Learning to Explore Paths for Symbolic Execution[C]// ACM. The 2021 ACM SIGSAC Conference on Computer and Communications Security. New York: ACM, 2021: 2526-2540. |
| [1] | 李奕轩, 贾鹏, 范希明, 陈尘. 基于控制流变换的恶意程序检测GNN模型对抗样本生成方法[J]. 信息网络安全, 2024, 24(12): 1896-1910. |
| [2] | 陈梓彤, 贾鹏, 刘嘉勇. 基于Siamese架构的恶意软件隐藏函数识别方法[J]. 信息网络安全, 2023, 23(5): 62-75. |
| [3] | 王宇, 吕良双, 夏春和. 基于语义分析的Windows恶意软件检测方法[J]. 信息网络安全, 2023, 23(10): 58-63. |
| [4] | 文伟平, 刘成杰, 时林. 基于数据流追溯的空指针引用挖掘系统[J]. 信息网络安全, 2022, 22(9): 40-45. |
| [5] | 肖晓雷, 赵雪莲. 我国跨境数据流动治理的研究综述[J]. 信息网络安全, 2022, 22(10): 45-51. |
| [6] | 文伟平, 方莹, 叶何, 陈夏润. 一种对抗符号执行的代码混淆系统[J]. 信息网络安全, 2021, 21(7): 17-26. |
| [7] | 蔡满春, 王腾飞, 岳婷, 芦天亮. 基于ARF的Tor网站指纹识别技术[J]. 信息网络安全, 2021, 21(4): 39-48. |
| [8] | 梁晓兵, 孔令达, 刘岩, 叶莘. 轻量级嵌入式软件动态二进制插桩算法[J]. 信息网络安全, 2021, 21(4): 89-95. |
| [9] | 毕亲波, 赵呈东. 基于STRIDE-LM的5G网络安全威胁建模研究与应用[J]. 信息网络安全, 2020, 20(9): 72-76. |
| [10] | 李明磊, 黄晖, 陆余良. 面向漏洞挖掘的基于符号分治区的测试用例生成技术[J]. 信息网络安全, 2020, 20(5): 39-46. |
| [11] | 张艺, 刘红燕, 咸鹤群, 田呈亮. 基于授权记录的云存储加密数据去重方法[J]. 信息网络安全, 2020, 20(3): 75-82. |
| [12] | 崔艳鹏, 冯璐铭, 闫峥, 蔺华庆. 基于程序切片技术的云计算软件安全模型研究[J]. 信息网络安全, 2019, 19(7): 31-41. |
| [13] | 陈虎, 周瑶, 赵军锁. 针对特定文件结构和关键指令的符号执行优化方法[J]. 信息网络安全, 2018, 18(9): 86-94. |
| [14] | 王夏菁, 胡昌振, 马锐, 高欣竺. 二进制程序漏洞挖掘关键技术研究综述[J]. 信息网络安全, 2017, 17(8): 1-13. |
| [15] | 张曙光, 咸鹤群, 刘红燕, 侯瑞涛. 云存储环境中基于离线密钥传递的加密重复数据删除方法研究[J]. 信息网络安全, 2017, 17(7): 66-72. |
| 阅读次数 | ||||||
|
全文 |
|
|||||
|
摘要 |
|
|||||