中文

CFG2VEC:用于跨架构软件逆向工程的层次图神经网络

软件工程 2023-01-10 v1

摘要

关键任务嵌入式软件对我们社会的基础设施至关重要,但随着技术进步也可能面临新的安全漏洞。当安全问题出现时,逆向工程师(RE)使用软件逆向工程(SRE)工具分析易受攻击的二进制文件。然而,现有工具支持有限,RE 需经历耗时、昂贵且易错的过程,需要经验与专业知识来理解软件及漏洞的行为。为改进这些工具,我们提出 cfg2vec\textit{cfg2vec},一种基于层次图神经网络(GNN)的方法。为表示二进制文件,我们提出一种新颖的图套图(GoG)表示,结合控制流图与函数调用图的信息。我们的 cfg2vec\textit{cfg2vec} 学习如何表示由各种 CPU 架构编译的每个二进制函数,利用层次 GNN 与基于连体网络的监督学习架构。我们评估 cfg2vec\textit{cfg2vec} 从剥离二进制文件中预测函数名的能力。结果显示,cfg2vec\textit{cfg2vec} 在预测函数名上比最先进技术(SOTA)高出 24.54%24.54\%,且在给定更多训练数据时甚至可高出 51.84%51.84\%。此外,cfg2vec\textit{cfg2vec} 在所有 CPU 架构上均持续优于 SOTA,而基线需多次训练才能达到类似性能。更重要的是,我们的结果表明 cfg2vec\textit{cfg2vec} 可处理由未见过的 CPU 架构构建的二进制文件,从而表明我们的方法能泛化所学知识。最后,我们将其实现为用于解决 DARPA 确保微补丁(AMP)挑战的 Ghidra 插件,以展示其实用性。

关键词

引用

@article{arxiv.2301.02723,
  title  = {CFG2VEC: Hierarchical Graph Neural Network for Cross-Architectural Software Reverse Engineering},
  author = {Shih-Yuan Yu and Yonatan Gizachew Achamyeleh and Chonghan Wang and Anton Kocheturov and Patrick Eisen and Mohammad Abdullah Al Faruque},
  journal= {arXiv preprint arXiv:2301.02723},
  year   = {2023}
}