破局传统算法痛点,腾讯安全首提基于跨模态检索的二进制代码-源代码匹配

整理 | 高卫华

出品 | AI科技大本营

头图 | CSDN付费下载自视觉中国

近日,在NeurIPS 2020正式发布的论文入选名单中,腾讯安全科恩实验室聚焦解决二进制安全问题的《CodeCMR: Cross-Modal Retrieval For Function-Level Binary Source Code Matching》,凭借首次提出基于AI的二进制代码/源代码端到端匹配算法的创新研究入选。

该论文首次提出了基于AI的二进制代码/源代码端到端匹配算法,与传统算法相比,准确率大幅提升,并为逆向分析领域提供了新的思路,可提升工业部署方面的效率。

目前,该论文成果已在腾讯安全科恩实验室研发的代码检索工具BinaryAI实现了落地应用。

论文背景

在AAAI 2020中,腾讯安全科恩实验室提出了一项利用图神经网络解决二进制程序函数相似性分析问题的技术,得到广泛关注。

在此基础上,科恩实验室将研究方向扩展到二进制代码与源代码的交叉领域,进一步实现其在AI+安全新兴方向中的全新探索与突破。

二进制代码-源代码匹配是信息安全领域的重点研究方向之一。在给定二进制代码的情况下,逆向分析的研究人员希望可以找到它对应的源代码,从而提升逆向分析的效率和准确率。

B2SFinder和BinPro等传统算法提取源代码和二进制代码的字符串、立即数等特征进行匹配,而函数级别的源代码与二进制代码的特征非常少,匹配准确率不高。另外,要设计合适的特征,需要大量的专家经验。

图1展示了一个函数的源代码与二进制代码,从中可看出,除了字符串和立即数特征,代码中隐藏的语义特征也很关键。

因此,该论文设计了一种端到端的模型,可以自动提取代码间的语义特征,从而提升匹配的准确率。

图1 - 二进制代码与对应的源代码

CodeCMR框架介绍

二进制代码-源代码间的检索任务中,把两种代码当作两个模态输入,可类比到图文互搜等跨模态检索场景。

对此,科恩实验室基于AI设计了CodeCMR框架,以解决传统算法匹配准确率不高的问题。

计算最终向量前,两个模态之间没有信息传递,在实际应用时可预先计算向量,节省线上计算时间以及存储空间。

图2 - CodeCMR整体框架

整体结构

模型输入中有源代码特征和二进制代码特征两部分,其中源代码特征是字符级别的源代码、从源代码中提取的字符串和立即数,二进制代码特征是控制流图、二进制代码的字符串和立即数。

CodeCMR框架能够以不同模型对源代码特征和二进制代码特征两大模块的语义、字符串、立即数等三大输入特征进行向量计算,并以在基础上用拼接+BatchNorm方式实现高效匹配转化,最后使用triplet loss作为损失函数。

语义模型

CodeCMR框架中,字符级源代码使用DPCNN模型,二进制控制流图使用端到端的GNN模型。

在函数级别,字符级源代码的输入通常在4096以上,DPCNN的效果远优于TextCNN和LSTM。另外,在语义特征识别中,端到端的GNN模型表现出更强的健壮性,可帮助破解传统算法高专家经验的痛点。

图3 - 源代码与二进制代码的语义模型

立即数、字符串模型

源代码和二进制代码的字符串和立即数不完全相同,需要设计模型进行匹配。

对于立即数,科恩实验室设计了Integer-LSTM,其输入有integer token和integer number两个。integer number作用在LSTM的输入门和输出门,以控制信息流动。

对于字符串,其采用分层模型,先通过LSTM模型得到每个字符串的向量,再使用sum pooling方法得到字符串集合的向量。

Norm weighted sampling

在两大模块的向量采样阶段,Norm weighted sampling 与随机采样和distance weighted采样方法相比,表现出更好的匹配效果。

distance weighted sampling采样方法可解决hard样本在训练早期收敛到局部极小值的问题,在分布中选择各个概率的样本。

在此基础上,科恩实验室又提出改进,增加超参数s,帮助调整概率的分布,从而适应不同的任务和数据集。

这种融合训练的方法可大幅提升二进制代码/源代码的匹配准确率,从而提升工业部署效率。

实验结果

与传统算法仅提取字符串、立即数特征进行匹配的做法不同,CodeCMR模型能够实现对代码间隐藏语义特征的自动提取,从而达到提升二进制代码-源代码跨模态检索匹配效率的目的。

从实验结果中可以看出,在语义模型中,DPCNN+HBMP取得最优效果,表示在二进制侧采用端到端训练优于预训练的node embedding;此外,与随机采样、distance weighted采样相比,norm weighted的采样效果更好。

表1 - 实验结果

train/valid loss曲线也证明了这一点,当s=5时,norm weighted sampling的train loss更高,valid loss更低。

图4 - 训练与验证的损失函数曲线

论文链接:

https://keenlab.tencent.com/zh/whitepapers/neurips-2020-cameraready.pdf

更多精彩推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值