SemDiff:通过比较关键语义图进行二进制相似性检测
摘要:二进制相似性检测是一种关键技术,已经应用于许多实际场景中,其中源代码不可用,例如错误搜索、恶意软件分析和代码抄袭检测。现有的工作在检测不同编译优化、编译器、源代码版本或混淆被部署的情况下,对于相似二进制的检测是无效的。我们观察到,尽管这些情况会显著修改二进制的语法和结构,但并不会改变二进制的关键代码行为。基于这个关键观察,我们从二进制中提取一组关键指令来捕捉其关键代码行为。通过检测两个二进制关键指令之间的相似性,我们可以有效克服现有工作的局限性。具体而言,我们将每个提取的关键指令转换为自定义的关键表达式,并基于二进制的控制流生成关键语义图。关键语义图中的每个节点表示一个关键指令,节点属性是关键表达式。为了量化给定的两个关键语义图之间的相似性,我们首先通过拓扑排序将每个图序列化为一系列关键表达式。然后,我们对关键表达式进行标记和连接以生成标记列表。我们计算所有标记列表的局部敏感哈希值,并量化它们的相似性。我们实现了一个名为SemDiff的原型,由两个模块组成:图生成和图差异。第一个模块生成一对关键语义图,第二个模块比较这两个图的差异。我们的评估结果表明,总体而言,当检测来自不同优化级别、编译器和混淆的二进制的相似性时,SemDiff优于最先进的工具。SemDiff在库版本搜索和固件中查找相似漏洞方面也很有效。
作者:Zian Liu, Zhi Zhang, Siqi Ma, Dongxi Liu, Jun Zhang, Chao Chen, Shigang Liu, Muhammad Ejaz Ahmed, Yang Xiang
论文ID:2308.01463
分类:Cryptography and Security
分类简称:cs.CR
提交时间:2023-08-04