基于迁移学习的零样本漏洞检测方法技术

技术编号:39519737 阅读:14 留言:0更新日期:2023-11-25 18:58
本发明专利技术公开了一种基于迁移学习的零样本漏洞检测方法,包括以下步骤:获取已知目标语言的节点特征和对应的漏洞检测模型;获取目标语言的代码的节点特征;采用了抽象语法树作为特征映射的中间形式,将源语言的代码和目标语言的节点特征映射到相同的抽象语法树结构上;构建映射字典;根据映射关系,对语法树节点类型进行分类;对结构类型节点,引入上下文感知技术的特征映射方法;获得源语言的代码转换后的目标语言抽象语法树,使用目标语言的漏洞检测模型进行漏洞检测

【技术实现步骤摘要】
基于迁移学习的零样本漏洞检测方法


[0001]本专利技术涉及信息安全技术,尤其涉及一种基于迁移学习的零样本漏洞检测方法


技术介绍

[0002]在漏洞挖掘领域中,深度学习模型因其强大的自适应能力和泛化能力而受到越来越多的关注

在传统的代码空间中,依靠人工专家系统很难提取出漏洞的复杂特征

而基于传统机器学习的软件安全漏洞挖掘模型依赖于安全专家去定义漏洞特征,且只能挖掘已知的漏洞信息,在实际应用环境中无法挖掘未知的漏洞信息,应用范围比较局限

相较于传统的机器学习,深度学习可以最大程度上抽象出漏洞特征的更深层信息,构建新的代码表征方式将有助于提升现有漏洞挖掘模型的性能

[0003]迁移学习方法在漏洞挖掘领域中,往从挖掘模型迁移和漏洞特征迁移这两个方面开展迁移工作

在旧漏洞的知识体系下,对新的漏洞学习过程中对模型参数的微调,可以实现在小样本漏洞领域下基于模型层面的迁移学习

但对于漏洞特征迁移的模型描述还比较少


技术实现思路

[0004]本专利技术要解决的技术问题在于针对现有技术中的缺陷,提供一种基于迁移学习的零样本漏洞检测方法

[0005]本专利技术解决其技术问题所采用的技术方案是:一种基于迁移学习的零样本漏洞检测方法,包括以下步骤:
[0006]1)
获取已知目标语言的节点特征和对应的漏洞检测模型;
[0007]2)
>通过收集目标语言中的所有代码的
token
信息,获取目标语言的代码的节点特征;
[0008]对代码进行词法分析时将代码拆分成一个个
token
,并进一步进行语法分析和执行,按照词法单元的属性,将
token
分成了
10
类:
[0009]所述
token

10
类信息包括标识符

操作符和分隔符

注释

数字

空格和换行符

关键字

字面量

字符串

布尔常量和特殊字符十种类型;
[0010]token
对应语法树节点名称的相似性,最终构造映射字典中的映射规则;
[0011]3)
采用了抽象语法树
(AST)
作为特征映射的中间形式,将源语言的代码和目标语言的节点特征映射到相同的抽象语法树结构上;
[0012]4)
构建映射字典;
[0013]映射字典用于存储源语言中的节点类型与目标语言中对应节点类型的映射关系;
[0014]通过将不同语言的两类
token
的语法树节点进行相似聚类分析,得到大多数节点的直接映射关系;
[0015]将
token
进行
Word2Vec
向量化处理后利用余弦相似度的方法来度量
token
之间的相似度,最后通过
k

means
算法按照相似度大小对
token
完成聚类,将相似的节点分配到同
一个簇中,从而建立了节点之间的语义相似性关系;若单个簇中的元素等于2个则直接构建一对一的映射规则;
[0016]5)
根据映射关系,对语法树节点类型进行分类,将涉及到的节点类型分为需要进行上下文感知技术的结构类型节点和不需要进行上下文感知技术两类;
[0017]其中,结构类型节点包括关键字和字面量两类;
[0018]6)
对结构类型节点,引入上下文感知技术的特征映射方法;具体如下:
[0019]对于需要上下文感知映射的节点,根据上下文窗口大小,从源语言的源代码中提取相应的周围代码片段作为上下文信息;
[0020]获取所有基于上下文的结构类型的语法树节点,根据代码的基本结构和语义表示确定各基于上下文的结构类型的语法树节点的上下文的窗口大小,针对节点所描述的语法树规则构建具有通用性的基于上下文的映射关系;
[0021]当确定好上下文窗口之后,对于每个需要进行上下文感知映射的节点,将语法树具体的语义信息和提取得到的上下文信息进行合并,形成融合了代码结构和语义的完整特征表示;
[0022]根据节点的类型来查找映射字典,通过语法树节点对点的一个映射关系将源语言的结构类型节点信息替换成目标语言语法树节点的表现形式,从而实现了语法树节点的对应关系;
[0023]通过映射,保留了原始语言语法树的语义和结构,将其对应到目标语言中的目标节点上

[0024]7)
对步骤
4)
中聚类结构的存在的离群点和同一语言下的节点聚类簇,单独抽取分析,并针对性的构造节点的映射规则作为增补的节点映射规则;
[0025]对未映射的标识符,特殊字符
(
如冒号

逗号

点号等
)
,数字,布尔常量,字符串以及注释信息和代码的格式信息,上述类型的
token
信息在语法树映射过程中保留原语言的特性,不做单独映射处理;
[0026]8)
获得源语言的代码转换后的目标语言抽象语法树,使用目标语言的漏洞检测模型进行漏洞检测

[0027]本专利技术产生的有益效果是:
[0028]本专利技术提出了一种基于特征层面迁移的漏洞检测方法,通过将代码转换成抽象语法树,然后在语法树层面进行代码迁移,通过语义相似性对语法树节点信息进行聚类,可以快速并准确的构建好不同语言之间的节点映射关系,同时在语法树的映射过程中引入上下文感知技术帮助解决歧义或模糊的语法结构,提高解析性能

该方法实现检测样本从未知领域变换到已知领域,利用在原有领域构建的深度学习模型,可以将新领域任务迁移到已知领域,最终解决跨域的知识迁移的应用

附图说明
[0029]下面将结合附图及实施例对本专利技术作进一步说明,附图中:
[0030]图1是本专利技术实施例的方法流程图;
[0031]图2是本专利技术实施例的节点相似度散点图

具体实施方式
[0032]为了使本专利技术的目的

技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明

应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术

[0033]如图1所示,一种基于迁移学习的零样本漏洞检测方法,包括以下步骤:
[0034]1)
获取已知目标语言的节点特征和对应的漏洞检测模型;
[0035]2)
通过收集目标语言中的所有代码的
token
...

【技术保护点】

【技术特征摘要】
1.
一种基于迁移学习的零样本漏洞检测方法,其特征在于,包括以下步骤:
1)
获取已知目标语言的节点特征和对应的漏洞检测模型;
2)
通过收集目标语言中的所有代码的
token
信息,获取目标语言的代码的节点特征;对代码进行词法分析时将代码拆分成一个个
token
,并进一步进行语法分析和执行,按照词法单元的属性,将
token
分成了
10
类:所述
token

10
类信息包括标识符

操作符和分隔符

注释

数字

空格和换行符

关键字

字面量

字符串

布尔常量和特殊字符十种类型;
token
对应语法树节点名称的相似性,最终构造映射字典中的映射规则;
3)
采用了抽象语法树作为特征映射的中间形式,将源语言的代码和目标语言的节点特征映射到相同的抽象语法树结构上;
4)
构建映射字典;映射字典用于存储源语言中的节点类型与目标语言中对应节点类型的映射关系;
5)
根据映射关系,对语法树节点类型进行分类,将涉及到的节点类型分为需要进行上下文感知技术的结构类型节点和不需要进行上下文感知技术两类;其中,结构类型节点包括关键字和字面量两类;
6)
对结构类型节点,引入上下文感知技术的特征映射方法;具体如下:对于需要上下文感知映射的节点,根据上下文窗口大小,从源语言的源代码中提取相应的周围代码片段作为上下文信息;获取所有基于上下文的结构类型的语法树节点,根据代码的基本结构和语义表示确定各基于上下文的结构类型的语法树节点的上下文的窗口大小,针对节点所描述的语法树规则构建具有通用性的基于上下文的映射关系;当确定好上下文窗口之后,对于每个需要进行上...

【专利技术属性】
技术研发人员:李子俊李涛陈浩东余琴乔梦晴李琳王颉万振华宋荆汉
申请(专利权)人:武汉科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1