中文

ROMEO:通过汇编语言视角审视 Juliet

密码学与安全 2023-03-07 v3

摘要

基于 C/C++ 源代码的自动漏洞检测因机器学习引入该领域而受益,近期许多文献聚焦于这一组合。相比之下,汇编语言或机器码工件受到的关注较少,尽管研究它们有充分理由:它们更能代表实际执行内容,更易纳入动态分析,且在闭源代码情形下别无选择。我们评估了汇编语言相较 C/C++ 源代码在漏洞检测中的表征能力。此外,我们探究了调用图上下文在检测跨函数漏洞中的作用。最后,我们验证了编译基准数据集是否会因无意泄露标签信息而损害实验的可靠性。我们提出 ROMEO,一个源自合成 Juliet 测试套件、公开可用、可复现且可复用的二进制漏洞检测基准数据集。同时,我们引入一种简单的基于文本的汇编语言表示,其包含用于跨函数漏洞检测的上下文以及用于检测高层漏洞的语义。该表示通过反汇编相应二进制的 .text 段构建。我们评估了编译数据集的 x86 汇编语言表示,并结合现成分类器。其表现优于包括运行于完整 C/C++ 代码上的前沿(SOTA)方法。利用调用图纳入上下文信息改进了跨函数漏洞检测。编译过程中无标签信息泄露。

关键词

引用

@article{arxiv.2112.06623,
  title  = {ROMEO: Exploring Juliet through the Lens of Assembly Language},
  author = {Clemens-Alexander Brust and Tim Sonnekalb and Bernd Gruner},
  journal= {arXiv preprint arXiv:2112.06623},
  year   = {2023}
}

备注

21 pages, code available at https://gitlab.com/dlr-dw/romeo