摘要
现有基于深度学习的源代码漏洞检测方法主要针对单一编程语言进行特征学习,难以对混合编程语言软件项目因代码单元间的关联和调用产生漏洞进行有效检测.因此,本文提出了一种基于深度学习的混合语言源代码漏洞检测方法DL-HLVD.首先利用BERT层将代码文本转换为低维向量,并将其作为双向门控循环单元的输入来捕获上下文特征,同时使用条件随机场来捕获相邻标签间的依赖关系;然后对混合语言软件中不同类型编程语言的函数进行命名实体识别,并将其和程序切片结果进行重构来减少代码表征过程中的语法和语义信息的损失;最后设计双向长短期记忆网络模型提取漏洞代码特征,实现对混合语言软件漏洞检测.在SARD和CrossVul数据集上的实验结果表明,DL-HLVD在两类漏洞数据集上识别软件漏洞的综合召回率达到了95.0%,F1值达到了93.6%,比最新的深度学习方法VulDee- Pecker、SySeVR、Project Achilles在各个指标上均有提升,说明DL-HLVD能够提高混合语言场景下源代码漏洞检测的综合性能.
软件系统的复杂性和多样性导致软件漏洞成为影响软件安全的主要因素之
物联网的普及以及物联网设备的多样性增加了物联网软件系统的复杂性和异构性,加剧了物联网软件系统的安全风
深度学习在软件漏洞检测中的准确率高于传统机器学习方法,但在处理长文本等复杂任务时还存在记忆和理解能力不足的问题.为此,BERT模
针对上述挑战,本文基于BERT、双向门控循环单元(bidirectional gated recurrent unit, BGRU)、条件随机场(conditional random field, CRF)和双向长短时记忆网络(bidirectional long short-term memory, BLSTM)技术,提出了一种基于深度学习的混合语言源代码漏洞检测(deep learning-based hybrid language source code vulnerability detection, DL-HLVD)方法.本文的主要贡献可总结如下:
1)DL-HLVD从SARD数据
2)提出一种基于BERT-BGRU-CRF的混合语言源代码命名实体识别模型,学习实体特征和依赖关系,并通过将命名实体识别学习结果与程序切片重构提高漏洞检测的泛化能力,以此解决正则表达式在开放域场景下的局限性.
3)为验证DL-HLVD对混合语言源代码漏洞检测的能力,基于SARD和CrossVul数据集进行了全面的实验验证与分析.结果表明,相比于VulDee- Pecker, SySeVR和Project Achilles等深度学习方法,DL-HLVD在混合编程语言漏洞数据集上表现出更好的性能.
1 相关工作
软件漏洞检测方法主要用于软件源代码漏洞的检测和分析,以保证软件系统的安全稳定运行.这些检测方法可分为基于规则的源代码漏洞检测方法和基于深度学习的源代码漏洞检测方法.
1.1 基于规则的源代码漏洞检测方法
通常,基于规则的源代码漏洞检测方法利用Flawfinde
商业工具Checkmar
1.2 基于深度学习的源代码漏洞检测方法
当前,深度学习技术在恶意代码检测、垃圾邮件过滤等领域取得了突破性进展,能很好地解决传统漏洞检测方法存在的不足.Anbiya
新近的研究工
2 DL-HLVD方法设计
2.1 背景知识
2.1.1 程序静态分析相关概念
AST是源代码的树状表示,是构成其他代码表征图的基础,其节点表示源代码中的结构(如代码块、语句、声明、表达式等).控制流图(control flow graph, CFG)是一种有向图,描述了一个程序执行过程中可能遍历到的所有路径.CPG整合了AST和CFG,包含源代码的语义语法特征和行为信息.为了充分利用CPG中的信息并简化预处理,本文先将CPG转换成序列来表征函数,并通过神经网络模型抽取序列中潜在的编程模式.函数的CPG表征过程为:首先生成函数的CPG;然后提取CPG中的关键信息并转化成序列;接着将文本形式的序列映射成数值型的向量并根据设置的长度对向量进行填充和截断操作;最后对向量进行词嵌入处理,将向量中的每个元素替换成对应的词向量.
2.1.2 词嵌入技术
在检测源代码漏洞时,通常需要采用词向量嵌入算法将经过数据预处理的信息看作纯文本输入漏洞检测模型.FastTex
首先将源代码经过分词处理得到一个词序列,如,其中,表示一段源代码,表示经过分词处理的词,代表词的序数.然后利用FastText将词序列的每个词转化为相应的带有语义相关性的词向量,这样原本由词组成的一维列表就转化为由向量组成的二维矩阵,其中为取词序列的前个词进行向量转化,词个数不足则由全0组成的词向量补充.最后将得到的词向量矩阵输入BLSTM模型进行混合语言漏洞检测训练.
2.2 DL-HLVD方法架构
DL-HLVD的系统架构如

图1 DL-HLVD方法架构
Fig.1 DL-HLVD method architecture
数据预处理阶段主要对漏洞代码及代码的实体特征进行处理:对源代码按照步骤Ⅰ处理,通过CPG对源代码进行表征后输出程序切片;对代码特征领域数据集则按照步骤Ⅱ及步骤Ⅲ处理,将数据集通过标注后输入词嵌入模型并输出其向量化表示.在数据预处理后,将两类输出结果作为模型训练阶段的输入数据.在模型训练阶段,先将步骤Ⅲ得到的向量化表示作为基于BERT-BGRU-CRF的命名实体识别模型的输入进行模型训练;训练完成后利用步骤Ⅳ得到的模型对步骤Ⅰ得到的程序切片进行命名实体识别,而后根据识别结果对程序切片进行重构并作为步骤Ⅵ的输入.接着,用经过步骤Ⅵ得到的数据向量化表示作为输入训练多语言软件项目漏洞检测模型,并将重构结果分词编码后输入BLSTM网络中学习漏洞代码特征,最终得到多语言软件项目的源代码漏洞检测模型.
3 命名实体识别方法
3.1 相关定义
为了有效表征各类编程语言的语义、语法信息,以期在训练漏洞检测神经网络模型时获得较好的效果,借助代码特征领域实体对程序语句进行程序切片重构.
定义1 源程序:源程序是按某种编程语言规范编写的代码语句组成的集合,源程序定义为.
定义2 代码令牌(Token):代码令牌由若干常量、关键字、标识符和运算符等组成,代码令牌集合可以构成代码语句,表示为.
定义3 代码特征领域实体:对于一个源程序,其代码语句表示为,代码语句中一系列符合相应规则的代码令牌子集为代码特征领域实体,表示为.
定义4 程序切片:对于不同编程语言对应的一个源程序,利用静态分析工具生成CPG,并通过程序依赖图进行基于图可达性分析得到的程序切片,再根据相应的控制流、数据流、语义等切片准则删除无关代码后所剩下的部分.程序切片与源程序在一定的切片准则下保持一致的语义.
定义5 重构程序切片:先按照实体标注格式进行语句级的序列标注,然后通过获取的实体标注结果集对源代码集合进行重构并输出重构代码集合.根据语义一致性准则、简化命名约定准则、优化代码结构准则替换切片中相关代码特征领域实体后产生的新程序切片.
3.2 数据预处理流程
为提升模型泛化性能和训练精度,数据预处理环节至关重要,其目的是为检测模型和命名实体识别做好数据准备.其中,数据不平衡问题是影响模型性能的关键因素之一.为了应对数据不平衡对模型训练的影响,本文采用重采样技术(包括过采样和欠采样)来调整数据集中正负样本比例,对少数类进行过采样以增加其代表性,同时对多数类进行欠采样以减少其冗余信息,从而为模型的训练提供更优质的数据基础.数据处理过程如

图2 数据预处理流程
Fig.2 Data preprocessing process
1)针对漏洞数据集,通过CPG表征源代码输出程序切片并标注,以提取含漏洞信息的代码片段.对于C/C++源代码,先使用Joer
2)针对代码特征领域数据集,通过词嵌入模型输出向量化表示后输入命名实体识别模型进行训练并对程序切片进行重构.具体地,先基于关键词字典,采用手工标注“BIO”方法筛选源代码特征领域数据集,并为其打标签;然后使用FastText将实体数据转化为向量,输入BERT-BGRU-CRF模型训练后得到代码特征领域实体标注;最后据此标注结果对程序切片重构,在不依赖特定正则表达式的同时实现对多语言源代码关键词特征提取.
3.3 源代码漏洞代码特征实体及标注
源代码漏洞代码特征实体是指与各类语言漏洞相关的源代码命名实体的统称,目前命名实体识别常基于监督学习的序列标注方式.本文分析了源代码漏洞发生参数的类型、特征和相关性,确定了一组与漏洞代码数据表示相关的实体类型.
定义以下实体体系:A={fun_sys, fun_call, fun_user, var_return, var_num, var_str, var_specific, var_other},分别表示系统函数、调用函数、用户自定义函数、函数返回型变量、数字型变量、字符型变量、变量具体值和其他类型变量.用“B_”“I_”“O”分别代表某个实体的开头、中间字符以及其他非实体字符.标注格式如
标注符号 | 代表实体 |
---|---|
B_fun_sys | 系统函数实体开头字符 |
I_fun_sys | 系统函数实体中间字符 |
B_fun_call | 调用函数实体开头字符 |
I_fun_call | 调用函数实体中间字符 |
B_fun_user | 用户自定义函数实体开头字符 |
I_fun_user | 用户自定义函数实体中间字符 |
B_var_return | 函数返回型变量实体开头字符 |
I_var_return | 函数返回型变量实体中间字符 |
B_var_num | 数字型变量实体开头字符 |
I_var_num | 数字型变量实体中间字符 |
B_var_str | 字符型变量实体开头字符 |
I_var_str | 字符型变量实体中间字符 |
B_var_specific | 变量具体值实体开头字符 |
I_var_specific | 变量具体值实体中间字符 |
B_var_other | 其他类型变量实体开头字符 |
I_var_other | 其他类型变量实体中间字符 |
O | 其他非实体字符 |
在BIO标注过程中,本文采用人力标注与已有知识库相结合的方式,通过分析源代码的语法结构和语义内容,为每个词或符号手动分配BIO标签以确保实体标注准确性.此外,整合了经过长期积累的前人字典作为辅助工具来确保更高的标注精度,如VulDeePecker中的变量名、函数名等实体字典,将源代码文本分词并与字典匹配,转换为数值索引构建输入向量.通过这种方式,最终获得了高质量、高准确率的BIO标注数据,为模型训练和评估提供了可靠的数据支持.
3.4 基于BERT-BGRU-CRF的命名实体识别模型
BERT是一种基于transformer的预训练语言模型,主要包含12个transformer编码器层,每层由多头自注意力和前馈神经网络构成.其中,多头自注意力用来捕捉单词上下文关系,前馈神经网络用于特征提取和非线性变换.
在本文构建的BERT-BGRU-CRF模型中,由于BERT具有丰富的信息提取能力,直接将其放在最底层抽取上下文的文本信息, 并对输入序列进行编码得到每个词语的上下文编码表示.在BERT之后添加BGRU层和Dropout层形成一个完整的网络,BGRU由两层GRU单元组成,每一层包含200个GRU单元.输入编码通过BGRU可捕捉到序列的上下文信息,但GRU没有考虑源代码自动标注后返回的结果中单词与标签之间的相关性,为此引入CRF层来构建BGRU-CRF联合模型,从少量标注中学习更多的词序信息,CRF层能够加入一些约束使最终预测结果有效.利用BERT-BGRU-CRF模型进行各类编程语言的特征学习后,再通过获取的实体标注结果集对程序切片集合进行重构得到重构切片集合,具体过程如

图3 BERT-BGRU-CRF模型识别过程
Fig.3 BERT-BGRU-CRF model recognition process
本文将数据预处理后的源代码向量化,并输入BERT-BGRU-CRF模型训练,随后执行
4 漏洞检测神经网络模型
如

图4 BLSTM漏洞检测模型架构
Fig.4 BLSTM vulnerability detection model architecture
5 实验结果与分析
5.1 数据集
为验证DL-HLVD的有效性,选取软件防护参考数据集SAR
SARD数据集由美国国家标准与技术研究院提出,涵盖了C/C++、Java、C#和PHP等多种语言的漏洞样本.每个源文件有“bad”和“good”函数块,前者存在漏洞,后者修复其漏洞.实验在SARD中选取C、C++和Java的漏洞子数据集,标注“good”为负样本(0),“bad”为正样本(1),最终以程序切片为基本单位构建漏洞数据集,其中C/C++样本总数为28 312,正样本6 793个,负样本21 519个,Java样本总数为26 184,正样本8 836个,负样本17 348个,总体包含42种漏洞类型.
CrossVul 数据集由Nikitopoulos
数据集 | 切片总数 | C/C++漏洞切片 | Java漏洞切片 |
---|---|---|---|
SARD | 45 660 | 6 793 | 8 836 |
CrossVul | 26 303 | 2 143 | 2 078 |
5.2 评价指标
实验采用Li
5.3 实验结果与分析
5.3.1 实验设置
为了评估DL-HLVD的有效性,实验设置了以下3个研究问题.
RQ1:BERT-BGRU-CRF中每层对漏洞检测起了什么关键作用?为什么要用命名实体识别方法,而不是对不同语言采用不同的正则表达式匹配关键实体,以及使用命名实体识别的好处是什么?
RQ2:本文方法与传统漏洞检测工具和现有的深度学习漏洞检测方法相比有什么优势?
RQ3:利用自己构建的数据集进行模型训练,训练完成的模型是否能够检测目前基于深度学习的漏洞检测的其他数据集?
5.3.2 命名实体识别模型效果比较与分析
针对RQ1,为了深入探究BERT、BGRU以及CRF在多语言命名实体识别模型中对于漏洞检测准确率的提升效果,实验对BERT-BGRU-CRF模型中每层的关键作用进行详细比较,以明确各层对整体效果的影响和贡献.同时,为了全面评估传统正则表达式与命名实体识别在混合语言模块上的泛化能力与适应能力,进一步设置4组实验进行对比分析,实验结果如
组 | 模型 | P/% | F1/% | ACC/% |
---|---|---|---|---|
1 | BERT-CRF | 95.46 | 92.89 | 96.36 |
2 | BERT-BGRU | 93.35 | 90.83 | 95.13 |
3 | BGRU-CRF | 94.48 | 93.52 | 96.50 |
4 | BERT-BGRU-CRF | 95.51 | 94.68 | 97.61 |
5 | BGRU+正则 | 92.73 | 90.42 | 94.46 |
6 | BERT-BGRU+正则 | 90.56 | 89.49 | 95.92 |
由
3,4,5,6组实验表明,传统正则表达式在匹配关键实体上效果不佳,因为即使C和Java的正则表达式在某些方面相似,但在细节上仍存在显著差异.因此,使用正则表达式进行关键实体匹配时,需要针对每种编程语言单独设计,会耗费大量的时间和精力.更重要的是,正则表达式只能识别已知模式的命名实体,对未知模式的命名实体识别效果欠佳,这使得针对某种编程语言的正则表达式很难有效匹配其他编程语言的关键实体,无法适应混合编程环境的复杂性.而基于BERT-BGRU-CRF的命名实体识别模型在对源代码产生歧义、简写、组合时的良好泛化效果及特征提取能力能够有效辅助检测模型进行漏洞挖掘.因此,DL-HLVD适用于混合编程环境,能消除语言差异带来的分析难题,具备高度的灵活性,可以针对不同类型的实体进行训练来提高漏洞检测效率和准确性.
5.3.3 各方法综合性能比较与分析
针对RQ2,为评价各方法的综合性能,实验在SARD数据集上选取基于规则的传统漏洞检测工具Flawfinde
方法 | FPR/% | FNR/% | TPR/% | P/% | F1/% | ACC/% |
---|---|---|---|---|---|---|
DL-HLVD | 5.89 | 1.67 | 97.82 | 94.62 | 96.27 | 96.31 |
VulDeePecker | 9.21 | 18.53 | 84.58 | 92.14 | 87.92 | 88.27 |
SySeVR | 8.34 | 15.67 | 88.13 | 92.82 | 88.38 | 89.82 |
Project Achilles | 7.52 | 14.82 | 90.85 | 93.49 | 92.93 | 92.52 |
Flawfinder | 51.86 | 48.63 | 55.29 | 0.78 | 0.00 | 50.10 |
方法 | FPR/% | FNR/% | TPR/% | P/% | F1/% | ACC/% |
---|---|---|---|---|---|---|
DL-HLVD | 5.85 | 5.66 | 95.86 | 92.78 | 94.13 | 95.17 |
VulDeePecker | 6.52 | 5.98 | 93.89 | 90.38 | 92.19 | 93.51 |
SySeVR | 6.85 | 6.82 | 94.91 | 91.63 | 92.31 | 94.42 |
Project Achilles | 8.56 | 14.57 | 89.69 | 86.15 | 87.29 | 89.19 |
Flawfinder | 30.28 | 25.36 | 79.23 | 71.94 | 74.91 | 75.86 |
方法 | FPR/% | FNR/% | TPR/% | P/% | F1/% | ACC/% |
---|---|---|---|---|---|---|
DL-HLVD | 5.62 | 2.98 | 97.11 | 92.73 | 94.96 | 95.40 |
VulDeePecker | 9.15 | 12.69 | 90.12 | 91.05 | 91.58 | 92.15 |
SySeVR | 9.28 | 13.56 | 90.26 | 91.95 | 91.86 | 92.68 |
Project Achilles | 9.71 | 13.95 | 89.39 | 90.21 | 90.91 | 91.58 |
Flawfinder | 40.58 | 30.36 | 75.24 | 40.56 | 50.63 | 65.85 |
由
由
从
5.3.4 各方法在不同数据集上的比较与分析
针对RQ3,选择SARD和CrossVul混合语言数据集进行验证,实验结果如

(a) 准确率
(b) 精确率

(c) 召回率
(d) F1
图5 各方法在SARD和CrossVul数据集的准确率、精确率、召回率、F1对比
Fig.5 Comparison of precision、accuracy、recall、F1 of various methods on SARD and CrossVul datasets
由
6 结 论
针对多编程语言软件系统,为解决漏洞检测中代码表征不一致和正则表达式筛选泛化能力不足的问题,本文提出了一种基于深度学习的混合语言软件源代码漏洞检测方法DL-HLVD,利用CPG生成程序切片以表征代码,在自己构建的数据集上对BERT-BGRU-CRF模型进行训练,随后实现命名实体识别任务进行代码重构,并设计了基于BLSTM的漏洞检测模型.通过在SARD和CrossVul数据集上的实验验证与分析,结果证明了DL-HLVD在混合语言软件漏洞检测性能上的提升.然而,混合语言软件系统的复杂性使得DL-HLVD方法难以全面覆盖潜在的风险,漏洞模式的多样性也增加了准确识别的难度.未来工作中,我们将扩展DL-HLVD方法以覆盖更多编程语言,并提升其在实际软件项目中的漏洞检测精度和效率.
参考文献
邓枭, 叶蔚, 谢睿, 等.基于深度学习的源代码缺陷检测研究综述[J].软件学报, 2023, 34(2): 625-654. [百度学术]
DENG X, YE W, XIE R, et al. Survey of source code bug detection based on deep learning[J]. Journal of Software, 2023, 34(2): 625-654.(in Chinese) [百度学术]
MERGENDAHL S,BUROW N,OKHRAVI H.Cross-language attacks[C]//Proceedings 2022 Network and Distributed System Security Symposium. San Diego, CA,USA. Internet Society, 2022. [百度学术]
LUO Z H,WANG P F,WANG B S,et al.VulHawk:cross-architecture vulnerability detection with entropy-based binary code search[C]//Proceedings 2023 Network and Distributed System Security Symposium. San Diego,CA,USA. Internet Society, 2023. [百度学术]
PERL H,DECHAND S,SMITH M,et al. VCCFinder[C]//Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security. Denver, Colorado, USA. ACM,2015: 426-437. [百度学术]
OLIVEIRA C. Software assurance reference dataset (SARD) [OL]. [Accessed: December-2023]. https://sam ate. nist.gov/SARD/test-suites. [百度学术]
NIKITOPOULOS G,DRITSA K,LOURIDAS P,et al.CrossVul: a cross-language vulnerability dataset with commit data[C]//Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. Athens, Greece. ACM, 2021: 1565-1569. [百度学术]
DWHEELER A. Flawfinder software official website[EB/OL]. [2024-01-04]. https:// dwheeler.com/flawfinder/. [百度学术]
HOSSAIN S, MOHAMMAD Z. Mitigating program security vulnerabilities: approaches and challenges[J]. ACM Computer Survey, 2012, 44(3): 1-46. [百度学术]
VIEGA J,BLOCH J T,KOHNO Y,et al. ITS4:a static vulnera bility scanner for C and C code[C]//Proceedings 16th Annual Computer Security Applications Conference (ACSAC’00). New Orleans, LA, USA. IEEE, 2002: 257-267. [百度学术]
BASET A Z,DENNING T.IDE plugins for detecting input-validation vulnerabilities[C]//2017 IEEE Security and Privacy Workshops (SPW). San Jose,CA,USA.IEEE,2017:143-146. [百度学术]
WALDEN J, DOYLE M. SAVI:static-analysis vulnerability indicator[J]. IEEE Security & Privacy,2012,10(3): 32-39. [百度学术]
BALOGLU B. How to find and fix software vulnerabilities with coverity static analysis[C]//2016 IEEE Cybersecurity Development (SecDev). Boston,MA,USA.IEEE,2016:153. [百度学术]
AFIFY H, MOHAMMED K, HASSANIEN A. Multi-images recognition of breast cancer histopathological via probabilistic neural network approach[J]. Journal of System and Management Sciences, 2020, 1(2): 53-68. [百度学术]
EKBAL A, SAHA S. Simultaneous feature and parameter selection using multi-objective optimization: application to named entity recognition[J]. International Journal of Machine Learning and Cybernetics, 2020, 7(4): 597-611. [百度学术]
ANBIYA D R,PURWARIANTI A,ASNAR Y. Vulnerability detection in PHP web application using lexical analysis approach with machine learning[C]//2018 5th International Conference on Data and Software Engineering (ICoDSE). Mataram,Indonesia.IEEE, 2018: 1-6. [百度学术]
杨宏宇, 应乐意,张良.基于结构化文本及代码度量的漏洞检测方法[J].湖南大学学报(自然科学版), 2022, 49(4):58-68. [百度学术]
YANG H Y,YING L Y,ZHANG L. Vulnerability detection method based on structured text and code metrics[J].Journal of Hunan University (Natural Sciences),2022, 49(4): 58-68.(in Chinese) [百度学术]
RUSSELL R,KIM L,HAMILTON L,et al. Automated vulnerability detection in source code using deep representation learning[C]//2018 17th IEEE International Conference on Machine Learning and Applications (ICMLA). Orlando, FL, USA. IEEE,2018: 757-762. [百度学术]
HARER J A,KIM L Y,RUSSELL R L,et al.Automated software vulnerability detection with machine learning[EB/OL]. 2018:1803.04497. https://arxiv.org/abs/1803.04497v2. [百度学术]
LI Z,ZOU D Q,XU S H,et al.VulDeePecker:a deep learning-based system for vulnerability detection[C]//Proceedings 2018 Network and Distributed System Security Symposium.San Diego,CA.Internet Society, 2018. [百度学术]
LI Z,ZOU D Q,XU S H,et al.SySeVR:a framework for using deep learning to detect software vulnerabilities[J]. IEEE Transactions on Dependable and Secure Computing, 2022, 19(4): 2244-2258. [百度学术]
ZOU D Q, WANG S J, XU S H, et al. μVulDeePecker: a deep learning-based system for multiclass vulnerability detection[J]. IEEE Transactions on Dependable and Secure Computing,2021, 18(5): 2224-2236. [百度学术]
张学军, 张奉鹤, 盖继扬, 等. mVul Sniffer: 一种多类型源代码漏洞检测方法[J]. 通信学报, 2023, 44(9): 149-160. [百度学术]
ZHANG X J,ZHANG F H,GAI J Y,et al.mVul Sniffer:a multi-type source code vulnerability sniffer method[J]. Journal on Communications, 2023, 44(9): 149-160.(in Chinese) [百度学术]
ZHANG X J, ZHANG F H, ZHAO B,et al. VulD-transformer:source code vulnerability detection via transformer[C]//Proceedings of the 14th Asia-Pacific Symposium on Internetware. Hangzhou, China.ACM,2023:185-193. [百度学术]
QIN L, YU N, ZHAO D. Applying the convolutional neural network deep learning technology to behavioural recognition in intelligent video[J]. Tehnicki Vjesnik-Techanical Gazette, 2018,25(2): 528-535. [百度学术]
LI J,HE P J,ZHU J M,et al.Software defect prediction via convolutional neural network[C]//2017 IEEE International Conference on Software Quality, Reliability and Security (QRS). Prague, Czech Republic. IEEE, 2017: 318-328. [百度学术]
AIT HAMMOU B,AIT LAHCEN A,MOULINE S. Towards a real-time processing framework based on improved distributed recurrent neural network variants with fastText for social big data analytics[J]. Information Processing & Management, 2020, 57(1): 102122. [百度学术]
LEUTHA¨USER M. Joern [OL]. [Accessed: May-2023]. https://joern.readthedocs.io/en/latest/. [百度学术]
PARR T, HARWELL S, VERGNAUD E, et al. ANTLR4 [OL]. [Accessed: February-2023] https://github.com/antlr/antlr4. [百度学术]
ARZT S, OLHOTAK, MBENZ89, et al. Soot [OL]. [Accessed: April-2024]. https://github.com/Sable/soot. [百度学术]
SACCENTE N,DEHLINGER J,DENG L,et al.Project Achilles:a prototype tool for static method-level vulnerability detection of Java source code using a recurrent neural network[C]//2019 34th IEEE/ACM International Conference on Automated Software Engineering Workshop (ASEW). San Diego,CA,USA.IEEE,2019:114-121. [百度学术]