VulBERTa:面向漏洞检测的简化源代码预训练
利用自然语言处理(NLP)中的 word2vec、BERT 和 RoBERTa 等嵌入技术,通过学习中间表示(LLVM)代码的语义,利用长短期记忆(LSTM)神经网络对 Juliet 数据集中近 118k 个 LLVM 函数的嵌入进行训练,进而检测编译二进制文件中的漏洞。研究结果显示,与复杂的上下文 NLP 嵌入相比,word2vec 连续词袋(CBOW)模型在检测漏洞方面取得了 92.3% 的验证准确率,表明当用来训练双向变压器模型的数据样本数量有限(例如 118K)时,简单的 word2vec 模型在这个任务中可能更有优势。这些比较结果为选择用于学习编译器独立语义代码表示的最佳嵌入提供了新的见解,推动了编译二进制文件中漏洞的机器学习检测的发展。
May, 2024
提出了一种结合 RoBERTa 模型和 GCN 模型的关于代码漏洞检测的多任务分类器,该模型采用了一个语义性漏洞图来降低偏差,并通过结合 Focal Loss 目标函数降低数据集不平衡的影响。在多个数据集的测试中,该模型表现优异,能够在最好的情况下提高 2.41% 和 18.75% 的检测效果,并且在针对知名 Github 代码库的 N-day 程序样本的测试中表现出 93% 的准确率,能够检测出 4 种零日漏洞。
Apr, 2023
这项研究利用 C/C++ 开源代码,使用机器学习开发了一个基于函数级别的漏洞检测系统,并使用三个定位潜在攻击的静态分析器精心筛选标注了数百万个开源函数的数据集。研究表明深度学习源代码的特征表示法是一种自动化软件漏洞检测的有前途的方法。
Jul, 2018
我们提出了一种名为 XGV-BERT 的框架,结合预训练的 CodeBERT 模型和图神经网络(GCN)来检测软件漏洞,通过联合训练 CodeBERT 和 GCN 模块,该模型利用大规模预训练、通过图卷积学习训练数据的表示,其研究结果表明与 VulDeePecker 和 SySeVR 等现有方法相比,XGV-BERT 方法显著提高了漏洞检测的准确性。
Sep, 2023
提出并发布了一个新的易受攻击源代码数据集,通过获取安全问题网站、提取 缺陷修复提交和相应项目的源代码进行数据处理。使用此数据集与先前数据集相结合,研究使用深度学习检测软件漏洞的挑战和未来研究方向。同时,研究发现大型语言模型是未来漏洞检测的方向,在检测性能上优于手动特征工程的图神经网络。
Apr, 2023
本论文研究了使用大型语言模型进行源代码漏洞检测的结果,通过微调最先进的语言模型 WizardCoder,并在训练过程中进行了加速,通过处理类别不平衡问题,优化训练过程和方法,并在困难的漏洞检测数据集上改善性能,展示了通过微调大型预训练语言模型进行源代码分析任务的迁移学习的潜力。
Jan, 2024
本文评估了代码表示模型 Code2vec 在 C 源代码中检测安全漏洞任务上的表现,结果表明 Code2vec 在此任务上的表现与预训练 RoBERTa 等简单的基于 Transformer 的方法相比具有可比性,并且优于更为简单的基于 NLP 的方法,并在维持低计算需求的同时达到了 61.43%的准确率。
Jun, 2021
在代码语言模型(Code LMs)和漏洞检测不断增长的兴趣下,我们研究了代码语言模型在漏洞检测方面的有效性。研究发现现有漏洞数据集存在重要不足,包括数据质量不高、标签准确性低和重复率高,导致模型在现实漏洞检测场景中的性能不可靠。为解决这些挑战,我们引入了 PrimeVul 数据集,用于训练和评估代码语言模型在漏洞检测方面的性能。通过对 PrimeVul 上的代码语言模型进行评估,发现现有基准明显高估了这些模型的性能。这些发现强调了当前能力和在安全角色中部署代码语言模型的实际需求之间存在的巨大差距,突出了在这一领域需要更多创新的研究。
Mar, 2024
应用和比较不同的机器学习算法,我们基于 Python 编程语言针对源代码漏洞检测问题进行实验评估并展示出双向长短期记忆(BiLSTM)模型的非凡性能(平均准确率 = 98.6%,平均 F-Score=94.7%,平均精确率 = 96.2%,平均召回率 = 93.3%,平均 ROC=99.3%),从而为 Python 源代码的漏洞检测树立了新的基准。
Apr, 2024
通过创建一个新的基准测试集 VulDetectBench,我们评估了各类大型语言模型在漏洞检测任务中的性能,结果显示现有模型在识别和分类与漏洞相关的任务上可以达到 80% 以上的准确率,但在更复杂的漏洞分析任务上只能达到不到 30% 的准确率,难以为专业漏洞挖掘提供有价值的辅助信息。这个基准测试集为未来代码安全领域的研究和改进提供了基础。
Jun, 2024