1 存在问题
物联网的快速发展引发了比以往更多的安全需求,尤其是在物联网设备的漏洞检测方面。基于克隆技术的漏洞搜索方法只在源代码上有效,而在物联网二进制搜索中有限。目前的方法在复杂的大规模代码搜索中显示出两个局限性。(1)捕获的函数语义信息不足且不准确,导致较高的误报率。比如BinGo很大程度上依赖于CFG生成函数签名模型,然而在不同的实现平台之间存在巨大差异,导致其跨平台的克隆检测准确率低于60%。(2)大多数方法需要较高的计算开销,难以应用于复杂的大规模二进制文件。
2 提出方法
提出一种基于函数语义学习的跨平台物联网二进制漏洞搜索方法IoTSeeker。首先构造函数语义图来捕获数据流和控制流信息,并将语义图中的每个基本块的轻量级语义特征编码为数值向量。然后将基本块的数值向量输入到定制的语义感知神经网络模型,以生成整个二进制函数的嵌入向量。最后计算两个嵌入向量的余弦距离,以确定二进制函数中是否包含已知漏洞。
实验表明,IoTSeeker在识别跨平台物联网二进制漏洞方面优于最先进的方法。例如,与Gemini相比,IoTSeeker在前50候选中多发现了12.68%的漏洞,并将AUC值提高了8.23%。
3 文章贡献
- IoTSeeker是第一个将CFG和DFG整合在一起的方法,与存在的最先进的方法相比,运用神经网络可以捕获更多的二进制函数语义信息。
- IoTSeeker的高搜索精度和低时间成本证明了其在有效识别物联网设备大规模二进制文件中的漏洞的潜力。
4 方法介绍
为了克服上述限制,IoTSeeker将函数的DFG和CFG集成到标记语义流图(LSFG)中,可以充分捕获函数的语义信息,基于研究经验,选择了8种基本块的特征输入到定制的神经网络模型来生成函数的嵌入向量。
如图1所示,该方法包括3个阶段:学习阶段、微调阶段和漏洞搜索阶段。其中漏洞搜索阶段由3个步骤完成:LSFG构建,语义特征提取和IoTSeeker深度神经网络。
4.1 构建LSFG
图2(a)展示了一个LSFG的例子。标记为0的实线表示控制依赖性,标记为1的虚线表示数据依赖性。通过利用定义使用规则和遍历所有函数路径,在CFG上构建DFG。具体而言,对于来自两个不同基本块的指令 i 和j,它们满足CFG拓扑结构,如果指令 i 写入到一个内存位置,然后指令 j 从同一内存位置读取,则为这两个基本块创建数据依赖边。因此,存储器地址"[ebp+var_C]"在图2(a)中的块1和块2之间形成了一条数据依赖边。
4.2 语义特征提取
上述构造的LSFG不适合直接输入到函数语义学习模型中。应该选择并提取一些稳健的初始数值特征,这些特征在不同微处理器架构和不同编译优化配置的不同实现平台下变化不大。通过对不同平台的二进制文件分析的经验,最终确定使用8种类型的特征作为每个基本块的初始语义表示:栈操作指令、算数指令、逻辑指令、对比指令、二进制函数调用、无条件跳转指令、条件跳转指令以及通用指令。
首先计算每个基本块中每个特征的数量,然后根据数量大小将它们按顺序排列成数字向量,最后将这些数字向量放置到LSFG的相应节点上。图2(b)是图2(a)中的每个基本块对应的数值向量,每一个LSFG可以表示为 g = <X, C, D>,其中X,C,D分别表示节点集,控制依赖边和数据依赖边。
4.3 IoTSeeker神经网络
structure2vec的嵌入向量生成策略适用于LSFG,它将漏洞搜索问题简化为计算函数嵌入向量的相似性的问题。在漏洞搜索场景中,目标是确定给定的两个LSFG g1和g2是否相似。训练样本<g1, g2, y>中的标签y表示两个图是否相似。这种双输入和单输出的样本要求训练两个共享参数的structure2vec网络,每个网络负责一个LSFG。
图4(a)显示了IoTSeeker神经网络模型的总体架构,每个基于LSFG的的嵌入生成网络将LSFG g 作为输入,并输出其嵌入向量 μ。余弦函数被用来计算两个嵌入向量 (μ, ν) 的相似性。图4(b)是对基于LSFG的嵌入生成网络的详细描述,该过程与基本的structure2vec相似。IoTSeeker对structure2vec进行了扩展,以处理包含数据流(标有1的实心箭头)和控制流(标有0的实心箭头)的LSFG。
生成函数语义表示的整个过程实现在算法1中。W1和W2分别是 d×p 和 p×p 维的参数矩阵。通过算法1中从第5行到第11行的T层迭代,生成每个顶点的新特征表示,它不仅遵循LSFG的拓扑结构,而且集成了顶点之间的T跳交互。换句话说,随着迭代的进行,顶点的特征被传播到其他顶点,确保函数中的每个基本块具有相应的上下文信息。最后,包括数据流依赖性和控制流依赖性在内的二进制函数语义聚合到第12行中的嵌入向量 μ 中。
整个网络的输出表示两个函数的相似度,用余弦函数
表示,其中 y 是两个函数相似度的预测输出,范围为-1到1。给定嵌入向量 μ 和 ν 的真实值 y ∈ {1, -1},y = 1时表示它们是相似的函数,反之则是不相似的。
5 实验评估
数据集:
不同方法下代码克隆的ROC曲线:
TOP-K报告结果中漏洞搜索的准确性: