CN118246033A - 跨平台代码异常漏洞检测方法、系统、设备、介质及产品 - Google Patents
跨平台代码异常漏洞检测方法、系统、设备、介质及产品 Download PDFInfo
- Publication number
- CN118246033A CN118246033A CN202410666177.9A CN202410666177A CN118246033A CN 118246033 A CN118246033 A CN 118246033A CN 202410666177 A CN202410666177 A CN 202410666177A CN 118246033 A CN118246033 A CN 118246033A
- Authority
- CN
- China
- Prior art keywords
- flow graph
- abstract syntax
- data flow
- control flow
- syntax tree
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 claims description 17
- 239000011159 matrix material Substances 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/0895—Weakly supervised learning, e.g. semi-supervised or self-supervised learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开的跨平台代码异常漏洞检测方法、系统、设备、介质及产品,属于代码漏洞识别技术领域,生成代码的中间表示、抽象语法树、控制流图和数据流图;通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层的输出为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将各自我注意力与共享注意力相加,获得本层编码层的输出;根据各结构特征及中间表示,获得软件代码的漏洞检测结果,提高了代码漏洞识别的准确率。
Description
技术领域
本发明涉及代码漏洞检测技术领域,尤其涉及跨平台代码异常漏洞检测方法、系统、设备、介质及产品。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
代码漏洞是对软件相关行业的一个主要威胁,当前对代码漏洞进行识别的方法主要包括:静态分析、动态分析、基于手工制作的特征的机器学习方法,采用LSTM和GGNN(门控图神经网络)等的深度学习方法,及采用Codebert和CodeT5等的针对源代码的预训练模型进行源代码漏洞识别的方法。
发明人认为,通过静态分析、动态分析和基于手工制作的特征的机器学习方法进行代码漏洞识别时,需要与漏洞相关的专业知识和大量的手工劳动,难以被部署,且可扩展性差;采用LSTM和GGRN等深度学习技术进行代码漏洞识别的方法,需要大量的标记数据来进行监督训练,且采用LSTM和GGRN等深度学习技术进行代码漏洞识别的方法和针对源代码的预训练模型进行源代码漏洞识别的方法,在进行代码漏洞识别时,均只利用了代码单一的结构信息,而忽略了代码丰富的结构信息,使得代码漏洞识别不准确。
此外,对于不同平台的软件代码,存在二进制、汇编语言、C语言等多种形式,而当前采用深度学习方法的漏洞检测模型依赖于输入格式,泛化能力较差,不适应跨平台的软件代码识别。
发明内容
本发明为了解决上述问题,提出了跨平台代码异常漏洞检测方法、系统、设备、介质及产品,通过把二进制、汇编语言、C语言等多种形式的软件代码转化为统一的LLVM中间表示,并利用代码的中间表示、抽象语法、控制流和数据流结构信息,进行代码漏洞识别,提高了代码漏洞识别的准确率。
为实现上述目的,本发明采用如下技术方案:
第一方面,提出了跨平台代码异常漏洞检测方法,包括:
获取平台软件代码;
将平台软件代码转换为该代码的中间表示;
利用代码的中间表示,生成代码的抽象语法树、控制流图和数据流图;
获取抽象语法树、控制流图和数据流图的邻接矩阵;
通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵及中间表示进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征;其中,每层编码层均以中间表示和上一编码层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入本层的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入本层的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;
根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
进一步的,通过全局注意力机制计算抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力。
进一步的,第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
进一步的,利用训练好的代码漏洞检测模型,对抽象语法树、控制流图和数据流图的结构特征及代码的中间表示进行识别,获得软件代码的漏洞检测结果,其中,代码漏洞检测模型以代码的融合特征为输入,以软件代码的漏洞检测结果为输出,通过对比学习模型构建获得。
进一步的,代码漏洞检测模型的损失函数包括交叉熵损失、抽象语法树的结构特征匹配损失、控制流图的结构特征匹配损失和数据流图的结构特征匹配损失。
第二方面,提出了跨平台代码异常漏洞检测系统,包括:
获取单元,用于获取平台软件代码;
处理单元,用于将平台软件代码转换为该代码的中间表示;利用代码的中间表示,生成代码的抽象语法树、控制流图和数据流图;获取抽象语法树、控制流图和数据流图的邻接矩阵;通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
进一步的,处理单元,用于第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
第三方面,提出了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成跨平台代码异常漏洞检测方法所述的步骤。
第四方面,提出了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成跨平台代码异常漏洞检测方法所述的步骤。
第五方面,提出了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时,实现第一方面提出的跨平台代码异常漏洞检测方法。
与现有技术相比,本发明的有益效果为:
1、本发明将软件代码转化为中间表示,实现了将不同状态、模式、平台下的软件代码转化为统一格式,之后基于中间表示进行软件代码的漏洞检测,从而能够对将不同状态、模式、平台下的软件代码进行漏洞检测,提高了跨平台软件代码漏洞检测的泛化能力。
2、本发明通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;即在提取抽象语法树、控制流图和数据流图的结构特征时,充分考虑了软件的中间表示、抽象语法树、控制流图和数据流图之间的关联,使得提取的结构特征能够包含更多的特征,当利用该结构特征进行软件漏洞识别时,提高了软件漏洞识别的准确率。
3、本发明在进行软件代码漏洞识别时,除了应用代码的抽象语法树、控制流图和数据流图的结构特征外,还充分考虑了代码的中间表示,即还利用了代码本身包含的丰富的结构信息,进一步提高了代码漏洞识别的准确率。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为实施例1公开方法的流程图;
图2为实施例1公开的CFG;
图3为实施例1公开的AST;
图4为实施例1公开的DFG;
图5为实施例1公开的对比学习示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
实施例1
在该实施例中,公开了跨平台代码异常漏洞检测方法,如图1-图5所示,包括:
S1:获取平台软件代码。
S2:将平台软件代码转换为该代码的中间表示;利用代码的中间表示,生成代码的抽象语法树(AST)、控制流图(CFG)和数据流图(DFG)。
软件代码可以为二进制、汇编语言和C语言等多种形式,本实施例为了适应对不同状态、模式或平台下的软件代码进行识别,首先将获取的软件代码转换为了LLVM的中间表示,之后基于代码的中间表示,生成代码的抽象语法树、控制流图和数据流图。
软件代码包含多个程序语句,控制流程图(CFG)是软件代码的程序执行过程中所穿越路径的图形表示,抽象语法树(AST)是将软件代码语法结构以树状结构进行表示,AST中的每个子树来表示软件代码中的每个语句,数据流图(DFG)为跟踪软件代码执行过程中变量的使用情况的图形表示,包括对变量的访问或修改。
本实施例利用代码结构图生成模型对代码的中间表示进行解析,生成代码的抽象语法树(AST)、控制流图(CFG)和数据流图(DFG)。
其中,代码结构图生成模型可以选用Tree-sitter。
以int func(int a){
int b=5;
if(a>3){
b=a-b;
}
return b;
}代码为例,当代码执行“if(a>3)”语句时,它根据变量“a”决定是否执行“b=a-b”,且“b=a-b”中的变量“a”来自“a>3”,生成的控制流程图(CFG)、抽象语法树(AST)和数据流图(DFG)分别如图2、图3、图4所示。
S3:获取抽象语法树、控制流图和数据流图的邻接矩阵;
通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵及中间表示进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征;其中,每层编码层均以中间表示和上一编码层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入本层的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入本层的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息。
其中,通过全局注意力机制计算抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力。
第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
具体的,在抽象语法树、控制流图和数据流图中,每个节点代表一条代码的程序语句,每条边代表两个节点间的关联关系,用邻接矩阵M中的元素Mnxn来表示抽象语法树、控制流图或数据流图中的某类边,其中,n为节点的数量。具体的,在邻接矩阵中,用1表示两节点间存在边,用0表示两节点间不存在边。
如,当抽象语法树、控制流图或数据流图中第i个节点和第j个节点相连时,设置Mixj=1,否则,Mixj=0。
本实施例通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,具体的,第一层编码层的输入为中间表示及抽象语法树、控制流图和数据流图的结构特征;每一层编码层均输出抽象语法树、控制流图和数据流图的结构信息,并将本层编码层输出的抽象语法树、控制流图和数据流图的结构信息输入下一层编码层中;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息为抽象语法树、控制流图和数据流图的结构特征;每一层编码层输出抽象语法树、控制流图和数据流图的结构信息的过程为:对输入本层编码层的抽象语法树、控制流图和数据流图的结构信息分别计算自我注意力,获得输入本层编码层的抽象语法树结构信息、控制流图结构信息和数据流图结构信息各自的自我注意力;通过全局注意力机制计算输入本层编码层抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力;将输入本层编码层的抽象语法树结构信息、控制流图结构信息和数据流图结构信息各自的自我注意力与共享注意力相加,获得本层编码层的输出。
在具体实施例时,每个编码层均通过结构感知自我注意力编码器(SASA)计算输入本层编码层的抽象语法树结构信息、控制流图结构信息和数据流图结构信息各自的自我注意力,及输入本层编码层抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,并将自我注意力与共享注意力相加,获得本层编码层的输出。
结构感知自我注意力编码器(SASA)计算自我注意力的过程为:,其中,Attn(Q,K,V,M)表示抽象语法树结构信息、控制流图结构信息或数据流图结构信息的自我注意力,Q、K和V分别表示查询、键和值矩阵,d k是k的维度,softmax是归一化指数函数,M是输入的抽象语法树的结构信息、控制流图的结构信息或数据流图的结构信息,由于中间表示和不同的结构信息之间存在着一些类似的依赖关系,故SASA还通过全局注意力机制计算抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,之后,通过线性映射法将共享注意力和各自我注意力投射到同一空间,作为一个整体,获得整体的注意力,作为结构感知自我注意力编码器(SASA)的输出。/>,其中,SASA(Q,K,V,M)表示SASA输出的注意力,即输出的抽象语法树、控制流图和数据流图的结构信息,H1为输入SASA的中间表示、抽象语法树、控制流图和数据流图的结构信息之间的共享注意力,H2为输入SASA的抽象语法树、控制流图和数据流图的结构信息的自我注意力,Cat指串联操作,W O是一个线性变换矩阵,用于对串联后的注意力进行投影和整合。
在提取相应的结构特征时,加入了代码的中间表示、抽象语法树、控制流图和数据流图之间的共享注意力,从而利用中间表示、抽象语法树、控制流图和数据流图之间的依赖关系,使获取的结构特征包含更多的结构信息,当利用该结构特征进行代码漏洞识别时,提高了代码漏洞识别的准确率。
S4:根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
本实施例利用训练好的代码漏洞检测模型,对抽象语法树、控制流图和数据流图的结构特征及代码的中间表示进行识别,获得软件代码的漏洞检测结果,其中,代码漏洞检测模型以代码的融合特征为输入,以软件代码的漏洞检测结果为输出,通过对比学习模型构建获得。
如图5所示,为了增强从抽象语法树、控制流图及数据流图中提取的结构特征,本实施例将每种结构特征视为一种视图,并执行对比学习,通过将代码的中间表示、抽象语法树、控制流图及数据流图的结构特征放置于同一语义空间中,与已标注样本进行对比学习,确定软件代码的漏洞检测结果,由于同一代码的不同结构之间具有一定的相关性,当同时利用不同的结构信息进行代码漏洞识别时,提高了代码漏洞识别的准确率。
代码漏洞检测模型的损失函数包括交叉熵损失L CLS和结构特征匹配损失L CONTRA。L= L CLS +λL CONTRA,其中,L表示代码漏洞检测模型的总损失,λ是超级参数,可以为1或其他值,根据需求进行设定。
结构特征匹配损失L CONTRA包括抽象语法树的结构特征匹配损失、控制流图的结构特征匹配损失和数据流图的结构特征匹配损失。L CONTRA=Ψ ast+Ψ dfg+Ψ cfg,其中,Ψ ast为抽象语法树的结构特征匹配损失,Ψ dfg 为数据流图的结构特征匹配损失,Ψ cfg为控制流图的结构特征匹配损失。
本实施例的代码结构图生成模型、多层编码层和代码漏洞检测模型共同组成代码漏洞识别模型(MV-PTM)。
本实施例通过获取已知代码及代码的漏洞作为训练集对MV-PTM进行训练,当训练完成,获得训练好的MV-PTM,此时代码漏洞检测模型也为训练好的代码漏洞检测模型。
将S3获取的抽象语法树、控制流图及数据流图的结构特征,及代码的中间表示,输入训练好的代码漏洞检测模型中,输出代码漏洞识别结果。
本实施例公开的代码异常漏洞检测方法,在进行代码漏洞识别时,充分利用了代码本身包含的结构信息、代码的抽象语法、控制流及数据流的结构信息,提高了代码漏洞识别的准确率。
且在每层编码层中添加SASA,即利用了特定视图的自我注意力,也利用了共享注意力,从而使得提取的结构特征,包含更多的代码结构信息,当利用该结构特征进行代码漏洞识别时,进一步提高了代码漏洞识别的准确率。
实施例2
在该实施例中,公开了跨平台代码异常漏洞检测系统,包括:
获取单元,用于获取平台软件代码;
处理单元,用于将平台软件代码转换为该代码的中间表示;利用代码的中间表示,生成代码的抽象语法树、控制流图和数据流图;获取抽象语法树、控制流图和数据流图的邻接矩阵;通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
进一步的,处理单元,用于第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
本发明还公开了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成实施例1公开的跨平台代码异常漏洞检测方法所述的步骤。
本发明还公开了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例1公开的跨平台代码异常漏洞检测方法所述的步骤。
本发明还公开了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时,实现实施例1公开的跨平台代码异常漏洞检测方法。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.跨平台代码异常漏洞检测方法,其特征在于,包括:
获取平台软件代码;
将平台软件代码转换为该代码的中间表示;
利用代码的中间表示,生成代码的抽象语法树、控制流图和数据流图;
获取抽象语法树、控制流图和数据流图的邻接矩阵;
通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;
根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
2.如权利要求1所述的跨平台代码异常漏洞检测方法,其特征在于,通过全局注意力机制计算抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力。
3.如权利要求1所述的跨平台代码异常漏洞检测方法,其特征在于,第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
4.如权利要求1所述的跨平台代码异常漏洞检测方法,其特征在于,利用训练好的代码漏洞检测模型,对抽象语法树、控制流图和数据流图的结构特征及代码的中间表示进行识别,获得软件代码的漏洞检测结果,其中,代码漏洞检测模型以代码的融合特征为输入,以软件代码的漏洞检测结果为输出,通过对比学习模型构建获得。
5.如权利要求1所述的跨平台代码异常漏洞检测方法,其特征在于,代码漏洞检测模型的损失函数包括交叉熵损失、抽象语法树的结构特征匹配损失、控制流图的结构特征匹配损失和数据流图的结构特征匹配损失。
6.跨平台代码异常漏洞检测系统,其特征在于,包括:
获取单元,用于获取平台软件代码;
处理单元,用于将平台软件代码转换为该代码的中间表示;利用代码的中间表示,生成代码的抽象语法树、控制流图和数据流图;获取抽象语法树、控制流图和数据流图的邻接矩阵;通过多层编码层对抽象语法树、控制流图和数据流图的邻接矩阵进行多层特征编码,获得抽象语法树、控制流图和数据流图的结构特征,其中,每层编码层均以中间表示和上一层输出的抽象语法树、控制流图和数据流图的结构信息为输入,计算输入的抽象语法树、控制流图和数据流图的结构信息各自的自我注意力,及输入的抽象语法树、控制流图和数据流图的结构信息及中间表示之间的共享注意力,将抽象语法树、控制流图和数据流图的结构信息各自的自我注意力与共享注意力相加,获得本层编码层输出的抽象语法树、控制流图和数据流图的结构信息;根据抽象语法树、控制流图和数据流图的结构特征及代码的中间表示,获得软件代码的漏洞检测结果。
7.如权利要求6所述的跨平台代码异常漏洞检测系统,其特征在于,处理单元,用于第一层编码层的输入为抽象语法树、控制流图和数据流图的邻接矩阵及中间表示;最后一层编码层输出的抽象语法树、控制流图和数据流图的结构信息,为抽象语法树、控制流图和数据流图的结构特征。
8.一种电子设备,其特征在于,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成权利要求1-5任一项所述的跨平台代码异常漏洞检测方法的步骤。
9.一种计算机可读存储介质,其特征在于,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-5任一项所述的跨平台代码异常漏洞检测方法的步骤。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时,实现权利要求1-5任一项所述的跨平台代码异常漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410666177.9A CN118246033B (zh) | 2024-05-28 | 2024-05-28 | 跨平台代码异常漏洞检测方法、系统、设备、介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410666177.9A CN118246033B (zh) | 2024-05-28 | 2024-05-28 | 跨平台代码异常漏洞检测方法、系统、设备、介质及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118246033A true CN118246033A (zh) | 2024-06-25 |
CN118246033B CN118246033B (zh) | 2024-08-23 |
Family
ID=91553803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410666177.9A Active CN118246033B (zh) | 2024-05-28 | 2024-05-28 | 跨平台代码异常漏洞检测方法、系统、设备、介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118246033B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190030490A (ko) * | 2017-09-14 | 2019-03-22 | 국방과학연구소 | 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법 |
WO2019118222A1 (en) * | 2017-12-14 | 2019-06-20 | Magic Leap, Inc. | Contextual-based rendering of virtual avatars |
US20210056211A1 (en) * | 2019-08-23 | 2021-02-25 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
CN113868650A (zh) * | 2021-09-13 | 2021-12-31 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN114647465A (zh) * | 2022-05-23 | 2022-06-21 | 南京航空航天大学 | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 |
CN116627428A (zh) * | 2023-06-21 | 2023-08-22 | 北京航空航天大学 | 一种条件表达式相关的源代码缺陷智能检测方法 |
CN116720185A (zh) * | 2023-05-23 | 2023-09-08 | 华中科技大学 | 一种代码的多维图张量融合表示与嵌入方法 |
CN117273099A (zh) * | 2023-09-20 | 2023-12-22 | 西安科技大学 | 一种可重构阵列下Transformer网络模型数据复用方案与实现方法 |
WO2024006036A1 (en) * | 2022-07-01 | 2024-01-04 | Microsoft Technology Licensing, Llc | Syntax subtree code strengthening |
CN117454387A (zh) * | 2023-11-07 | 2024-01-26 | 安徽大学 | 基于多维度的特征提取的漏洞代码检测方法 |
CN117633811A (zh) * | 2023-11-30 | 2024-03-01 | 四川大学 | 一种多视角特征融合的代码漏洞检测方法 |
CN118036652A (zh) * | 2024-02-06 | 2024-05-14 | 中国人民解放军国防科技大学 | 基于图结构数据的图级表征学习方法、图分类方法及装置 |
-
2024
- 2024-05-28 CN CN202410666177.9A patent/CN118246033B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190030490A (ko) * | 2017-09-14 | 2019-03-22 | 국방과학연구소 | 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법 |
WO2019118222A1 (en) * | 2017-12-14 | 2019-06-20 | Magic Leap, Inc. | Contextual-based rendering of virtual avatars |
US20210056211A1 (en) * | 2019-08-23 | 2021-02-25 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
CN113868650A (zh) * | 2021-09-13 | 2021-12-31 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN114647465A (zh) * | 2022-05-23 | 2022-06-21 | 南京航空航天大学 | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 |
WO2024006036A1 (en) * | 2022-07-01 | 2024-01-04 | Microsoft Technology Licensing, Llc | Syntax subtree code strengthening |
CN116720185A (zh) * | 2023-05-23 | 2023-09-08 | 华中科技大学 | 一种代码的多维图张量融合表示与嵌入方法 |
CN116627428A (zh) * | 2023-06-21 | 2023-08-22 | 北京航空航天大学 | 一种条件表达式相关的源代码缺陷智能检测方法 |
CN117273099A (zh) * | 2023-09-20 | 2023-12-22 | 西安科技大学 | 一种可重构阵列下Transformer网络模型数据复用方案与实现方法 |
CN117454387A (zh) * | 2023-11-07 | 2024-01-26 | 安徽大学 | 基于多维度的特征提取的漏洞代码检测方法 |
CN117633811A (zh) * | 2023-11-30 | 2024-03-01 | 四川大学 | 一种多视角特征融合的代码漏洞检测方法 |
CN118036652A (zh) * | 2024-02-06 | 2024-05-14 | 中国人民解放军国防科技大学 | 基于图结构数据的图级表征学习方法、图分类方法及装置 |
Non-Patent Citations (1)
Title |
---|
陈肇炫;邹德清;李珍;金海;: "基于抽象语法树的智能化漏洞检测系统", 信息安全学报, no. 04, 15 July 2020 (2020-07-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN118246033B (zh) | 2024-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7169091B2 (ja) | 再帰型ニューラルネットワークアーキテクチャの生成のためのドメイン固有言語 | |
CN113360915B (zh) | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 | |
CN113449858B (zh) | 一种神经网络模型的处理方法以及相关设备 | |
CN107506414A (zh) | 一种基于长短期记忆网络的代码推荐方法 | |
CN113157917B (zh) | 基于OpenCL的优化分类模型的建立、优化分类方法及系统 | |
CN115146279A (zh) | 程序漏洞检测方法、终端设备及存储介质 | |
CN113076545A (zh) | 一种基于深度学习的内核模糊测试序列生成方法 | |
CN114327483A (zh) | 图张量神经网络模型建立方法及源代码语义识别方法 | |
CN116974554A (zh) | 代码数据处理方法、装置、计算机设备和存储介质 | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
WO2024148880A1 (zh) | 一种基于多源异构数据的系统检测方法及装置 | |
CN118246033B (zh) | 跨平台代码异常漏洞检测方法、系统、设备、介质及产品 | |
CN113076089A (zh) | 一种基于对象类型的api补全方法 | |
CN117370980A (zh) | 恶意代码检测模型生成及检测方法、装置、设备及介质 | |
CN112748953A (zh) | 基于神经网络模型的数据处理方法、装置及电子设备 | |
CN116720185A (zh) | 一种代码的多维图张量融合表示与嵌入方法 | |
CN116578336A (zh) | 一种基于抄袭者-检测器对抗的软件克隆检测方法 | |
CN116226864A (zh) | 一种面向网络安全的代码漏洞检测方法及系统 | |
CN113127341B (zh) | 一种基于图网络模型的增量代码缺陷检测方法及系统 | |
CN115618929A (zh) | Ast处理方法、神经网络模型训练方法、装置和存储介质 | |
Bremer | Do logical truths carry information? | |
CN118195032B (zh) | 一种具备主动学习能力的大模型自动进化系统及方法 | |
CN117829242B (zh) | 模型处理方法及相关设备 | |
CN117349186B (zh) | 一种基于语义流图的程序语言缺陷定位方法、系统及介质 | |
Eterno | Differentiable Neural Architecture Search Algorithms for TinyML benchmarks |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |