CN114115894A - 一种基于语义空间对齐的跨平台二进制代码相似性检测方法 - Google Patents
一种基于语义空间对齐的跨平台二进制代码相似性检测方法 Download PDFInfo
- Publication number
- CN114115894A CN114115894A CN202111384834.3A CN202111384834A CN114115894A CN 114115894 A CN114115894 A CN 114115894A CN 202111384834 A CN202111384834 A CN 202111384834A CN 114115894 A CN114115894 A CN 114115894A
- Authority
- CN
- China
- Prior art keywords
- semantic
- platform
- code
- model
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于语义空间对齐的跨平台二进制代码相似性检测方法,首先构建跨平台二进制代码函数库;将开源库中每个函数通过编译器进行编译,通过不同的优化选项得到反汇编文本代码;然后采用Bert模型进行单平台代码语义嵌入模型的训练;使训练后的Bert模型能够识别平台代码语义;在经过基于Contrastive Learning的语义对齐模型的训练;最后构建基于局部敏感哈希技术的快速查找数据库;将高维向量转为低维向量后,使用匹配方法获得相似的向量结果;通过对匹配结果进行分析,对实验模型进行评估;本发明解决了不同平台,如x86、ARM等平台下相同源代码的相似性匹配问题,实现了不同平台下相同语义的识别。
Description
技术领域
本发明属于漏洞检测、版权纠纷、恶意软件分析等领域,具体地,涉及一种基于语义空间对齐的跨平台二进制代码相似性检测方法。
背景技术
以往的跨指令架构二进制代码相似性研究通常需要人工选择二进制代码的特征进行基本块嵌入,这些特征不仅需要专业知识,而且嵌入信息较少,不能完整表达二进制代码的语义。如Gemini、Genius。
为了解决上面的问题,SAFE、Asm2vec,PalmTree等方法将基于静态词表示的方法应用到二进制代码中。这些方法结合NLP中的技术,通过对基本块中的内容进行规范化输入到模型中,大大提高了基本块嵌入中的信息容量。但这些方法并不适合跨指令架构的基本块嵌入,因为不同指令架构中具有独立的语义表示方法。
对于同一个源文件,在不同的平台下编译,它能够获得最小粒度的相似性是在函数级别的,所以本发明从函数出发,将不同指令平台上的函数映射到不同的嵌入向量空间中,然后利用计算机视觉中的Contrastive Learning技术,实现了不同平台下相同语义的识别能力。
发明内容
本发明将计算机视觉方面的技术Contrastive Learning应用到二进制相似性分析上,提出一种基于语义空间对齐的跨平台二进制代码相似性检测方法,来解决不同平台,如x86、ARM等平台下相同源代码的相似性匹配问题,同时利用局部敏感哈希技术构建快速查找数据库对二进制代码语义相似的嵌入进行快速的查找。
本发明是通过以下方案实现的:
一种基于语义空间对齐的跨平台二进制代码相似性检测方法:
所述方法具体包括以下步骤:
步骤一:构建跨平台二进制代码文本函数库;将开源库中每个文本函数通过编译器进行编译,通过不同的优化选项得到反汇编文本代码;
步骤二:采用Bert模型进行单平台代码语义嵌入模型的训练;使训练后的Bert模型能够识别平台代码语义;
步骤三:基于Contrastive Learning的语义对齐模型的训练;
步骤四:构建基于局部敏感哈希技术的快速查找数据库;将高维向量转为低维向量后,使用匹配方法获得相似的向量结果;通过对匹配结果进行分析,对实验模型进行评估。
进一步地,在步骤一中,
得到反汇编文本代码后,对语义内容进一步提取并对代码进行规范化处理;
用特殊标签替换字符串以及大常数,并在函数标签处添加编译配置信息。
进一步地,在步骤二中,
训练两个神经网络模型,使得神经网络模型能够获得平台代码的语义嵌入,
所述神经网络模型中的MLM屏蔽语言模型训练任务,用于训练一个语言模型来预测指令中被掩盖的标记;所述MLM屏蔽语言模型训练任务为最近在NLP中提出的训练任务;
所述神经网络模型中的CWP上下文窗口训练任务,通过预测两条指令是否共同出现在控制流的滑动窗口中,来推断单词或指令的语义;并且因为指令之间的数据依赖性或def-use关系不会被编译器优化所篡改,以此设计UDP def-use预测训练任务;
训练后的Bert模型能够将步骤一中任意一个平台架构下的代码语义映射到该平台架构的语义空间,并且不同的平台的语义空间相互独立。
进一步地,在步骤三中,
Contrastive Learning能够无监督学习一般化的语义特征;
将pair对输入模型中进行训练,获得对齐后的语义嵌入模型。
进一步地,在步骤四中,
使用cosine distance度量嵌入代码的相似性,局部敏感哈希使用随机投影方法将高维向量转为低维向量;
定义k为低维向量维度,ε为误差,
对于0<ε<1,n∈N,有
则对于任何集合A={x1,...,xn∈Rd},存在映射∏:Rd→Rk,对所有i≠j,有
通过高斯随机投影构造转换矩阵,对于高维向量Xl×d,通过转移矩阵Md×k,获得低维向量Yl×k,公式为:Xl×dMd×k=Yl×k。
进一步地,所述高斯随机投影构造转换矩阵的构造过程为:
通过标准正态分布生成转移矩阵,M1,j~N(0,1),
计算转换后的低维向量
本发明有益效果
本发明解决了不同平台,如x86、ARM等平台下相同源代码的相似性匹配问题,实现了不同平台下相同语义的识别。
由于在现实中,存在大量的开源代码复用情况,如果这些代码中出现漏洞,将会影响大量的使用了该代码的软件,本发明可以应用在同源漏洞代码检测中,从而在某软件中发现已经披露出来的漏洞,保障软件的安全。本发明同样可以应用在知识产权保护领域,发现代码中未经授权的代码的复用,保护软件所有者的知识产权。
附图说明
图1为本发明训练任务示意图;
图2为本发明的Contrastive Learning模型整体框架。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1至图2;
一种基于语义空间对齐的跨平台二进制代码相似性检测方法:
所述方法具体包括以下步骤:
步骤一:构建跨平台二进制代码文本函数库;选择合适的开源库(如openssl,binutils等),将开源库中每个文本函数通过编译器进行编译,通过不同的优化选项得到反汇编文本代码;其编译配置如表1所示;
平台 | 编译器 | 优化选项 | 系统架构 |
X86/ARM/MIPS | GCC/Clang/MSV | O0/O1/O2/O3 | Windows/Linux |
表1配置表
步骤二:采用Bert模型进行单平台代码语义嵌入模型的训练;使训练后的Bert模型能够识别平台代码语义;
步骤三:基于Contrastive Learning的语义对齐模型的训练;
步骤四:构建基于局部敏感哈希技术的快速查找数据库;将高维向量转为低维向量后,使用匹配方法获得相似的向量结果;通过对匹配结果进行分析,对实验模型进行评估。
在步骤一中,得到反汇编文本代码后,对语义内容进一步提取并对代码进行规范化处理;用特殊标签替换字符串以及大常数等,为了知道函数的编译配置,并在函数标签处添加编译配置信息。
在步骤二中,其最大的特点是抛弃了传统的RNN和CNN,通过Attention机制将任意位置的两个单词的距离转换成1,有效的解决了NLP中棘手的长期依赖问题。同时通过在不同的层次上提取关系特征达到了更全面的反映句子语义的效果。在理解语义方面具有优越性。
在模型训练阶段,训练两个神经网络模型,使得神经网络模型能够获得平台代码的语义嵌入,具体流程如图1所示;
所述神经网络模型中的MLM屏蔽语言模型训练任务,用于训练一个语言模型来预测指令中被掩盖的标记;所述MLM屏蔽语言模型训练任务为最近在NLP中提出的训练任务;
所述神经网络模型中的CWP上下文窗口训练任务,通过预测两条指令是否共同出现在控制流的滑动窗口中,来推断单词或指令的语义;并且由于指令之间的数据依赖性(或def-use关系)是明确规定的,不会被编译器优化所篡改,以此设计UDP def-use预测训练任务;
训练后的Bert模型已经具有识别了某个平台代码语义的基本能力,能够将步骤一中任意一个平台架构下的代码语义映射到该平台架构的语义空间,并且不同的平台的语义空间相互独立。
在步骤三中,
Contrastive Learning能够无监督学习一般化的语义特征;是机器学习中的一种技术,用来无监督学习一般化的特征,只需要输入那些数据是相似的,那些数据不是相似的,便能够进行很好的学习。这里采用的MoCo由He等人于2020年提出,用于解决计算机视觉问题。在计算机视觉中,同样一只猫的照片,我们可以拉伸,变幻颜色等操作获得不同的猫的照片,但它们的语义都是猫,通过Contrastive Learning技术,能够知道猫的特征。这和我们要解决的问题同一个源代码,经过不同的变化,其语义都是相同的,有异曲同工之妙,故可以将其应用到我们的问题上。整体模型架构如图2所示。
将pair对(平行语料数据集合的中每对平行语料数据)输入模型中进行训练,获得对齐后的语义嵌入模型。通过Bert模型充分获得代码的语义,同时解决了不同编译器,不同编译选项的语义嵌入问题,故语义对齐模型只需要专注于解决不同平台的问题,能够有效提高模型的准确度。
在步骤四中,对于高维海量数据的近邻查找,局部敏感哈希是一个比较好的方法。局部敏感哈希的基本思想:在高维数据空间中的两个相邻的数据被映射到低维数据空间中后,将会有很大的概率相邻;而原本不相邻的两个数据,在低维空间中也将有很大的概率不相邻。通过这样一一映射,我们可以在低维数据空间来寻找相邻的数据点,避免在高维数据空间中寻找,因为在高维空间中会很耗时。
使用cosine distance度量嵌入代码的相似性,局部敏感哈希使用随机投影方法将高维向量转为低维向量;
Random Rrojection映射定义如下:
点X1,...,Xn∈Rd,d是一个很大的数,通过构造一个映射∏:Rd→Rk,其中k<<d,使得
||xi-xj||≈||∏(xi)-∏(xj)||
根据Johnson-Lindenstrauss lemma,定义k为低维向量维度,ε为误差,
对于0<ε<1,n∈N,有
则对于任何集合A={x1,...,xn∈Rd},存在映射∏:Rd→Rk,对所有i≠j,有
通过高斯随机投影构造转换矩阵,对于高维向量Xl×d,通过转移矩阵Md×k,获得低维向量Yl×k,公式为:Xl×dMd×k=Yl×k。
所述高斯随机投影构造转换矩阵的构造过程为:
通过标准正态分布生成转移矩阵,M1,j~N(0,1),
计算转换后的低维向量
以上对本发明所提出的一种基于语义空间对齐的跨平台二进制代码相似性检测方法,进行了详细介绍,对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种基于语义空间对齐的跨平台二进制代码相似性检测方法,其特征在于:
所述方法具体包括以下步骤:
步骤一:构建跨平台二进制代码函数库;将开源库中每个函数通过编译器进行编译,通过不同的优化选项得到反汇编文本代码;
步骤二:采用Bert模型进行单平台代码语义嵌入模型的训练;使训练后的Bert模型能够识别平台代码语义;
步骤三:基于Contrastive Learning的语义对齐模型的训练;
步骤四:构建基于局部敏感哈希技术的快速查找数据库;将高维向量转为低维向量后,使用匹配方法获得相似的向量结果;通过对匹配结果进行分析,对实验模型进行评估。
2.根据权利要求1所述方法,其特征在于:在步骤一中,
得到反汇编文本代码后,对语义内容进一步提取并对代码进行规范化处理;
用特殊标签替换字符串以及大常数,并在函数标签处添加编译配置信息。
3.根据权利要求2所述方法,其特征在于:在步骤二中,
训练两个神经网络模型,使得神经网络模型能够获得平台代码的语义嵌入,
所述神经网络模型中的MLM屏蔽语言模型训练任务,用于训练一个语言模型来预测指令中被掩盖的标记;所述MLM屏蔽语言模型训练任务为最近在NLP中提出的训练任务;
所述神经网络模型中的CWP上下文窗口训练任务,通过预测两条指令是否共同出现在控制流的滑动窗口中,来推断单词或指令的语义;并且因为指令之间的数据依赖性或def-use关系不会被编译器优化所篡改,以此设计UDP def-use预测训练任务;
训练后的Bert模型能够将步骤一中任意一个平台架构下的代码语义映射到该平台架构的语义空间,并且不同的平台的语义空间相互独立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384834.3A CN114115894A (zh) | 2021-11-22 | 2021-11-22 | 一种基于语义空间对齐的跨平台二进制代码相似性检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384834.3A CN114115894A (zh) | 2021-11-22 | 2021-11-22 | 一种基于语义空间对齐的跨平台二进制代码相似性检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114115894A true CN114115894A (zh) | 2022-03-01 |
Family
ID=80439230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111384834.3A Pending CN114115894A (zh) | 2021-11-22 | 2021-11-22 | 一种基于语义空间对齐的跨平台二进制代码相似性检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115894A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528015A (zh) * | 2022-04-24 | 2022-05-24 | 湖南泛联新安信息科技有限公司 | 二进制可执行文件同源分析方法、计算机设备及存储介质 |
CN115951931A (zh) * | 2023-03-14 | 2023-04-11 | 山东大学 | 基于bert的二进制代码相似性检测方法 |
-
2021
- 2021-11-22 CN CN202111384834.3A patent/CN114115894A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528015A (zh) * | 2022-04-24 | 2022-05-24 | 湖南泛联新安信息科技有限公司 | 二进制可执行文件同源分析方法、计算机设备及存储介质 |
CN115951931A (zh) * | 2023-03-14 | 2023-04-11 | 山东大学 | 基于bert的二进制代码相似性检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zuo et al. | Neural machine translation inspired binary code similarity comparison beyond function pairs | |
CN113900923B (zh) | 一种跨指令集架构的二进制函数相似性检查系统及方法 | |
CN111191275A (zh) | 敏感数据识别方法、系统及其装置 | |
CN114115894A (zh) | 一种基于语义空间对齐的跨平台二进制代码相似性检测方法 | |
CN115168856B (zh) | 二进制代码相似性检测方法及物联网固件漏洞检测方法 | |
CN112596736B (zh) | 一种基于语义的跨指令架构二进制代码相似性检测方法 | |
CN113010209A (zh) | 一种抗编译差异的二进制代码相似性比较技术 | |
CN115292520B (zh) | 一种面向多源移动应用知识图谱构建方法 | |
CN115455382A (zh) | 一种二进制函数代码的语义比对方法及装置 | |
Liang et al. | FIT: Inspect vulnerabilities in cross-architecture firmware by deep learning and bipartite matching | |
Liang et al. | Neutron: an attention-based neural decompiler | |
CN116595537A (zh) | 一种基于多模态特征的生成式智能合约的漏洞检测方法 | |
Wang et al. | Multi-type source code defect detection based on textcnn | |
CN112861131B (zh) | 基于卷积自编码器的库函数识别检测方法及系统 | |
Lin et al. | Spatial attention and syntax rule enhanced tree decoder for offline handwritten mathematical expression recognition | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
Hou et al. | A vulnerability detection algorithm based on transformer model | |
Kashihara et al. | Automated corpus annotation for cybersecurity named entity recognition with small keyword dictionary | |
Sun et al. | GraphMoCo: A graph momentum contrast model for large-scale binary function representation learning | |
Siddique et al. | Cvd: An improved approach of software vulnerability detection for object oriented programming languages using deep learning | |
Sharma et al. | Optical Character Recognition Using Hybrid CRNN Based Lexicon-Free Approach with Grey Wolf Hyperparameter Optimization | |
Wang et al. | Cross‐Platform Binary Code Homology Analysis Based on GRU Graph Embedding | |
Jiang et al. | Double‐Layer Positional Encoding Embedding Method for Cross‐Platform Binary Function Similarity Detection | |
Xing et al. | HGE-BVHD: Heterogeneous Graph Embedding Scheme of Complex Structure Functions for Binary Vulnerability Homology Discrimination | |
Demidov et al. | Vector representation of machine instructions for vulnerability assessment of digital infrastructure components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |