ANVIL: Anomaly-based Vulnerability Identification without Labelled Training Data

📄 arXiv: 2408.16028v3 📥 PDF

作者: Weizhou Wang, Eric Liu, Xiangyu Guo, Xiao Hu, Ilya Grishchenko, David Lie

分类: cs.CR, cs.LG, cs.SE

发布日期: 2024-08-28 (更新: 2025-06-01)


💡 一句话要点

ANVIL:利用LLM的异常检测能力,无需标注数据进行漏洞识别

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 漏洞检测 异常检测 大型语言模型 代码重建 无监督学习

📋 核心要点

  1. 监督学习漏洞检测器受限于标注数据,而直接使用LLM效果不佳,无法有效识别漏洞。
  2. ANVIL将漏洞检测视为异常检测,利用LLM重建掩码代码,通过偏差评分识别异常代码。
  3. 实验表明,ANVIL在多个数据集上优于现有方法,并成功发现新的漏洞,验证了实用性。

📝 摘要(中文)

基于监督学习的漏洞检测器通常因标注训练数据有限而效果不佳。大型语言模型(LLM),如GPT-4,虽然在海量未标注代码语料库上训练,但直接用于漏洞检测时,其性能仅略高于随机猜测。本文将漏洞检测重新定义为异常检测,基于漏洞代码相对于LLM学习到的模式而言是罕见且异常的这一前提。我们提出了ANVIL,它执行一个掩码代码重建任务:LLM重建被掩盖的代码行,与原始代码的偏差被评分作为异常。我们提出了一种混合异常评分,结合了精确匹配、交叉熵损失、预测置信度和结构复杂度。我们在多个LLM家族、评分方法和上下文大小上评估了我们的方法,并针对LLM训练截止后的漏洞进行了评估。在PrimeVul数据集上,ANVIL优于最先进的监督检测器LineVul、LineVD和LLMAO,实现了高达2倍的Top-3准确率、75%的归一化MFR改进以及ROC-AUC的显著提升。最后,通过将ANVIL与fuzzer集成,我们发现了两个以前未知的漏洞,证明了异常引导检测的实际效用。

🔬 方法详解

问题定义:现有的基于监督学习的漏洞检测方法依赖于大量的标注数据,而获取高质量的标注数据成本高昂且耗时。直接使用大型语言模型(LLM)进行漏洞检测,效果并不理想,无法充分利用LLM在海量代码数据上学习到的知识。因此,需要一种无需标注数据,且能有效利用LLM进行漏洞检测的方法。

核心思路:论文的核心思路是将漏洞检测问题转化为异常检测问题。假设漏洞代码在正常代码中是罕见的,因此可以被视为异常。通过让LLM学习正常代码的模式,然后检测与这些模式不符的代码,从而识别潜在的漏洞。这种方法避免了对标注数据的依赖,并能充分利用LLM的预训练知识。

技术框架:ANVIL 的整体框架包含以下几个主要步骤:1. 掩码代码:随机选择代码行进行掩码。2. 代码重建:使用 LLM 重建被掩码的代码行。3. 异常评分:计算重建代码与原始代码之间的偏差,作为异常分数。4. 漏洞识别:根据异常分数判断代码是否可能存在漏洞。ANVIL 使用一种混合异常评分方法,综合考虑了精确匹配、交叉熵损失、预测置信度和结构复杂度等因素。

关键创新:ANVIL 的关键创新在于将漏洞检测问题转化为异常检测问题,并利用 LLM 的代码重建能力进行异常检测。与传统的监督学习方法相比,ANVIL 无需标注数据,降低了成本。与直接使用 LLM 进行漏洞检测相比,ANVIL 通过异常检测的方式,更有效地利用了 LLM 的预训练知识。

关键设计:ANVIL 的关键设计包括:1. 掩码策略:选择合适的掩码比例,以平衡重建的难度和信息损失。2. 混合异常评分:综合考虑多种因素,以提高异常检测的准确性。具体包括:精确匹配(重建代码与原始代码完全一致的比例)、交叉熵损失(衡量重建代码与原始代码之间的语义差异)、预测置信度(LLM 对重建代码的置信程度)、结构复杂度(代码的控制流和数据流复杂度)。3. LLM 选择:选择合适的 LLM,以平衡性能和计算成本。论文评估了多种 LLM 家族,并选择了在代码重建任务中表现较好的模型。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

ANVIL 在 PrimeVul 数据集上取得了显著的性能提升,Top-3 准确率高达 2 倍于最先进的监督学习方法 LineVul、LineVD 和 LLMAO,归一化 MFR 提升了 75%,ROC-AUC 也得到了显著改善。更重要的是,通过将 ANVIL 与 Fuzzer 集成,成功发现了两个以前未知的漏洞,证明了其在实际应用中的价值。

🎯 应用场景

ANVIL 可应用于软件安全测试、代码审计和漏洞挖掘等领域。它可以帮助开发人员和安全研究人员快速识别潜在的漏洞,提高软件的安全性。此外,ANVIL 可以与 Fuzzing 技术结合,引导 Fuzzer 发现新的漏洞,进一步提高漏洞挖掘的效率。未来,ANVIL 可以扩展到支持更多的编程语言和漏洞类型,并集成到 CI/CD 流程中,实现自动化漏洞检测。

📄 摘要(原文)

Supervised-learning-based vulnerability detectors often fall short due to limited labelled training data. In contrast, Large Language Models (LLMs) like GPT-4 are trained on vast unlabelled code corpora, yet perform only marginally better than coin flips when directly prompted to detect vulnerabilities. In this paper, we reframe vulnerability detection as anomaly detection, based on the premise that vulnerable code is rare and thus anomalous relative to patterns learned by LLMs. We introduce ANVIL, which performs a masked code reconstruction task: the LLM reconstructs a masked line of code, and deviations from the original are scored as anomalies. We propose a hybrid anomaly score that combines exact match, cross-entropy loss, prediction confidence, and structural complexity. We evaluate our approach across multiple LLM families, scoring methods, and context sizes, and against vulnerabilities after the LLM's training cut-off. On the PrimeVul dataset, ANVIL outperforms state-of-the-art supervised detectors-LineVul, LineVD, and LLMAO-achieving up to 2x higher Top-3 accuracy, 75% better Normalized MFR, and a significant improvement on ROC-AUC. Finally, by integrating ANVIL with fuzzers, we uncover two previously unknown vulnerabilities, demonstrating the practical utility of anomaly-guided detection.