这次分享的论文是《LineVul: A Transformer-based Line-Level Vulnerability Prediction》
开源代码与数据集:https://github.com/awsm-research/LineVul
这篇论文给我的感觉就是使用了codeBert方法经验的软件漏洞检测方法,属于是静态检测技术,也算是开拓了思路。
软件漏洞在软件系统中普遍存在,导致各种问题,包括死锁、信息丢失或系统故障。因此,对软件漏洞的早期预测在安全关键软件系统中至关重要。已经提出了各种基于ML/DL的方法来预测ffle/函数/方法级别的漏洞。最近,IVDetect(一种基于图形的神经网络)被提出用于在功能级别预测漏洞。然而,IVDetect方法仍然是不准确和粗粒度的。在本文中,我们提出了LineVul,这是一种基于变换器的线路级漏洞预测方法,以解决最先进的IVDetect方法的几个局限性。通过对具有188k+C/C++函数的大规模真实世界数据集的实证评估,我们表明LineVul在函数级预测方面实现了(1)160%-379%的F1度量提高;(2) 线路水平预测的Top-10准确率提高了12%-25%;(3)减少29%-53%Effort@20%回顾基线方法,强调LineVul在更准确、更具成本效益的线路级漏洞预测方面取得了重大进展。
我们的额外分析还表明,我们的LineVul在预测受前25名最危险CWE影响的脆弱功能方面也非常准确(75%-100%),突显了我们的LineVul在现实使用场景中的潜在影响。
原本方法的限制:
IVDetect 有以下三个限制。
• 首先,IVDetect 的训练过程仅限于特定于项目的数 据集。由于 IVDetect 使用的训练数据量有限,语言 模型可能无法捕获标记及其周围标记之间最准确的 关系。因此,IVDetect 对源代码的向量表示仍然不 是最佳的。
• 第二,IVDetect 方法的基于 RNN 的架构仍然不能 有效 地捕获源代码 的有 意义的长期依赖和语 义。IVDetect 依靠基于 RNN 的模型来生成向量表 示,以供其图形模型在预测步骤。然而,基于 RNN 的模型在学习长的源代码序列时 经常有困难。这种限制会使生成的矢量表示变得不太有意 义,从而导致不准确的预测。
• 第 三 , IVDetect 的 子 图 解 释 仍 然 是 粗 粒 度 的。IVDetect 利用 GNNExplainer 来确定哪个子图对 预测贡献最大。尽管这样的子图解释可以帮助开发 人员缩小范围来定位易受攻击的行,但是这样的子 图仍然包含许多行代码。因此,安全分析师仍然需要手动定位这些子图中的哪些行实际上是易受攻击的。
本方法解决了原本方法的三个问题:
在本文中,我们提出了 LineVul,一种基于转换器的细粒 度漏洞预测方法,以解决 IVDetect 的三个重要限制。
首先, 我们没有使用基于 RNN 的模型来生成代码的表示,而是利用 具有自关注层的 BERT 架构,该架构能够使用点积运算来 捕获长序列中的长期依赖关系。
第二,我们不使用特定于项 目的训练数据,而是利用 CodeBERT 预训练语言模型来生成源 代码的向量表示。
第三,我们不使用 GNNExplainer 来识别有 助于预测的子图,而是利用 BERT 架构的注意机制来定位易受 攻击的线,这比 IVDetect 方法更细粒度。
本文的主要贡献:
新颖性和贡献。据我们所知,本文的主要贡献如下:(1)我们的LineVul,一种基于Transformer的线路级漏洞预测方法,解决了现有漏洞预测方法的各种局限性;(2)实验结果证实,我们的LineVul比现有的漏洞预测方法更准确、更具成本效益、更容易预测。
开放科学。为了支持开放科学社区,我们在GitHub上发布了研究的数据集、脚本(即数据处理、模型训练和模型评估)和实验结果(https://github.com/awsm-research/LineVul).
纸张组织。第2节讨论了IVDetect方法及其局限性。第3节介绍了我们的LineVul方法。第4节介绍了我们三个研究问题的动机、我们研究的数据集和我们的实验设置,而第5节则介绍了实验结果。第6节介绍了我们的LineVul消融研究。第8节揭示了对有效性的威胁。第9节得出结论。
方法整体架构。
检验效果:
(RQ1)我们的 LineVul 对于函数级漏洞预测有多准 确? 结果。我们的 LineVul 实现了 0.91 的 F 值,比最先进 的方法好 160%-379% 中位数提高了 250%。类似地,我们的 Line- Vul 实现了 0.97 的精度和 0.86 的召回率,分别比基线方法高出 322%和 19%。
(RQ2)我们的 LineVul 在线级漏洞定位方面有多准确? 结果。我们的 LineVul 达到了 0.65 的前 10 名准确度, 比其他基线 ap-的准确度高 12%-25% 方法。此外,LineVul 的 IFA 中值最低,为 1,而基线方 法的 IFA 中值为 3-4。
(RQ3)我们的 LineVul 对于线路级漏洞本地化的成本效 益如何? 结果。我们的 LineVul 在 20%的召回率下实现了最低的努 力 0.75,比其他基线方法少 29%-53%。 此外,LineVul 在 1%LOC 时的召回率最高,为 0.24,比 其他基线方法高出 26%-85%。
简单做个总结,方法思路还是清晰的,对于CodeBert等人工智能算法的应用也是很有借鉴意义的,这项研究对于2022年来说算是前沿的,不过现在LLM时代,应该是可以更进一步的。