首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于GraphCodeBERT的安全漏洞检测方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:南通大学

摘要:本发明提供了一种基于GraphCodeBERT的安全漏洞检测方法,其技术方案为:首先对源代码进行预处理,得到数据流词元、源代码词元和注释词元,作为安全漏洞检测模型的输入,模型采用编码器‑解码器框架,编码器端使用预训练的GraphCodeBERT,解码器端使用双向长短期记忆BiLSTM模型作为分类模型,最终输出一个二分类结果,用来判断代码是否包含安全漏洞。本发明的有益效果为:基于函数粒度,将安全漏洞检测问题建模为二分类问题;与传统的词向量方法不同,通过在编码器端考虑数据流信息,使得模型更容易学到漏洞模式。

主权项:1.一种基于GraphCodeBERT的安全漏洞检测方法,其特征在于,包括如下步骤:1将源代码建模为抽象语法树,随后通过遍历抽象语法树,识别出其中的变量序列,接着从变量序列中抽取出变量关系,使用集合V和集合E分别表示节点集合和有向边集合,随后将集合内的元素视为数据流词元;步骤1中从源代码中识别出数据流词元,具体包括如下步骤:1-1将源代码建模为抽象语法树;1-2遍历步骤1-1中建立的抽象语法树,识别出其中的变量序列,接着从变量序列中抽取出变量关系,如果一个变量节点A的值来自于其祖先节点B,得到一个由B指向A的关系;如果一个变量节点A的值来自于其孩子节点B和C,分别得到由B指向A和由C指向A的关系;如果两个变量A与B是运算符节点的两个子节点,得到的是两个独立的有向图,不建立关系;如果两个变量A与B是赋值运算符节点或赋值函数节点的左右子节点,依照中序和逆序得到由B指向A的关系,最终构建出基于函数粒度的数据流图,使用集合V和集合E分别表示节点集合和有向边集合,再将集合内的元素视为数据流词元;2基于编码器-解码器架构,构建安全漏洞静态检测模型,在编码器端采用预训练模型GraphCodeBERT,其输入为数据流词元、基于代码文本的词元和基于注释文本的词元,其输出为代码的嵌入表示,用向量或者矩阵来表示;在解码器端采用双向长短期记忆BiLSTM模型来构建分类器,其输入是编码器端输出的代码嵌入表示,输出是该代码内是否含有安全漏洞;步骤2中构建安全漏洞静态检测模型,具体包括如下步骤:2-1在编码器端采用预训练模型GraphCodeBERT,其输入为数据流词元、基于代码文本的词元和基于注释文本的词元,其输出为代码的嵌入表示,用向量或者矩阵表示,首先使用GraphCodeBERT-base作为初始预训练模型,GraphCodeBERT-base处理C#、Java主流编程语言,再使用搜集的安全漏洞检测数据集对上述预训练模型进行微调;2-2在解码器端采用双向长短期记忆BiLSTM模型构建分类器,其输入是编码器端输出的代码嵌入表示,输出是该代码内是否含有安全漏洞,其解码器结构设计如下:首先使用3层BiLSTM层堆叠,再使用1层全连接层减少中间向量维度,最后添加softmax层输出二分类结果,整个训练过程使用交叉熵Loss作为损失函数,并利用梯度下降来训练模型;2-3基于编码器-解码器架构,根据2-1所述的编码器端和2-2所述的解码器端的组合,构建安全漏洞静态检测模型;3当面对新的代码时,识别出对应的数据流词元、基于代码文本的词元和基于注释文本的词元,将其输入步骤2中构建的安全漏洞静态检测模型,并得到预测结果,即含有安全漏洞或不含有安全漏洞。

全文数据:

权利要求:

百度查询: 南通大学 一种基于GraphCodeBERT的安全漏洞检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。