CN112364352B - 可解释性的软件漏洞检测与推荐方法及系统 - Google Patents

可解释性的软件漏洞检测与推荐方法及系统 Download PDF

Info

Publication number
CN112364352B
CN112364352B CN202011131831.4A CN202011131831A CN112364352B CN 112364352 B CN112364352 B CN 112364352B CN 202011131831 A CN202011131831 A CN 202011131831A CN 112364352 B CN112364352 B CN 112364352B
Authority
CN
China
Prior art keywords
vulnerability
graph
code
node
instance
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.)
Active
Application number
CN202011131831.4A
Other languages
English (en)
Other versions
CN112364352A (zh
Inventor
孙小兵
曹思聪
李斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yangzhou University
Original Assignee
Yangzhou University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yangzhou University filed Critical Yangzhou University
Priority to CN202011131831.4A priority Critical patent/CN112364352B/zh
Publication of CN112364352A publication Critical patent/CN112364352A/zh
Application granted granted Critical
Publication of CN112364352B publication Critical patent/CN112364352B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect output to user by software means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种可解释性的软件漏洞检测与推荐方法及系统,方法包括以下步骤:构建漏洞数据集;进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;进行漏洞特征学习,提取不同类型的特征;进行漏洞数据集平衡,合成少数类数据;构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。本发明可以更好地利用漏洞代码的语法、语义信息,充分挖掘漏洞代码与上下文的关系,达到对多种漏洞类型的判别与输出,普适性和通用性更强,可以取代实际代码审计中人工制定漏洞指标的环节,并推荐与检测代码所含漏洞类似的已知漏洞,使实际应用领域更广、精度更高、可解释性强。

Description

可解释性的软件漏洞检测与推荐方法及系统
技术领域
本发明属于软件安全领域,特别涉及一种可解释性的软件漏洞检测与推荐方法及系统。
背景技术
漏洞检测是软件维护过程中的重要组成部分。近年来,随着软件项目的规模扩张和复杂度提升,在软件开发过程中出现了大量的漏洞,如何准确高效地检测出潜在漏洞已成为具有相当挑战性的工作。而在之前的工作中多采用由人类专家手工制定的特征或模式被机器学习算法作为输入来检测漏洞,然而由专家手工定义一些漏洞度量(如代码行数,圈复杂度等),成本过高且主观性较强,会导致较高的误报率和漏报率。同时,大多数方法仅能识别出被检测文件是否包含漏洞,而无法对漏洞的一些属性,例如漏洞的类型,漏洞产生的原因等进行更进一步的阐述,从而可解释性差,难以指导实际的修复工作。
目前已有一些工作使用深度学习的方法来检测软件漏洞及其类型,如文献《μVulDeePecker:A Deep Learning-Based System for Multiclass VulnerabilityDetection》通过引入“代码注意”这个概念来关注对于漏洞更重要的代码语义特征,但是对于漏洞类型的分类仅停留在了抽象定义层面,而忽略了检测漏洞时所围绕的软件开发中经常使用或遇到的漏洞特征,同时也没有考虑影响多分类器性能的数据不平衡问题。也有一些工作通过将相似度匹配来分析bug代码,如文献《SmartEmbed:A Tool for Clone andBug Detection in Smart Contracts through Structural Code Embedding》通过比较被检测代码与已知bug之间的相似性,输出可能的bug类型并标注bug语句及其上下文,但仍停留在匹配层面,无法解释漏洞产生的原因,且没有考虑类不平衡问题,使得对bug类型的检测仍存在许多误报。
发明内容
本发明的目的在于针对上述现有技术存在的问题,提供一种具有应用领域更广、精度更高、可解释性强等特点的漏洞检测与推荐方法及系统。
实现本发明目的的技术解决方案为:一种可解释性的软件漏洞检测与推荐方法,所述方法包括以下步骤:
步骤1,构建漏洞数据集;
步骤2,进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
步骤3,进行漏洞特征学习,提取不同类型的特征;
步骤4,进行漏洞数据集平衡,合成少数类数据;
步骤5,构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。
进一步地,步骤2所述进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构,具体过程包括:
步骤2-1,对CWE漏洞类型标签进行归并,获得漏洞类型表如下表1所示:
表1漏洞类型表
步骤2-2,结合表1对漏洞数据集中的漏洞数据进行分类,构建语料库,并随机选取80%的漏洞数据作为训练集,剩下的20%作为测试集;
步骤2-3,对漏洞数据集中的所有数据进行代码表征,通过工具Joern和Roslyn将漏洞代码表示为抽象语法树AST、控制流图CFG、程序依赖图PDG、代码语序图NCS、词法调用图LastLexicalUse、参数闭合图GuardedBy和GuardedByNegation;
步骤2-4,利用Word2vec对语料库中通过AST解析得到的代码单词code tokens和代码语句statements进行词向量学习,获得一组词向量,其中语句的词向量通过对该语句所包含的代码单词求和取平均值得到。
进一步地,步骤3所述进行漏洞特征学习,提取不同类型的特征,具体过程包括:
步骤3-1,使用标签编码对漏洞代码图结点类型进行编码,与步骤2-4得到的结点词向量连结,得到每个结点的初始结点属性向量,并依此构造结点邻接矩阵和结点属性矩阵/>其中N为每一张漏洞代码图的结点数,D为每张漏洞代码图中结点的属性数,此外,每张漏洞代码图还包含一个由步骤2-1得到的对应图标签li
步骤3-2,依照属性向量的大小对不同类型的结点进行降序排列,构造结点向量序列r;设当前所遍历的结点为ct-1,对应的结点属性向量为t表示第t次遍历;
步骤3-3,在第t-1次遍历时的结点向量序列rt-1中,依次遍历当前遍历结点ct-1的每个邻居结点ct,计算从结点ct-1到结点ct这一步遍历所包含的信息量st
式中,θs为参数,fs为映射函数,为结点ct的属性向量;
步骤3-4,聚合遍历到结点ct所得到的子图所包含的每一步所包含的信息量ht
ht=fh(st,ht-1h)
式中,θh为参数,fh为映射函数,ht-1为聚合遍历到结点ct-1所得到的子图所包含的每一步所包含的信息量;
步骤3-5,计算遍历到结点ct所得到的子图的图标签比较该标签与步骤3-1中所述li是否一致,若一致,执行下一步,否则更新下一步遍历所需要的排序向量rt,并重复执行步骤3-3到3-5;其中,图标签/>的计算公式和排序向量rt的更新公式分别为:
rt=fr(ht;θr)
式中,θc和θr为参数,fc和fr为映射函数,P表示概率;
步骤3-6,计算同一张漏洞代码图在以不同结点为起点下遍历得到的所有子图中,信息量最大的最优遍历子图J:
式中,表示最优遍历子图J的梯度,i=1,…,M表示子图遍历的结点,所有的结点形成结点交互序列,M为结点总数,γ∈(0,1]表示折扣系数,/>表示结点和其类型的映射函数,θ={θhsr}表示上述步骤所提的参数集,s1:t表示时间步长为t时的一组状态即环境,/>表示子图遍历的结点交互序列的特征向量求和,T为时间步长的总数,/>表示到达期待状态/>所积累的信息量的映射值,/>表示时间步长为t时结点i的环境,/>表示时间步长为t时结点i的信息量,rt i表示时间步长为t时的结点向量序列,/>表示时间步长为t+1时的结点i,Ri表示遍历到结点i时所获得的奖励即时间步长t下所有已遍历结点的向量和。
进一步地,步骤4所述进行漏洞数据集平衡,具体为:利用过采样技术合成人工漏洞数据,平衡多数类和少数类样本;具体过程包括:
步骤4-1,计算整个漏洞数据集的多类别不平衡度IR,并根据类平均样本数A将漏洞数据集中的数据划分为多数类和少数类:
式中,C表示类别的总数,Ni和Nj分别表示类别i和类别j的样本尺寸,M'表示样本总数,L表示类别数,样本数大于A的标记为多数类,反之为少数类;
步骤4-2,利用基于邻居的聚类算法对少数类c进一步划分,划分为仅由少数类样本聚类构成的突出样本集Oic和与其他类样本边界有重叠的交叉样本集Tic
式中,Nk和RNk分别为K近邻和反K近邻集,xi表示少数类c的软核实例,软核实例为大于预设阈值的K近邻集,xj表示分别由xi的K近邻和反K近邻集所构成的集合中的软核实例,xi=hi,hi为通过步骤3-6得到的最优子图J的信息量;
步骤4-3,对于突出样本集Oic中的样本,随机在K1近邻方向上生成合成实例;
步骤4-4,对于交叉样本集Tic中的样本,计算其K1近邻方向上生成合成实例的权重W:
式中,e为自然数,γc、γma、γmi分别表示少数类c在PN上的样本集、多数类样本和其他少数类样本,Emi表示少数类熵,Ema表示多数类熵,r1、r2、w1、w2均为参数;
步骤4-5,对交叉样本集中的每个样本xi∈Tic检查其K1近邻,若没有仅包含少数类c的邻域,将该样本添加到自己的邻域集中并对其实例合成方向分配权重1+w1/e,归一化样本所有相邻方向上的选择权重,得到多个可供选择的用于合成实例的邻域的概率分布;
步骤4-6,为每个少数类生成相同数量的合成实例集SI:
si←xi+(xj-xi).*γ
SI←SI∪{si}
其中,si表示每个合成实例,γ为不同合成方向的权重W所对应的概率。
进一步地,步骤5所述构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例,具体过程包括:
步骤5-1,将步骤3学习到的漏洞特征图向量即信息量和步骤4合成的少数类特征图向量作为分类器的输入,通过多类别交叉熵损失函数softmax训练分类器,获得漏洞检测模型;
步骤5-2,对待测漏洞实例执行步骤3,将经过特征学习得到的漏洞代码图作为漏洞检测模型的输入,得到待测漏洞实例的预测标签将标记为训练集的经过特征学习得到的漏洞代码图存储为已知漏洞库;
步骤5-3,基于所述预测标签搜索已知漏洞库中类型标签为/>的所有漏洞代码图,作为候选代码图,之后计算待测漏洞实例对应的漏洞代码图和各候选漏洞代码图之间的汉明距离,并计算相应的最小化损失Lpair
其中,
式中,s(G1,G2)表示平均汉明相似度,G1、G2分别表示待测漏洞实例对应的漏洞代码图和候选漏洞代码图,分别表示G1、G2图向量化后的结果即最优遍历子图;表示数学期望;Lpair∈[0,1],Lpair越小,表示相似度越高,t∈{-1,1}表示两者之间的相似度标签,0表示不相似,1表示相似;
步骤5-4,对最小化损失Lpair进行升序排列进而对候选漏洞代码图进行排序;
步骤5-5,输出待测漏洞实例的漏洞类型和相似度较高的前N个候选漏洞代码图对应的漏洞作为推荐漏洞样例。
一种可解释性的软件漏洞检测与推荐系统,所述系统包括:
数据集构建模块,用于构建漏洞数据集;
图嵌入模块,用于进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
特征学习模块,用于进行漏洞特征学习,提取不同类型的特征;
平衡模块,用于进行漏洞数据集平衡,合成少数类数据;
漏洞检测和推荐模块,用于构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。
本发明与现有技术相比,其显著优点为:1)从图的角度对漏洞代码进行表示,通过多种代码图的组合能更好地利用漏洞代码语义信息,充分挖掘漏洞代码与上下文的关系;2)提出通过引入图挖掘算法的注意力机制,结合强化学习技术选择与整张函数图的漏洞语句最相关的函数子图,提高漏洞检测的效果;3)使用基于邻域的过采样技术对多分类问题中影响分类性能的数据不平衡问题进行了分析和解决,相较于传统的简单选择数据集中较为平衡的子集进行训练和检测,适用性更强;4)考虑到目前软件漏洞检测技术的可解释性差的问题,本发明通过在图神经网络学习漏洞特征的基础上进行子图匹配,推荐与被检测代码漏洞相似的已知漏洞,一定程度上可以解释漏洞产生的原因,为软件漏洞定位和修复的实际应用研究打下基础。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为一个实施例中可解释性的软件漏洞检测与推荐方法的流程图。
图2为一个实施例中部分代码图嵌入所构成的复合图。
图3为一个实施例中基于注意力机制的漏洞特征学习过程图。
图4为一个实施例中基于过采样的数据集平衡示意图。
图5为一个实施例中基于结点特征学习的子图匹配过程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,结合图1,本发明提出一种可解释性的软件漏洞检测与推荐方法,包括以下步骤:
步骤1,构建漏洞数据集;
步骤2,进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
步骤3,进行漏洞特征学习,提取不同类型的特征;
步骤4,进行漏洞数据集平衡,合成少数类数据(解决漏洞类别不平衡问题,提高特征泛化能力);
步骤5,构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。
进一步地,在其中一个实施例中,步骤1所述构建漏洞数据集,具体过程包括:
步骤1-1,采集漏洞数据库NVD和开源代码库GitHub中的漏洞数据,包括漏洞类型和漏洞文件;
步骤1-2,对提取出的漏洞文件进行预处理,从函数级别提取漏洞文件中的漏洞代码,去除文件中的多余信息,包括头文件,注释以及声明的全局参数等,得到漏洞数据集。
进一步地,在其中一个实施例中,步骤2所述进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构,具体过程包括:
步骤2-1,对CWE漏洞类型标签进行归并,获得漏洞类型表如下表2所示:
表2漏洞类型表
步骤2-2,结合表2对漏洞数据集中的漏洞数据进行分类,构建语料库,并随机选取80%的漏洞数据作为训练集,剩下的20%作为测试集;
步骤2-3,对漏洞数据集中的所有数据进行代码表征,通过工具Joern和Roslyn将漏洞代码表示为抽象语法树AST、控制流图CFG、程序依赖图PDG、代码语序图NCS、词法调用图LastLexicalUse、参数闭合图GuardedBy和GuardedByNegation;如图2所示,通过AST、CFG和PDG将代码表征为了复合图形结构,代码中的数据传递和控制依赖通过有向边连接各个图结点;
步骤2-4,利用Word2vec对语料库中通过AST解析得到的代码单词code tokens和代码语句statements进行词向量学习,获得一组词向量,其中语句的词向量通过对该语句所包含的代码单词求和取平均值得到。
进一步地,在其中一个实施例中,步骤3所述进行漏洞特征学习,提取不同类型的特征,具体过程包括:
步骤3-1,使用标签编码对漏洞代码图结点类型进行编码,与步骤2-4得到的结点词向量连结,得到每个结点的初始结点属性向量,并依此构造结点邻接矩阵和结点属性矩阵/>其中N为每一张漏洞代码图的结点数,D为每张漏洞代码图中结点的属性数,此外,每张漏洞代码图还包含一个由步骤2-1得到的对应图标签li
步骤3-2,依照属性向量的大小对不同类型的结点进行降序排列,构造结点向量序列r;设当前所遍历的结点为ct-1,对应的结点属性向量为t表示第t次遍历;
步骤3-3,在第t-1次遍历时的结点向量序列rt-1中,依次遍历当前遍历结点ct-1的每个邻居结点ct,计算从结点ct-1到结点ct这一步遍历所包含的信息量st
式中,θs为参数,fs为映射函数,为结点ct的属性向量;
步骤3-4,聚合遍历到结点ct所得到的子图所包含的每一步所包含的信息量ht
ht=fh(st,ht-1h)
式中,θh为参数,fh为映射函数,ht-1为聚合遍历到结点ct-1所得到的子图所包含的每一步所包含的信息量;
步骤3-5,计算遍历到结点ct所得到的子图的图标签比较该标签与步骤3-1中所述li是否一致,若一致,执行下一步,否则更新下一步遍历所需要的排序向量rt,并重复执行步骤3-3到3-5;其中,图标签/>的计算公式和排序向量rt的更新公式分别为:
rt=fr(ht;θr)
式中,θc和θr为参数,fc和fr为映射函数,P表示概率;如图3所示,通过时间步t不停地迭代,本方法在整张图的基础上挖掘并更新图标签
步骤3-6,计算同一张漏洞代码图在以不同结点为起点下遍历得到的所有子图中,信息量最大的最优遍历子图J:
式中,表示最优遍历子图J的梯度,i=1,…,M表示子图遍历的结点,所有的结点形成结点交互序列,M为结点总数,γ∈(0,1]表示折扣系数,/>表示结点和其类型的映射函数,θ={θhsr}表示上述步骤所提的参数集,s1:t表示时间步长为t时的一组状态即环境,/>表示子图遍历的结点交互序列的特征向量求和,T为时间步长的总数,/>表示到达期待状态/>所积累的信息量的映射值,/>表示时间步长为t时结点i的环境,/>表示时间步长为t时结点i的信息量,rt i表示时间步长为t时的结点向量序列,/>表示时间步长为t+1时的结点i,Ri表示遍历到结点i时所获得的奖励即时间步长t下所有已遍历结点的向量和。
采用本实施例的方案,通过引入图挖掘算法的注意力机制,结合强化学习技术选择与整张函数图的漏洞语句最相关的函数子图,提高漏洞检测的效果。
进一步地,在其中一个实施例中,步骤4所述进行漏洞数据集平衡,具体为:利用过采样技术合成人工漏洞数据,平衡多数类和少数类样本;具体过程包括:
步骤4-1,计算整个漏洞数据集的多类别不平衡度IR,并根据类平均样本数A将漏洞数据集中的数据划分为多数类和少数类:
式中,C表示类别的总数,Ni和Nj分别表示类别i和类别j的样本尺寸,M'表示样本总数,L表示类别数,样本数大于A的标记为多数类,反之为少数类;
步骤4-2,利用基于邻居的聚类算法对少数类c进一步划分,划分为仅由少数类样本聚类构成的突出样本集Oic和与其他类样本边界有重叠的交叉样本集Tic
式中,Nk和RNk分别为K近邻(以任一点为中心,K为半径的区域所构成的集合)和反K近邻集(对以任意点为中心的K近邻中,距离刚好为K的所有点以自己为中心,K为半径所构成的集合),xi表示少数类c的软核实例,软核实例为大于预设阈值的K近邻集,xj表示分别由xi的K近邻和反K近邻集所构成的集合中的软核实例,xi=hi,hi为通过步骤3-6得到的最优子图J的信息量。如图4所示,x1、x4、x5、x6属于突出样本集,x2、x3属于交叉样本集;
步骤4-3,对于突出样本集Oic中的样本,随机在K1近邻方向上生成合成实例;
步骤4-4,对于交叉样本集Tic中的样本,计算其K1近邻方向上生成合成实例的权重W:
式中,e为自然数,γc、γma、γmi分别表示少数类c在PN上的样本集、多数类样本和其他少数类样本,Emi表示少数类熵,Ema表示多数类熵,r1、r2、w1、w2均为参数;
步骤4-5,对交叉样本集中的每个样本xi∈Tic检查其K1近邻,若没有仅包含少数类c的邻域,将该样本添加到自己的邻域集中并对其实例合成方向分配权重1+w1/e,归一化样本所有相邻方向上的选择权重,得到多个可供选择的用于合成实例的邻域的概率分布;
步骤4-6,为每个少数类生成相同数量的合成实例集SI:
si←xi+(xj-xi).*γ
SI←SI∪{si}
其中,si表示每个合成实例,γ为不同合成方向的权重W所对应的概率。
采用本实施例的方案,使用基于邻域的过采样技术,对多分类问题中影响分类性能的数据不平衡问题进行了分析和解决,相较于传统的简单选择数据集中较为平衡的子集进行训练和检测,适用性更强。
进一步地,在其中一个实施例中,步骤5所述构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例,具体过程包括:
步骤5-1,将步骤3学习到的漏洞特征图向量即信息量和步骤4合成的少数类特征图向量作为分类器的输入,通过多类别交叉熵损失函数softmax训练分类器,获得漏洞检测模型;
步骤5-2,对待测漏洞实例执行步骤3,将经过特征学习得到的漏洞代码图作为漏洞检测模型的输入,得到待测漏洞实例的预测标签将标记为训练集的经过特征学习得到的漏洞代码图存储为已知漏洞库;
步骤5-3,基于所述预测标签搜索已知漏洞库中类型标签为/>的所有漏洞代码图,作为候选代码图,之后计算待测漏洞实例对应的漏洞代码图和各候选漏洞代码图之间的汉明距离,并计算相应的最小化损失Lpair
其中,
式中,s(G1,G2)表示平均汉明相似度,G1、G2分别表示待测漏洞实例对应的漏洞代码图和候选漏洞代码图,分别表示G1、G2图向量化后的结果即最优遍历子图;/>表示数学期望;Lpair∈[0,1],Lpair越小,表示相似度越高,t∈{-1,1}表示两者之间的相似度标签,0表示不相似,1表示相似。如图5所示,通过对应结点间的信息传递,计算整张图的相似度分数。
步骤5-4,对最小化损失Lpair进行升序排列进而对候选漏洞代码图进行排序;
步骤5-5,输出待测漏洞实例的漏洞类型和相似度较高的前N个候选漏洞代码图对应的漏洞作为推荐漏洞样例。
采用本实施例的方案,通过在图神经网络学习漏洞特征的基础上进行子图匹配,推荐与被检测代码漏洞相似的已知漏洞,一定程度上可以解释漏洞产生的原因,为软件漏洞定位和修复的实际应用研究打下基础。
在一个实施例中,提出了一种可解释性的软件漏洞检测与推荐系统,所述系统包括:
数据集构建模块,用于构建漏洞数据集;
图嵌入模块,用于进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
特征学习模块,用于进行漏洞特征学习,提取不同类型的特征;
平衡模块,用于进行漏洞数据集平衡,合成少数类数据;
漏洞检测和推荐模块,用于构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。
进一步地,在其中一个实施例中,所述数据集构建模块包括:
采集单元,用于采集漏洞数据库NVD和开源代码库GitHub中的漏洞数据,包括漏洞类型和漏洞文件;
提取单元,用于对提取出的漏洞文件进行预处理,从函数级别提取漏洞文件中的漏洞代码,去除文件中的多余信息,包括头文件,注释以及声明的全局参数等,得到漏洞数据集。
进一步地,在其中一个实施例中,所述图嵌入模块包括:
归并单元,用于对CWE漏洞类型标签进行归并,获得漏洞类型表如下表3所示:
表3漏洞类型表
/>
/>
第一划分单元,用于结合表3对漏洞数据集中的漏洞数据进行分类,构建语料库,并随机选取80%的漏洞数据作为训练集,剩下的20%作为测试集;
表征单元,用于对漏洞数据集中的所有数据进行代码表征,通过工具Joern和Roslyn将漏洞代码表示为抽象语法树AST、控制流图CFG、程序依赖图PDG、代码语序图NCS、词法调用图LastLexicalUse、参数闭合图GuardedBy和GuardedByNegation;
图嵌入单元,用于利用Word2vec对语料库中通过AST解析得到的代码单词codetokens和代码语句statements进行词向量学习,获得一组词向量,其中语句的词向量通过对该语句所包含的代码单词求和取平均值得到。
进一步地,在其中一个实施例中,所述特征学习模块包括依次执行的:
初始化单元,用于使用标签编码对漏洞代码图结点类型进行编码,与图嵌入单元得到的结点词向量连结,得到每个结点的初始结点属性向量,并依此构造结点邻接矩阵和结点属性矩阵/>其中N为每一张漏洞代码图的结点数,D为每张漏洞代码图中结点的属性数,此外,每张漏洞代码图还包含一个由归并单元得到的对应图标签li
排序单元,用于依照属性向量的大小对不同类型的结点进行降序排列,构造结点向量序列r;设当前所遍历的结点为ct-1,对应的结点属性向量为t表示第t次遍历;
信息量求取单元,用于在第t-1次遍历时的结点向量序列rt-1中,依次遍历当前遍历结点ct-1的每个邻居结点ct,计算从结点ct-1到结点ct这一步遍历所包含的信息量st
式中,θs为参数,fs为映射函数,为结点ct的属性向量;
信息量聚合单元,用于聚合遍历到结点ct所得到的子图所包含的每一步所包含的信息量ht
ht=fh(st,ht-1h)
式中,θh为参数,fh为映射函数,ht-1为聚合遍历到结点ct-1所得到的子图所包含的每一步所包含的信息量;
更新单元,用于计算遍历到结点ct所得到的子图的图标签比较该标签与初始化单元中所述li是否一致,若一致,执行最优子图求取单元,否则更新下一次遍历所需要的排序向量rt,并重复执行信息量求取单元至更新单元;其中,图标签/>的计算公式和排序向量rt的更新公式分别为:
rt=fr(ht;θr)
式中,θc和θr为参数,fc和fr为映射函数,P表示概率;
最优子图求取单元,用于计算同一张漏洞代码图在以不同结点为起点下遍历得到的所有子图中,信息量最大的最优遍历子图J:
式中,表示最优遍历子图J的梯度,i=1,…,M表示子图遍历的结点,所有的结点形成结点交互序列,M为结点总数,γ∈(0,1]表示折扣系数,/>表示结点和其类型的映射函数,θ={θhsr}表示上述单元所提的参数集,s1:t表示时间步长为t时的一组状态即环境,/>表示子图遍历的结点交互序列的特征向量求和,T为时间步长的总数,/>表示到达期待状态/>所积累的信息量的映射值,/>表示时间步长为t时结点i的环境,/>表示时间步长为t时结点i的信息量,rt i表示时间步长为t时的结点向量序列,/>表示时间步长为t+1时的结点i,Ri表示遍历到结点i时所获得的奖励即时间步长t下所有已遍历结点的向量和。
进一步地,在其中一个实施例中,所述平衡模块包括依次执行的:
第二划分单元,用于计算整个漏洞数据集的多类别不平衡度IR,并根据类平均样本数A将漏洞数据集中的数据划分为多数类和少数类:
式中,C表示类别的总数,Ni和Nj分别表示类别i和类别j的样本尺寸,M'表示样本总数,L表示类别数,样本数大于A的标记为多数类,反之为少数类;
聚类单元,用于利用基于邻居的聚类算法对少数类c进一步划分,划分为仅由少数类样本聚类构成的突出样本集Oic和与其他类样本边界有重叠的交叉样本集Tic
式中,Nk和RNk分别为K近邻和反K近邻集,xi表示少数类c的软核实例,软核实例为大于预设阈值的K近邻集,xj表示分别由xi的K近邻和反K近邻集所构成的集合中的软核实例,xi=hi,hi为通过最优子图求取单元得到的最优子图J的信息量;
合成样本单元,用于对于突出样本集Oic中的样本,随机在K1近邻方向上生成合成实例;
权重计算单元,用于对于交叉样本集Tic中的样本,计算其K1近邻方向上生成合成实例的权重W:
式中,e为自然数,γc、γma、γmi分别表示少数类c在PN上的样本集、多数类样本和其他少数类样本,Emi表示少数类熵,r1、r2、w1、w2均为参数;
转化单元,用于对交叉样本集中的每个样本xi∈Tic检查其K1近邻,若没有仅包含少数类c的邻域,将该样本添加到自己的邻域集中并对其实例合成方向分配权重1+w1/e,归一化样本所有相邻方向上的选择权重,得到多个可供选择的用于合成实例的邻域的概率分布;
合成单元,用于为每个少数类生成相同数量的合成实例集SI:
si←xi+(xj-xi).*γ
SI←SI∪{si}
其中,si表示每个合成实例,γ为不同合成方向的权重W所对应的概率。
进一步地,在其中一个实施例中,所述漏洞检测和推荐模块包括依次执行的:
模型构建单元,用于将特征学习模块学习到的漏洞特征图向量即信息量和平衡模块合成的少数类特征图向量作为分类器的输入,通过多类别交叉熵损失函数softmax训练分类器,获得漏洞检测模型;
检测单元,用于对待测漏洞实例执行特征学习模块,将经过特征学习得到的漏洞代码图作为漏洞检测模型的输入,得到待测漏洞实例的预测标签将标记为训练集的经过特征学习得到的漏洞代码图存储为已知漏洞库;
相似度计算单元,基于所述预测标签搜索已知漏洞库中类型标签为/>的所有漏洞代码图,作为候选代码图,之后计算待测漏洞实例对应的漏洞代码图和各候选漏洞代码图之间的汉明距离,并计算相应的最小化损失Lpair
其中,
式中,s(G1,G2)表示平均汉明相似度,G1、G2分别表示待测漏洞实例对应的漏洞代码图和候选漏洞代码图,分别表示G1、G2图向量化后的结果即最优遍历子图;表示数学期望;Lpair∈[0,1],Lpair越小,表示相似度越高,t∈{-1,1}表示两者之间的相似度标签,0表示不相似,1表示相似;
排序单元,用于对最小化损失Lpair进行升序排列进而对候选漏洞代码图进行排序;
输出单元,用于输出待测漏洞实例的漏洞类型和相似度较高的前N个候选漏洞代码图对应的漏洞作为推荐漏洞样例。
本发明可以更好地利用漏洞代码的语法、语义信息,充分挖掘漏洞代码与上下文的关系,达到对多种漏洞类型的判别与输出,普适性和通用性更强,可以取代实际代码审计中人工制定漏洞指标的环节,并推荐与检测代码所含漏洞类似的已知漏洞,使实际应用领域更广、精度更高、可解释性强。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (4)

1.一种可解释性的软件漏洞检测与推荐方法,其特征在于,所述方法包括以下步骤:
步骤1,构建漏洞数据集;
步骤2,进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
步骤3,进行漏洞特征学习,提取不同类型的特征;
步骤4,进行漏洞数据集平衡,合成少数类数据;
步骤5,构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例;
步骤1所述构建漏洞数据集,具体过程包括:
步骤1-1,采集漏洞数据库NVD和开源代码库GitHub中的漏洞数据,包括漏洞类型和漏洞文件;
步骤1-2,对提取出的漏洞文件进行预处理,从函数级别提取漏洞文件中的漏洞代码,去除文件中的多余信息,包括头文件,注释以及声明的全局参数,得到漏洞数据集;
步骤2所述进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构,具体过程包括:
步骤2-1,对CWE漏洞类型标签进行归并,获得漏洞类型表如下表1所示:
表1漏洞类型表
步骤2-2,结合表1对漏洞数据集中的漏洞数据进行分类,构建语料库,并随机选取80%的漏洞数据作为训练集,剩下的20%作为测试集;
步骤2-3,对漏洞数据集中的所有数据进行代码表征,通过工具Joern和Roslyn将漏洞代码表示为抽象语法树AST、控制流图CFG、程序依赖图PDG、代码语序图NCS、词法调用图LastLexicalUse、参数闭合图GuardedBy和GuardedByNegation;
步骤2-4,利用Word2vec对语料库中通过AST解析得到的代码单词code tokens和代码语句statements进行词向量学习,获得一组词向量,其中语句的词向量通过对该语句所包含的代码单词求和取平均值得到;
步骤3所述进行漏洞特征学习,提取不同类型的特征,具体过程包括:
步骤3-1,使用标签编码对漏洞代码图结点类型进行编码,与步骤2-4得到的结点词向量连结,得到每个结点的初始结点属性向量,并依此构造结点邻接矩阵和结点属性矩阵/>其中N为每一张漏洞代码图的结点数,D为每张漏洞代码图中结点的属性数,此外,每张漏洞代码图还包含一个由步骤2-1得到的对应图标签li
步骤3-2,依照属性向量的大小对不同类型的结点进行降序排列,构造结点向量序列r;设当前所遍历的结点为ct-1,对应的结点属性向量为dct-1;t表示第t次遍历;
步骤3-3,在第t-1次遍历时的结点向量序列rt-1中,依次遍历当前遍历结点ct-1的每个邻居结点ct,计算从结点ct-1到结点ct这一步遍历所包含的信息量st
st=fs(dct,rt-1s)
式中,θs为参数,fs为映射函数,dct为结点ct的属性向量;
步骤3-4,聚合遍历到结点ct所得到的子图所包含的每一步所包含的信息量ht
ht=fh(st,ht-1h)
式中,θh为参数,fh为映射函数,ht-1为聚合遍历到结点ct-1所得到的子图所包含的每一步所包含的信息量;
步骤3-5,计算遍历到结点ct所得到的子图的图标签比较该图标签与步骤3-1中所述li是否一致,若一致,执行下一步,否则更新下一步遍历所需要的排序向量rt,并重复执行步骤3-3到3-5;其中,图标签/>的计算公式和排序向量rt的更新公式分别为:
rt=fr(ht;θr)
式中,θc和θr为参数,fc和fr为映射函数,P表示概率;
步骤3-6,计算同一张漏洞代码图在以不同结点为起点下遍历得到的所有子图中,信息量最大的最优遍历子图J:
式中,表示最优遍历子图J的梯度,i=1,L,M表示子图遍历的结点,所有的结点形成结点交互序列,M为结点总数,γ∈(0,1]表示折扣系数,/>表示结点和其类型的映射函数,θ={θhsr}表示上述步骤所提的参数集,s1:t表示时间步长为t时的一组状态即环境,表示子图遍历的结点交互序列的特征向量求和,T为时间步长的总数,/>表示到达期待状态/>所积累的信息量的映射值,/>表示时间步长为t时结点i的环境,/>表示时间步长为t时结点i的信息量,/>表示时间步长为t时的结点向量序列,/>表示时间步长为t+1时的结点i,Ri表示遍历到结点i时所获得的奖励即时间步长t下所有已遍历结点的向量和。
2.根据权利要求1所述的可解释性的软件漏洞检测与推荐方法,其特征在于,步骤4所述进行漏洞数据集平衡,具体为:利用过采样技术合成人工漏洞数据,平衡多数类和少数类样本;具体过程包括:
步骤4-1,计算整个漏洞数据集的多类别不平衡度IR,并根据类平均样本数A将漏洞数据集中的数据划分为多数类和少数类:
式中,C表示类别的总数,Ni和Nj分别表示类别i和类别j的样本尺寸,M'表示样本总数,L表示类别数,样本数大于A的标记为多数类,反之为少数类;
步骤4-2,利用基于邻居的聚类算法对少数类c进一步划分,划分为仅由少数类样本聚类构成的突出样本集Oic和与其他类样本边界有重叠的交叉样本集Tic
式中,Nk和RNk分别为K近邻和反K近邻集,xi表示少数类c的软核实例,软核实例为大于预设阈值的K近邻集,xj表示分别由xi的K近邻和反K近邻集所构成的集合中的软核实例,xi=hi,hi为通过步骤3-6得到的最优子图J的信息量;
步骤4-3,对于突出样本集Oic中的样本,随机在K1近邻方向上生成合成实例;
步骤4-4,对于交叉样本集Tic中的样本,计算其K1近邻方向上生成合成实例的权重W:
式中,e为自然数,γc、γma、γmi分别表示少数类c在PN上的样本集、多数类样本和其他少数类样本,Emi表示少数类熵,Ema表示多数类熵,r1、r2、w1、w2均为参数;
步骤4-5,对交叉样本集中的每个样本xi∈Tic检查其K1近邻,若没有仅包含少数类c的邻域,将该样本添加到自己的邻域集中并对其实例合成方向分配权重1+w1/e,归一化样本所有相邻方向上的选择权重,得到多个可供选择的用于合成实例的邻域的概率分布;
步骤4-6,为每个少数类生成相同数量的合成实例集SI:
si←xi+(xj-xi).*γ
SI←SIU{si}
其中,si表示每个合成实例,γ为不同合成方向的权重W所对应的概率。
3.根据权利要求2所述的可解释性的软件漏洞检测与推荐方法,其特征在于,步骤5所述构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例,具体过程包括:
步骤5-1,将步骤3学习到的漏洞特征图向量即信息量和步骤4合成的少数类特征图向量作为分类器的输入,通过多类别交叉熵损失函数softmax训练分类器,获得漏洞检测模型;
步骤5-2,对待测漏洞实例执行步骤3,将经过特征学习得到的漏洞代码图作为漏洞检测模型的输入,得到待测漏洞实例的预测标签将标记为训练集的经过特征学习得到的漏洞代码图存储为已知漏洞库;
步骤5-3,基于所述预测标签搜索已知漏洞库中类型标签为/>的所有漏洞代码图,作为候选代码图,之后计算待测漏洞实例对应的漏洞代码图和各候选漏洞代码图之间的汉明距离,并计算相应的最小化损失Lpair
其中,
式中,s(G1,G2)表示平均汉明相似度,G1、G2分别表示待测漏洞实例对应的漏洞代码图和候选漏洞代码图,分别表示G1、G2图向量化后的结果即最优遍历子图;/>表示数学期望;Lpair∈[0,1],Lpair越小,表示相似度越高,t∈{-1,1}表示两者之间的相似度标签,0表示不相似,1表示相似;
步骤5-4,对最小化损失Lpair进行升序排列进而对候选漏洞代码图进行排序;
步骤5-5,输出待测漏洞实例的漏洞类型lt%和相似度较高的前N个候选漏洞代码图对应的漏洞作为推荐漏洞样例。
4.基于权利要求1至3任意一项所述方法的可解释性的软件漏洞检测与推荐系统,其特征在于,所述系统包括:
数据集构建模块,用于构建漏洞数据集;
图嵌入模块,用于进行漏洞代码图嵌入,将代码转化为可供神经网络学习的图形结构;
特征学习模块,用于进行漏洞特征学习,提取不同类型的特征;
平衡模块,用于进行漏洞数据集平衡,合成少数类数据;
漏洞检测和推荐模块,用于构建漏洞检测模型,利用该模型检测待测漏洞实例所含漏洞并为其推荐漏洞样例。
CN202011131831.4A 2020-10-21 2020-10-21 可解释性的软件漏洞检测与推荐方法及系统 Active CN112364352B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011131831.4A CN112364352B (zh) 2020-10-21 2020-10-21 可解释性的软件漏洞检测与推荐方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011131831.4A CN112364352B (zh) 2020-10-21 2020-10-21 可解释性的软件漏洞检测与推荐方法及系统

Publications (2)

Publication Number Publication Date
CN112364352A CN112364352A (zh) 2021-02-12
CN112364352B true CN112364352B (zh) 2023-11-24

Family

ID=74511403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011131831.4A Active CN112364352B (zh) 2020-10-21 2020-10-21 可解释性的软件漏洞检测与推荐方法及系统

Country Status (1)

Country Link
CN (1) CN112364352B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342318B (zh) * 2021-04-19 2022-06-10 山东师范大学 基于多视图代码特征的细粒度代码自动生成方法及系统
CN113138924B (zh) * 2021-04-23 2023-10-31 扬州大学 一种基于图学习的线程安全代码识别方法
CN113434418A (zh) * 2021-06-29 2021-09-24 扬州大学 知识驱动的软件缺陷检测与分析方法及系统
CN113742733B (zh) * 2021-08-09 2023-05-26 扬州大学 阅读理解漏洞事件触发词抽取和漏洞类型识别方法及装置
WO2023092511A1 (en) * 2021-11-26 2023-06-01 Huawei Technologies Co.,Ltd. Methods and apparatuses for software vulnerability detection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110471856A (zh) * 2019-08-21 2019-11-19 大连海事大学 一种基于数据不平衡的软件缺陷预测方法
CN111274134A (zh) * 2020-01-17 2020-06-12 扬州大学 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质
CN111552969A (zh) * 2020-04-21 2020-08-18 中国电力科学研究院有限公司 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置
CN111783100A (zh) * 2020-06-22 2020-10-16 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110471856A (zh) * 2019-08-21 2019-11-19 大连海事大学 一种基于数据不平衡的软件缺陷预测方法
CN111274134A (zh) * 2020-01-17 2020-06-12 扬州大学 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质
CN111552969A (zh) * 2020-04-21 2020-08-18 中国电力科学研究院有限公司 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置
CN111783100A (zh) * 2020-06-22 2020-10-16 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于抽象语法树的智能化漏洞检测系统;陈肇炫等;《信息安全学报》;第第5卷卷(第第4期期);正文第1-11页 *
基于机器学习的软件漏洞挖掘方法综述;李韵等;《软件学报》;正文第2042-2043页 *

Also Published As

Publication number Publication date
CN112364352A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
CN112364352B (zh) 可解释性的软件漏洞检测与推荐方法及系统
Bennin et al. Mahakil: Diversity based oversampling approach to alleviate the class imbalance issue in software defect prediction
US7606784B2 (en) Uncertainty management in a decision-making system
CN110232280B (zh) 一种基于树结构卷积神经网络的软件安全漏洞检测方法
Xia et al. Collective personalized change classification with multiobjective search
WO2021007213A1 (en) Techniques for creating, analyzing, and modifying neural networks
CN117951701A (zh) 用于确定软件代码中的缺陷和漏洞的方法
Dwivedi et al. Software design pattern mining using classification-based techniques
US11640539B2 (en) Techniques for visualizing the operation of neural networks using samples of training data
CN109857457B (zh) 一种在双曲空间中学习源代码中的函数层次嵌入表示方法
CN116049831A (zh) 一种基于静态分析和动态分析的软件漏洞检测方法
CN113609488B (zh) 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统
CN110399286A (zh) 一种基于独立路径的测试数据自动生成方法
CN116305158A (zh) 一种基于切片代码依赖图语义学习的漏洞识别方法
CN111767216B (zh) 一种可缓解类重叠问题的跨版本深度缺陷预测方法
CN113434418A (zh) 知识驱动的软件缺陷检测与分析方法及系统
CN110162972A (zh) 一种基于语句联合编码深度神经网络的uaf漏洞检测方法
WO2021007215A1 (en) Techniques for modifying the operation of neural networks
CN114064459A (zh) 基于生成对抗网络和集成学习的软件缺陷预测方法
Damke et al. A novel higher-order weisfeiler-lehman graph convolution
Rajbahadur et al. Pitfalls analyzer: quality control for model-driven data science pipelines
CN116702157A (zh) 一种基于神经网络的智能合约漏洞检测方法
CN111898134A (zh) 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置
CN110502669A (zh) 基于n边dfs子图的轻量级无监督图表示学习方法及装置
CN116662991A (zh) 基于人工智能的智能合约意图检测方法

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