ProveRAG:基于来源驱动的漏洞分析与自动化检索增强的LLMs

ProveRAG: Provenance-Driven Vulnerability Analysis with Automated Retrieval-Augmented LLMs

![[Pasted image 20250321155740.png]]

摘要

在网络安全领域,安全分析师面临着实时缓解新发现漏洞的挑战。自1999年以来,已识别出超过30万项通用漏洞和暴露(CVEs)。已知漏洞的庞大规模使得未知威胁的模式检测变得复杂。虽然大型语言模型(LLMs)可以提供帮助,但它们常常产生幻觉,并且与近期威胁缺乏对齐。仅在2024年至今,就已经发现了超过25,000个漏洞,这些漏洞是在流行LLMs(例如 GPT-4)训练数据截止日期之后引入的。这引发了在网络安全中利用LLMs的主要挑战——在该领域中,准确性和最新信息至关重要。

在这项工作中,我们旨在通过模仿分析师执行此类任务的方式来改进LLMs在漏洞分析中的适应性。我们提出了ProveRAG,一个由LLM驱动的系统,设计用于通过自动化检索增强网络数据来快速分析CVEs,同时利用可验证的证据对其响应进行自我评估。ProveRAG包含一种自我批评机制,以帮助减轻应用于网络安全应用的LLMs输出中常见的遗漏和幻觉问题。系统通过交叉引用来自可验证来源的数据(NVD 和 CWE),为分析师提供了对可操作见解的信心。

我们的结果表明,ProveRAG在向用户提供可验证证据方面表现出色,在漏洞利用和缓解策略上的准确率分别超过99%和97%。该系统通过克服时间限制和上下文窗口限制,在漏洞分析中优于直接提示和分块检索。ProveRAG引导分析师更有效地保护其系统,同时记录过程以供未来的审计使用。

1 引言

在当今快速发展的网络安全环境中,安全分析师不断面临理解和实时缓解新发现威胁的挑战 [24]。通用漏洞和暴露(CVEs)[22] 作为识别和检测已知漏洞的关键框架。自1999年以来,已有超过300,000个CVE被编目,庞大的数量使得分析师越来越难以检测模式并有效应对新出现的威胁,尤其是在面对未知漏洞时。公共漏洞数据库,如 NIST 国家漏洞数据库(NVD)[23] 和私有维护的存储库,主要依赖于劳动密集型的手动流程来分析和分类漏洞。这种对手工劳动的依赖可能导致识别和应对潜在威胁的延迟,从而难以跟上快速演变的威胁环境,而及时分析对于有效的缓解至关重要 [24]。例如,CVE-2024-0302 是一项关键漏洞,如果不加以控制,可能会导致不受信任数据的反序列化。为了缓解这一漏洞,字段应设置为 transient,以防止反序列化。然而,保护企业网络需要通过梳理这些数据库中累积的超过300,000个威胁来确定哪些漏洞是相关的,而且每天都有新的威胁加入。此外,还必须探索单独的缓解数据库,如通用弱点枚举(CWE)[21],以识别、实施和部署系统缓解措施。由于信息量庞大,手动识别和缓解威胁具有挑战性。因此,自动化识别和缓解过程对于降低风险和提高整体韧性至关重要。

大型语言模型(LLMs)已在网络安全应用中得到广泛采用 [3, 4, 12, 20, 33]。它们在协助分析网络威胁情报 [20, 26]、增强基于日志的异常检测 [12,27]、支持 LLM 辅助攻击 [4,7,31] 和改进漏洞检测 [3,33] 方面表现得尤为有效。然而,先前的研究已经确定了三个限制LLMs在网络安全应用中更广泛应用的因素 [8, 15, 28, 37],这是我们希望在本研究中解决的问题。这些限制包括:

  1. 幻觉:生成看似合理但实际上错误的误导信息的倾向。一些研究展示了这一问题的后果 [8, 28]。
  2. 时间知识:当LLMs接触到训练数据截止日期之后的数据时,无法准确响应 [37, 38]。在网络安全中,每天都会出现新的漏洞——仅2024年就已确认超过25,000个——这对系统构成了严重风险,尤其是这些漏洞出现在LLMs训练数据截止日期之后。检索增强生成(RAG)技术已被提出以解决此问题 [2]。然而,RAG 在处理分布外数据时往往会导致:
  3. 有限的上下文窗口:这限制了可以提供给模型的令牌数量,从而限制了基于 RAG 的时间对齐方法 [15]。这些限制构成了在网络安全中利用LLMs的主要挑战,因为在该领域中,准确性、时间和最新信息至关重要。

在本研究中,我们旨在改进LLMs在威胁分析中的适应性。为此,我们提出了 ProveRAG,一个先进的LLM驱动系统,旨在帮助安全团队快速分析 CVEs 并提供可验证的证据。ProveRAG 不仅限于识别漏洞;它还会生成全面的漏洞利用步骤并提供可操作的缓解策略。ProveRAG 的独特之处在于其能够交叉引用、推理和验证来自权威来源(如 NVD 和 CWE)的信息,确保其提供的见解准确且值得信赖。通过这种方式,我们证明 ProveRAG 通过自我批评其自身的响应,减少了遗漏和幻觉的发生。ProveRAG 的一个关键创新点是将溯源信息纳入其分析中。通过记录每条信息的来源,ProveRAG 减少了LLMs 中常见不准确或幻觉的风险,并使安全分析师能够快速做出明智的决策。

我们在2024年的CVEs 上测试了 ProveRAG,并与两种不同的基线方法进行比较:1)仅提示和2)生成期间的分块检索,并将其与我们提出的总结技术(集成到 ProveRAG 中)进行了对比。仅提示技术是直接询问 LLM 关于特定 CVE 的利用和缓解策略的详细信息,这些数据在其训练截止日期之后。对于分块检索技术,我们通过将内容拆分为更小的块并嵌入来增强信息检索。检索出前 k 个结果并作为上下文输入到 LLM 的提示中,从而使模型能够以最相关的内容回答用户的查询。然而,这种方法需要非常大的上下文窗口,并可能包含误导 LLM 的冗余信息。

因此,我们设计了一种总结技术来处理 CVEs,灵感来源于 [10, 14]。我们首先探索 NVD 网站,并针对特定的 CVE-ID 总结内容。接下来,我们转向关联的 CWE 链接,并进一步处理相关参考文献(超链接),以提供有关漏洞利用和缓解问题的总结(模拟安全分析师的典型工作流程)。总结技术的一个关键优势在于其在处理大规模数据时的高效性,无需过度依赖文档分块,从而提高了检索质量和响应的准确性(同时解决了上下文窗口限制)。这使得该系统特别适合处理更复杂的网络安全查询——例如那些需要整合更多外部信息的 CVE 缓解问题。

目前尚无简单的方法来确定生成的响应是否准确或可信。ProveRAG 能够为 LLM 的响应提供可验证的证据(真阳性,TPs)、检测幻觉(假阳性,FPs)以及失败的检索(假阴性,FNs)。这一过程被称为“溯源”,我们通过精心设计一个结构化、明确且简洁的提示,结合链式思维技术 [35],促使 LLM 为其响应提供证据。需要注意的是,我们确保 ProveRAG 使用的 LLM(gpt-4o-mini [25])在寻找证据时不会遗漏任何关键信息,方法是利用几乎整个上下文窗口(128,000 个令牌)进行溯源。

此外,我们证明,通过为 LLM 提供高度结构化的上下文(Aqua 漏洞数据库 [29]),ProveRAG 的性能显著提升。我们的测试表明,ProveRAG 在漏洞利用信息方面的检测准确率达到 99%,在缓解策略方面达到 97%。ProveRAG 不仅能够支持更可靠的决策(相较于分块技术,在提供缓解策略方面的准确率提高了 30%以上),还细致地记录了其处理过程,确保为未来的审查提供了坚实的审计轨迹。在评估过程中,我们通过整合 NVD 和 CWE 之外的外部资源,确保每个 CVE 的相关信息得到全面覆盖。最后,我们展示了所提出的 ProveRAG 框架通过对比 OpenAI 的 gpt-4o-mini 和 Meta 的 Llama-3.1-8B [17],支持跨不同模型的通用性。这使得 ProveRAG 成为安全分析师的宝贵工具,帮助他们以更高的效率和准确性保护其系统。
本研究的主要贡献如下:

  • 我们提出了 ProveRAG,一种由 LLM 驱动的系统,通过总结技术从外部来源生成信息,同时通过引用来源 URL(即溯源)对其响应进行自我批评并提供证据。
  • 我们展示了 ProveRAG 在处理超出 LLM 知识截止范围的数据时的高效性,并实现了非常高的检测率(即 TPs)。
  • 我们证明了 ProveRAG 能够为其响应提供证据(TPs)、检测幻觉(FPs)以及展示失败的检索(FNs),从而缓解了当前最先进的 LLM 存在的幻觉和遗漏问题。
  • 我们展示了 ProveRAG 框架通过整合额外的 LLM(Llama-3.1-8B)增强了漏洞分析能力,从而支持所提出方法的通用性。
  • 我们证明了 ProveRAG 放宽了上下文窗口的限制,使其适合回答需要大规模最新信息的复杂查询(例如与缓解相关的查询)。

2 背景与相关工作

2.1 大型语言模型

大型语言模型(LLMs)的显著进步在很大程度上归功于 Transformer 架构 [34] 的集成。这些模型的特点是通过在庞大且多样化的数据集上进行广泛训练,从而生成连贯且与上下文相关的文本,能够高度模仿人类语言。OpenAI 的 GPT-4o [25] 和 Meta 的 LLama-3 [6] 是这一领域的领先范例。文献中已广泛记录了这些模型处理多样化和复杂任务的能力 [19, 36]。然而,尽管 LLMs 在各种任务中的表现非常有效,但它们的响应中仍然容易出现幻觉问题 [8, 28]。

2.2 检索增强生成

LLMs 的幻觉问题源于其对预训练知识的依赖,这带来了另一个限制——其训练数据的时间范围。这类限制在需要高精度的领域(如网络安全)中构成了重大挑战。为了解决这些问题并提供更准确的事实性知识,检索增强生成(RAG)被提出 [2]。RAG 有效地将搜索算法与 LLM 提示结合:模型被提示使用从外部资源检索的相关信息作为上下文来回答查询。这增强了 LLM 生成准确且与上下文相关响应的能力。

为了进一步优化这种集成,已有多种高级 RAG 技术被提出 [1, 9–11, 14, 32]。FLARE [11] 通过预测下一句并使用低置信度的标记作为查询重新检索相关文档,从而提高了模型的准确性。DRAGIN [32] 利用 LLM 的实时信息需求和自注意力机制,决定何时以及如何触发检索。Adaptive-RAG [9] 使用较小的 LLM 作为分类器评估查询复杂度,并选择最合适的检索策略。Self-RAG [1] 通过对检索文档进行自我反思来提高生成质量。然而,Self-RAG 需要训练两个模型——批评模型和生成模型——以评估其预测。我们的方法避免了对 LLM 的微调,确保自动化流程设计能够适应网络安全应用的快速节奏。Summarizing Retrievals (SuRe) [14] 构建了多个候选答案的检索段落摘要,并通过评估和排序生成的摘要来确认最合理的答案。TC-RAG [10] 将带有回溯和摘要功能的记忆栈系统集成到框架中,以纠正错误并消除冗余信息。尽管有这些进展,所有这些方法都面临一个共同的挑战:无法有效地展示其生成响应背后的证据。

2.3 LLMs 在漏洞评估中的应用

已有大量研究将 LLMs 应用于漏洞评估 [3, 5, 13, 16]。Anton C. 等人 [3] 使用 GPT 模型识别 Java 代码中的 CWE 漏洞,揭示了 LLMs 在检测漏洞代码方面的不足。相比之下,Avishree K. 等人 [13] 展示了通过多种提示策略,当精心设计提示时,LLMs 可以在漏洞检测中优于深度学习模型,这表明了提示工程的重要性。在此基础上,Lu 等人 [16] 提出了 GRACE,一种利用上下文学习和图结构化信息的框架,在 C/C++ 数据集上的漏洞检测性能有所提升。Du 等人 [5] 提出了 VulRAG,一种基于 LLM 的漏洞检测技术,通过从现有的 CVE 实例中提取多维洞察构建全面的知识库。然而,他们的方法依赖人工分析,使其成为一项耗时的手动工作,并限制了其在实时漏洞检测中的效率。此外,PentestGPT [4] 展现了协助渗透测试的能力。虽然它并未解决本文关注的问题,但作者指出 LLMs 受限于有限的标记大小(即上下文窗口),无法保留长期记忆。本研究基于这一观察,开发了高效的 RAG 方法,将 LLM 的注意力引导至相关内容。


3 动机与问题定义

传统的威胁分析方法通常涉及手动评估和静态数据库的使用,这既耗时又容易受到人为错误的影响。此外,尽管现有系统可以评估漏洞,但它们往往无法提供有效缓解所需的详细、可操作的见解。这一过程中的差距使安全团队迫切需要更先进的系统,能够评估威胁、生成全面的缓解场景,并记录其建议的证据。本研究的动机正是来源于这些挑战。我们试图通过回答以下研究问题来解决这些局限性:

RQ1:如何解决 LLMs 在持续出现的网络安全威胁中的时间限制?
我们解决的一个关键问题是 LLMs 的时间限制。随着新漏洞的不断涌现,重要的是安全系统即使在处理超出 LLM 训练窗口的数据时仍能保持有效性。我们的系统 ProveRAG 通过整合来自权威资源的最新信息来克服这一挑战,从而帮助评估训练后发现的漏洞。

RQ2:如何在基于 RAG 的 LLM 中管理复杂查询的信息过载问题?
我们旨在解决的另一个重要问题是信息过载(即由上下文窗口限制引起的问题)。LLM 无法处理海量信息并识别相关信息可能导致响应效果不佳,正如文献中所讨论的 [15]。虽然更多信息通常被视为有益,但我们的研究表明,在基于 LLM 的漏洞分析中,过多的数据可能导致效率低下(尤其是在使用分块技术时)。我们在 ProveRAG 中采用的总结技术可以缓解这一问题。该技术使得系统在处理更复杂的网络安全问题时尤为有效,例如需要更多关注额外相关资源的 CVE 缓解查询。

RQ3:如何在解决幻觉和遗漏错误的同时提高威胁分析的准确性和可信度?
开发 ProveRAG 的另一个关键动机是提高威胁分析的准确性和可信度,同时减轻幻觉和遗漏错误的问题。ProveRAG 通过将权威来源(如 NVD 和 CWE)整合到其框架中来实现这一点。这种集成确保了 ProveRAG 提供的建议基于可靠且可验证的数据,我们称之为溯源。为了充分利用 LLM 的能力,ProveRAG 使用了一种结构化、明确且简洁的提示,结合链式思维技术 [35] 设计。这种方法迫使 LLM 为其响应提供证据,从而增强了输出的可信度。系统对溯源的承诺体现在其对信息来源的细致记录上,创建了一个透明且可审计的轨迹。根据我们的评估,这一特性不仅提升了 ProveRAG 的分析准确性,还通过使安全分析师能够验证系统的建议而赢得了信任。

4 ProveRAG 方法论

![[Pasted image 20250321160332.png]]

ProveRAG 的工作基于两个主要阶段:生成模块和评估模块。图 1 展示了所提出的架构。需要注意的是,Retr. LLM、Gen. LLM 和 Eval. LLM 是同一个模型。首先,在生成模块中,Retr. LLM 将从外部来源(从 NVD 开始)加载有关 CVE 漏洞的网络内容,并针对漏洞利用和缓解信息对内容进行总结。接下来,Gen. LLM 将查看这些摘要,并为特定的 CVE 生成详细的漏洞利用和缓解策略。此外,在评估模块中,Eval. LLM 将通过查看来自官方和外部网站(NVD、CWE 以及 NVD 中的超链接)的内容,对其自身的响应进行批评,以展示其响应是否准确、存在幻觉或遗漏关键信息。最后,LLM 将通过显示来自响应和上下文的相似信息片段并提供理由来提供溯源,以确保可信度。

值得注意的是,我们使用了 OpenAI 的 gpt-4o-mini [25] 模型作为 ProveRAG 的 LLM。该模型的训练数据截止时间为 2023 年 10 月,上下文窗口为 128,000 个标记 [25]。然而,为了证明所提出的 ProveRAG 框架可以推广到其他 LLM,我们在第 5.6 节中比较了 gpt-4o-mini 与 Llama-3.1-8B [17] 的性能。选择 Llama-3.1-8B 模型是因为它具有相同的上下文窗口(128,000 个标记),并且知识截止时间为 2023 年 12 月(未接触 2024 年的 CVE 数据)。


4.1 系统设计

![[Pasted image 20250321160354.png]]

4.1.1 生成模块

该模块用于查询 Gen. LLM,以为给定的 CVE 提供漏洞利用和缓解响应(参见图 1)。以下是生成提示:
![[Pasted image 20250321160422.png]]

生成提示
您是一位网络安全专家。请根据以下提供的相关信息回答查询。
相关信息:[来自 NVD/CWE/相关参考文献的内容]
查询:[CVE-xxx-xxx]
根据指定的 CVE-ID,请详细回答以下问题:

  1. 攻击者如何利用此漏洞?请提供逐步描述。
  2. 针对此漏洞的推荐缓解策略是什么?

相关信息是通过总结检索技术收集的(以回答 RQ1),我们将在第 5.2.1 节中展示,这是漏洞分析中更优的检索技术。Gen. LLM 将查看为特定 CVE 检索到的信息,并提供响应。在仅提示实验中,相关信息部分被移除,因为我们直接查询 LLM 关于特定的 CVE。需要注意的是,我们将温度超参数(控制 LLM 输出中的随机性程度)设置为零,因为我们旨在获得最确定性的响应。


分块 vs. 总结检索技术
![[Pasted image 20250321160437.png]]

我们测试了两种检索技术(以解决 RQ2)。图 2 展示了每种技术的使用方式。对于分块技术,LLM 将使用资源中最相似的前 10 个 15,000 字符的块。其次,对于总结技术,Retr. LLM 会依次浏览 NVD、CWE 和超链接,总结关于漏洞利用和缓解问题的内容。以下展示了 Retr. LLM 用于评估每个 URL 相关性的提示。如果相关,LLM 将总结 URL 内容,具体回答漏洞利用或缓解问题。


![[Pasted image 20250321160457.png]]

相关性提示

漏洞利用提示
您是一位网络安全专家。您的任务是分析提供的 URL 内容以了解 [CVE-xxx-xxx],并提供详细摘要。
内容:content
请按照以下步骤操作:
步骤 1:评估相关性

  • 内容是否提供了描述如何利用此 [CVE-xxx-xxx] 的相关信息?
  • 回答:[是/否]
    步骤 2:总结相关信息
  • 如果步骤 1 的回答为“是”:
    • 总结内容,逐步描述如何利用此漏洞。
  • 如果步骤 1 的回答为“否”:
    • 摘要:无

缓解提示
您是一位网络安全专家。您的任务是分析提供的 URL 内容以了解 [CVE-xxx-xxx],并提供详细摘要。
内容:content
请按照以下步骤操作:
步骤 1:评估相关性

  • 内容是否提供了描述此漏洞潜在缓解策略的相关信息?
  • 回答:[是/否]
    步骤 2:总结相关信息
  • 如果步骤 1 的回答为“是”:
    • 总结内容,描述此 CVE 的潜在缓解策略。
  • 如果步骤 1 的回答为“否”:
    • 摘要:无

在分块技术中,我们将所有 URL 的内容拆分为较小的块,并将这些块嵌入为向量,然后对这些嵌入进行索引以促进高效的检索。我们进一步在第 5.6 节中展示了不同模型的性能。在运行时,用户的查询首先被向量化,并对索引块进行相似性搜索。检索出前 10 个结果并作为上下文输入到 Gen. LLM 的提示中,从而使模型能够以最相关的内容回答用户的查询。然而,这种方法需要非常大的上下文窗口,并可能包含误导 LLM 的冗余信息。

因此,我们设计了一种自动总结技术,灵感来源于 [10, 14],用于特定的 CVE(集成到 ProveRAG 的架构中)。我们首先探索 NVD 网站并针对特定的 CVE-ID 总结内容,然后转向关联的 CWE 链接,最后转向 NVD 中的超链接,以提供关于漏洞利用和缓解问题的摘要。总结技术的一个关键优势在于其在处理大规模数据时的高效性,无需过度依赖文档分块,从而提高了检索质量和响应准确性。这使得系统特别适合处理更复杂的网络安全查询,例如那些需要探索更多外部资源的 CVE 缓解问题。

4.1.2 评估模块

该模块用于 LLM 对其自身的响应进行自我批评(以回答 RQ3)。我们精心且迭代地设计了结构化且简洁的提示,结合链式思维技术 [35],引导模型在回答前进行思考并提供证据。以下是评估提示:
![[Pasted image 20250321160535.png]]

评估提示
对于 [漏洞利用/缓解] 信息 [CVE-xxx-xxx]:请根据提供的证据评估响应,并为定义的属性选择适当的值:
————————
响应:[LLM 响应]
————————
证据:[来自 NVD + CWE + 相关参考文献的内容]
————————

LLM 的任务是为以下三个属性提供响应:值、理由和溯源。以下是这些属性的详细说明:
![[Pasted image 20250321160618.png]]

评估模块
值提示

  • 描述:该属性表示基于 CVE-ID 提供的上下文对响应准确性的评估。
  • 允许值
    • ‘TP’(真阳性):响应完全且准确地反映了上下文中的信息。
    • ‘FP’(假阳性):响应包含不准确或错误的信息,且未被上下文支持。
    • ‘FN’(假阴性):响应遗漏了上下文中存在的信息。
  • 要求
    • 必须严格是允许值之一:‘TP’、‘FP’ 或 ‘FN’。
    • 选择必须基于响应与上下文之间的客观比较。
    • 必须遵循溯源指南。

理由提示

  • 描述:该属性提供了为响应评估选择“值”的理由。
    ![[Pasted image 20250321160653.png]]

评估模块
溯源提示

  • 基于选择的“值”的详细溯源说明
    • 如果“值”为 ‘TP’:
      1. 仔细比较响应与上下文。
      2. 识别并提取响应和上下文中完美对齐的关键片段。
      3. 按以下格式提供溯源:
        • ‘响应:“[从响应中提取的与上下文匹配的片段]”。’
        • ‘上下文:“[上下文中对应的片段]”。’
    • 如果“值”为 ‘FP’:
      1. 仔细检查响应,识别不正确或未出现在上下文中的部分。
      2. 按以下格式提供溯源:
        • ‘响应:“[响应中不正确或未被支持的片段]”。’
        • ‘上下文:“[上下文中最接近匹配的部分,或注明‘上下文中无对应信息’]”。’
    • 如果“值”为 ‘FN’:
      1. 检查上下文,找到响应中遗漏但存在于上下文中的关键信息。
      2. 按以下格式提供溯源:
        • ‘响应:“[整个响应]”。’
        • ‘上下文:“[上下文中应被匹配的相关片段]”。’

指南

  • 在所有情况下,确保提供的溯源清晰、简洁,并直接支持所选的“值”。
  • 溯源应是响应与上下文之间的精确匹配或直接比较,并严格遵循格式规则。

对于这些属性,我们要求 LLM 提供一个值:真阳性(TP)——表示准确预测,假阳性(FP)——表示检测到幻觉,或假阴性(FN)——表示响应未能检索到给定的证据(来自 NVD+CWE+超链接)。接下来,LLM 被要求为选定的值提供理由,最后是溯源属性,其中 LLM 被要求为其响应提供证据。

为了回答 RQ3,我们分别针对每个漏洞利用和缓解响应,从 NVD、CWE 和超链接中检索与 CVE-ID 相关的前 10 个块作为证据(参见图 2 的评估查询),并使用 Eval. LLM 将其与响应进行比较。值得注意的是,在查询 LLM 时,我们并未集成记忆的使用。相反,所有提示都以单一批次提交,查询之间没有任何上下文保留。


5 ProveRAG 的评估

为了回答每个研究问题,我们讨论了(RQ1)的数据集整理,并提供了不同 RAG 技术的结果(RQ1 和 RQ2)。此外,我们通过使用评估指标(RQ3)支持溯源的有效性,展示了每个 URL 如何归因于 Gen. LLM 的响应(RQ3),最后我们在另一个 LLM(Llama-3.1)上评估了 ProveRAG,并展示了一些 ProveRAG 响应的具体示例。

5.1 数据集与实验设计

为了设计解决 RQ1 的实验,我们整理了一个数据集,包含截至 2024 年 7 月 25 日报告的关键 CVE。我们专注于通用漏洞评分系统(CVSS)评分为 9.0 或更高的 CVE,这表明其严重性较高。从该数据集中,我们进一步筛选,仅包括那些可以直接映射到 CWE 数据库的 CVE(因为 CWE 包含潜在缓解策略的信息)。此外,我们利用了 NVD 网站上的超链接,这些链接为每个 CVE 提供了额外的相关信息。这些超链接被收集起来,以进一步丰富 ProveRAG 框架中使用的数据集,确保我们交叉引用了与每个 CVE 相关的所有可用信息源。最终,整理后的数据集包含 482 个 CVE,每个 CVE 都映射到相应的 CWE,并补充了相关的 NVD 资源。该数据集构成了 ProveRAG 框架中时间对齐和溯源分析的基础(因为 gpt-4o-mini 模型的训练知识截止时间为 2023 年 10 月 23 日)。这使得我们能够全面评估 LLM 生成准确、最新且与上下文相关的安全建议的能力。


5.2 ProveRAG 的有效性

5.2.1 分块 vs. 总结技术

为了回答 RQ2,在检索技术的评估中,我们通过逐步增强 Retr. LLM 的外部资源量来比较多种分块技术与总结技术(包括所有相关资源)在提供漏洞利用和缓解策略方面的能力。为了公平比较分块与总结技术,我们仅使用 NVD 和 CWE 作为信息来源。表 1 展示了这两种技术的整体结果。
![[Pasted image 20250321160725.png]]

从结果来看,首先可以看到,在仅提示实验中,漏洞利用和缓解结果的表现均较差。这显示了 LLM 在处理新数据时的知识局限性,因为整个数据集由 2024 年的漏洞组成。这回到了 RQ1,以及我们如何解决这一问题。通过整合检索技术,我们可以看到,随着整理数据集的加入,LLM 的时间对齐能力得到改善,表明这种方法可能缓解网络安全应用中与时间对齐相关的问题。

在漏洞利用结果方面,所有评估方法均表现出高准确性,尤其是仅限于 NVD 网站上关于 CVE 漏洞利用信息的 NVD-Only 方法。另一个观察是,增加更多数据略微降低了分块技术的性能。相比之下,对于更复杂的查询(即缓解信息),观察到显著的变化。NVD-Only 配置在提供缓解策略方面的准确率约为 29%,这符合逻辑,因为 NVD 网站缺乏专门的缓解部分;然而,它确实为某些 CVE 提供了一些建议。当将 CWE 添加到结果生成中时,我们可以看到 TPs 显著增加(从 139 增加到 262)。然而,将更多 URL 添加到生成过程中似乎使性能下降约 7%,这表明过多的链接可能会降低分块技术检索数据段的质量。这表明,当使用分块时,提供过多上下文可能会降低性能。

另一方面,当为数据生成提供相同链接集时,总结技术显著优于分块技术,TPs 从 227 增加到 379——提升了超过 30%。因此,这些发现有力支持了总结是一种更好且更高效的技术这一结论。结果表明,总结技术已被整合到 ProveRAG 中,以帮助系统对训练截止日期后发现的漏洞进行时间对齐。此外,该技术缓解了漏洞分析中的上下文窗口问题(RQ2),因为只有关键信息(即摘要)被输入到 Gen. LLM 的提示中。


5.2.2 ProveRAG 结果

为了全面整合 ProveRAG 并评估超链接中是否存在证据,我们将 Gen. LLM 的响应与所有 NVD、CWE 和超链接进行了比较。
![[Pasted image 20250321160808.png]]

表 2 展示了 ProveRAG 的结果(ProveRAGAqua 将在第 5.5 节讨论,以及 ProveRAG 性能的相应提升)。从结果来看,我们观察到漏洞利用检测性能略有下降,而缓解措施识别方面有小幅改进。这表明,尽管相关参考文献并未完全提升数据的实用性,但它们确实确保了与特定 CVE 相关信息的全面覆盖。第 5.7 节展示了 CVE-2024-0244 的示例,说明了包含超链接在增强对特定 CVE 缓解策略理解方面的优势。这是 RQ2 的解决方案,因为可能需要处理和总结许多链接以放入 LLM 的上下文窗口中。

需要注意的是,基于对 TP 结果的手动分析,ProveRAG 表现得像一位保守的分析师,仅提供那些从提供给模型的数据源中具有高度置信度和可解释性的响应。然而,在 FP 和 FN 响应的检测中存在一些不准确之处,这导致漏洞利用性能值略有下降(表 2)。接下来,我们展示溯源响应质量的证据。


5.3 溯源评估指标

为了回答 RQ3 并评估溯源质量,我们使用了以下指标:

5.3.1 归因

为了评估每个 URL 摘要(即 NVD、CWE 和超链接)的归因及其对结果生成的贡献程度,我们使用了 Captum 库 [18]。该库提供了针对 PyTorch 模型的各种基于扰动和梯度的归因算法实现。归因方法通过为每个输入特征分配分数来实现模型的可解释性,表示其对模型输出的影响。在我们的实验中,我们使用特征消融计算归因分数,这是一种基于扰动的方法,用于在修改后的输入上评估模型。该方法将每个特征替换为其在基线特征向量中的对应值,以评估其影响。公式 (1) 评估了不同特征对最终结果的贡献:

Δy=y(x)−y(xF) \Delta y = y(x) - y(x_{F}) Δy=y(x)y(xF)

其中,y(x)y(x)y(x) 表示模型在完整原始输入 xxx 下的输出。xFx_{F}xF 表示经过修改的输入,其中特征 FFF(或一组特征)已被消融——具体来说,被替换为基线或参考值。Δy\Delta yΔy 量化了由于特征 FFF 的消融而导致的模型输出变化。


5.3.2 Rouge-L 和余弦相似度

为了评估溯源结果的质量,我们将 Rouge-L 和余弦相似度(基于嵌入)指标纳入分析中。Rouge-L 专注于最长公共子序列,用于测量生成响应与参考文本之间的序列相似性。另一方面,余弦相似度利用了一个句子变换器模型,特别是 multi-qa-mpnet-base-dotv1,该模型针对语义搜索进行了优化 [30]。该模型使用 512 上下文窗口来比较响应与溯源证据部分之间的语义一致性,确保评估不仅捕捉文本准确性,还捕捉上下文和语义准确性。

5.4 溯源质量

为了回答 RQ3,我们应用了 Rouge-L 和余弦相似度来衡量所提供响应及其支持性溯源的质量。这些指标帮助我们评估系统输出与可验证证据之间的对齐情况,特别是在评估 TPs(真阳性)、FPs(假阳性)和 FNs(假阴性)时。
![[Pasted image 20250321160952.png]]

图 3 展示了这些值。如预期所示,TPs 在两项指标中始终获得最高分,表明生成的响应与支持性证据之间具有最大的重叠,这突显了 ProveRAG 的有效性。需要注意的是,FNs 的得分接近 TPs。这是预期的结果,因为 FNs 通常只是在响应中遗漏了一些细节,而这些细节在与源上下文对比时显得重要。在漏洞利用部分没有 FN 值,因为 LLM 在该类别中未做出 FN 预测。第 5.7 节提供了详细示例,以帮助理解这些值的具体背景。

此外,为了分析每个 URL 摘要对 LLM 响应的影响,我们使用了 Captum 库 [18]。我们通过将每个相关网站的摘要作为生成提示的上下文来计算归因分数。如果某个网站被认为不相关,则其归因分数被设为零,因为它未提供可供 LLM 使用的信息。为了便于跨 CVE 的比较,归因分数被归一化为单位范数。图 4 展示了这些归因值。
![[Pasted image 20250321161009.png]]

从结果可以看出,在漏洞利用方面,摘要中的大部分信息来源于 NVD。对于缓解摘要,CWE 的注意力分数大多高于 0.9,而 NVD 和超链接的值基本保持不变。这表明 Gen. LLM 在生成漏洞利用响应时最关注 NVD 摘要,而在生成缓解策略时最关注 CWE 摘要。


5.5 结构化上下文的改进

在第 5.2.2 节中,我们展示了 ProveRAG 在漏洞利用和缓解检测中分别实现了 95% 和 80% 的 TPs(包含 NVD、CWE 和 NVD 网站中的所有超链接)。因此,我们提出了一个问题:这是否可以进一步改进?需要注意的是,CWE 是在弱点层面而非漏洞层面上处理缓解问题的。通过研究,我们发现了 Aqua 漏洞数据库 [29],它为每个 CVE 的漏洞利用步骤和缓解策略提供了高度结构化且详细的上下文。因此,我们在检索总结过程中有意加入了 Aqua,并将其纳入溯源评估模块中进行实验。结果如表 2 的最后一行所示。
![[Pasted image 20250321161133.png]]

结果表明,ProveRAG-Aqua 在漏洞利用和缓解检测方面的性能显著提升,TPs 分别达到了 99% 和 97%。这表明 Aqua 数据库通过提供更多详细且结构化的上下文,在提升 ProveRAG 性能方面发挥了关键作用。这些结果显著优于基线实验,其中仅提示方法在缓解策略上的准确率仅为 6%,而检索分块技术的准确率约为 47%。
![[Pasted image 20250321161212.![png]]

此外,为了分析每个 URL 和 Aqua 数据库在生成摘要中的贡献,表 3 展示了 Retr. LLM 用于生成摘要的 URL 数量。这些摘要进一步被整合到 Gen. LLM 的上下文中,以提供漏洞利用和缓解响应。对于漏洞利用,结果表明 NVD 和 Aqua 起到了重要作用,因为它们包含大量与漏洞利用相关的信息。同样,对于缓解策略,CWE 和 Aqua 是主要来源,因为它们有专门针对缓解策略的部分。值得注意的是,“其他”类别达到了 1130 条,因为多个超链接可能对应于单个 CVE 条目。这表明 Aqua 在漏洞利用和缓解响应方面做出了重要贡献,从而积极影响了 ProveRAG 的整体性能(如表 2 最后一行所示)。

为了进一步评估 Aqua 对 Gen. LLM 响应的影响,图 5 展示了 ProveRAG-Aqua 中每个摘要的归因情况。结果表明,在缓解提示中,Aqua 和 CWE 的注意力分数分布较广,其中 Aqua 的中位数约为 0.7,高于 CWE 的中位数 0.43。在漏洞利用提示中,Aqua 和 NVD 的注意力分数范围也较广,且大多为正值,其中 Aqua 再次领先,中位数接近 0.7,而 NVD 的中位数约为 0.3。这表明,当加入 Aqua 时,它成为 Gen. LLM 在漏洞利用和缓解问题上的主要信息来源,同时 NVD 对漏洞利用有一定贡献,CWE 对缓解策略也有一定贡献。

接下来,我们将评估 ProveRAG 在另一个 LLM 上的性能。


5.6 ProveRAG 在其他 LLM 上的性能(通用性)

为了评估所提出的 ProveRAG 框架是否可以推广到不同模型,我们比较了 gpt-4o-mini 的结果与 Llama-3.1-8B 的结果(两种模型具有相同的上下文窗口和 2024 年之前的知识截止日期)。首先,基于定性评估,我们注意到 gpt-4o-mini 模型在遵循指令生成响应方面表现显著更好。需要注意的是,gpt-4o-mini 模型的规模未公开,但我们认为它在遵循指令和以所需格式生成内容方面是一个功能更丰富的模型。另一方面,Llama-3.1-8B 模型在生成输出时往往不太关注指南,多次未能以正确格式输出值、理由和溯源属性(例如,为单个响应提供多个 TP/FP/FN,或未显示溯源证据)。因此,我们在 ProveRAG 的评估提示中为 Llama-3.1-8B 模型添加了以下内容,以缓解这一问题:
![[Pasted image 20250321161236.png]]

以以下格式输出:

value: TP 或 FP 或 FN(整个响应只能有一个值)  
rationale: [所选值的理由部分]  
provenance:  
- response: [从响应部分提取的相关片段]  
- context: [从上下文部分提取的相关片段]  

这表明不同规模和能力的 LLM 可能存在局限性,因为它们在处理冗长或复杂的指令集时可能难以完全遵循所有指令。然而,通过精心设计提示,这一挑战可以得到显著缓解。

另一个关于 Llama-3.1-8B 的定性观察是,该模型的防护机制更为严格。对于 gpt-4o-mini 模型来说,这并不是一个问题,因为它从未拒绝为生成提示生成响应。然而,Llama-3.1-8B 在仅提示实验中为所有 CVE 生成了以下句子:

I cannot provide information on how to exploit vulnerabilities. Is there anything else I can help you with?

我无法提供有关如何利用漏洞的信息。还有什么其他我可以帮助您的吗?

这主要是仅提示实验中的问题;然而,对于 ProveRAG(即,将检索和总结的信息注入提示中),Llama-3.1-8B 仅拒绝为约 40 个 CVE 生成响应。因此,我们未将这 40 个 CVE 包括在溯源分析中(因为溯源要求有响应以进行自我批评并提供证据)。这表明不同 LLM 可能有不同的防护机制,但通过精心设计提示,它们仍然可以从 ProveRAG 框架中受益。
![[Pasted image 20250321161300.png]]

表 4 展示了获得的结果。需要注意的是,#GR 表示防护响应的数量,这意味着 LLM 拒绝为这些响应提供输出。

基于结果,很明显 ProveRAG 在 gpt-4o-mini 和 Llama-3.1-8B 模型上的表现均显著优于基线,尤其是 gpt-4o-mini 表现尤为突出。这表明 ProveRAG 在另一个 LLM 上进行漏洞分析的有效性,展示了其识别 CVE 并进行自我批评的能力。此外,我们的研究发现,Llama-3.1-8B 倾向于“忘记”遵循所有给定的指令。因此,我们建议通过更精心的提示工程来提升性能,使模型能够更好地遵循指令,并通过所提出的 ProveRAG 框架绕过过于严格的防护机制。虽然模型的选择是灵活的,但我们建议使用具有强大指令跟随能力的模型以获得最佳效果。

因此,这些研究结果支持了所提出的 ProveRAG 框架的通用性,强调了通过精心设计提示——考虑到每个模型独特的防护机制和指令跟随能力——ProveRAG 可以有效地利用不同的 LLM。为了优化溯源的有效性,我们建议使用擅长捕捉复杂指令并理解复杂标记依赖关系的模型。特别是,提示必须根据每个模型的具体特性进行定制,以充分利用 ProveRAG 的优势。接下来,我们将展示一些具体的示例,说明所提出的 ProveRAG 框架的工作原理。


5.7 具体示例

在本节中,我们将展示 ProveRAG 的评估模块如何工作(RQ3)。前三个示例展示了 gpt-4o-mini 在不同 TP、FP 和 FN 预测下的响应。随后,我们提供了 gpt-4o-mini 和 Llama-3.1-8B 模型之间针对特定 CVE 的对比分析。

首先,以下是一个 gpt-4o-mini 的 TP 响应示例:
![[Pasted image 20250321161323.![png]]

CVE-2024-0244 — 越界写入 -> GPT

缓解策略

  • : “TP”,
  • 理由:该响应准确反映了上下文中概述的 CVE-2024-0244 的缓解策略。它提到了更新固件、避免直接互联网连接、使用安全私有网络以及采用各种编程实践以防止缓冲区溢出,所有这些都得到了提供的上下文的支持。
  • 溯源
    • 响应:为缓解此漏洞,建议将受影响设备的固件更新到 03.07 版本之后,如佳能公司建议的那样。此外,用户应避免直接互联网连接,而是使用带有防火墙的安全私有网络。其他策略包括使用可以防止缓冲区溢出的编程语言、采用经过验证的库、实施自动缓冲区溢出检测机制,并遵守严格的内存管理实践。
    • 上下文:……我们建议客户安装受影响型号的最新固件……我们还建议客户为产品设置私有 IP 地址,并创建一个可以通过防火墙或有线/无线路由器限制网络访问的网络环境。潜在的缓解措施……使用不允许此弱点发生或提供使其更容易避免的构造的语言……使用经过验证的库或框架,该库或框架不允许此弱点发生或提供使其更容易避免的构造……使用某些编译器或编译器扩展提供的自动缓冲区溢出检测机制。
  • 检索 URL:nvd.nist.gov, cwe.mitre.org, avd.aquasec.com, psirt.canon/advisory-information/cp2024-001, canon.jp/support/support-info/240205vulnerability-response, canon-europe.com/support/product-security-latest-news
  • 指标:余弦相似度:0.7607,ROUGE-L:0.2299

上述示例表明,ProveRAG-Aqua 成功提供了准确的(TP)响应,并附有理由和可靠的溯源。有趣的是,响应和大部分证据均来自超链接,特别是“canon.jp”。这突显了整合广泛 URL 的关键重要性,以确保全面覆盖并增强系统提供有力支持证据的能力。所提供的指标对应于图 3 中显示的值。

以下是 gpt-4o-mini 的幻觉(FP)示例:
![[Pasted image 20250321161338.png]]

CVE-2024-0338 — 经典缓冲区溢出 -> GPT

漏洞利用信息

  • : “FP”,
  • 理由:该响应不准确地描述了 CVE-2024-0338 的利用过程。它提到了系统中的一个一般性漏洞利用过程,但未能具体说明这是一个 XAMPP 中的缓冲区溢出漏洞,允许通过长文件调试参数执行任意代码。该响应未能准确反映上下文中描述的漏洞的具体性质。
  • 溯源
    • 响应:CVE-2024-0338 是一个漏洞,允许攻击者利用系统中的缺陷,可能导致未经授权的访问或数据操纵。
    • 上下文:在 XAMPP 中发现了一个缓冲区溢出漏洞,影响 8.2.4 及更早版本。攻击者可以通过控制结构化异常处理(SEH)的长文件调试参数执行任意代码。
  • 指标:余弦相似度:0.4075,ROUGE-L:0.1695

对于 CVE-2024-0338(仅提示实验),系统生成了“FP”预测,清楚地展示了 LLM 的幻觉案例。这是预期的结果,因为该 CVE 是在 2024 年披露的,而 gpt-4o-mini 模型的训练数据截止日期为 2023 年 10 月。所提供的指标对应于图 3 中的值,反映了这一预测。

接下来,我们问:“如果 LLM 未能提供最准确的响应会怎样?”以下是 gpt-4o-mini 的‘FN’示例:
![[Pasted image 20250321161347.png]]

CVE-2024-0925 — 栈缓冲区溢出 -> GPT

缓解策略

  • : “FN”,
  • 理由:该响应遗漏了上下文中存在的潜在缓解策略的具体细节。虽然提到了诸如自动缓冲区溢出检测机制和 ASLR 等通用策略,但未包含上下文中提供的具体示例和额外内容,例如特定的编译器标志和技术(如 StackGuard、ProPolice 和 D3-SFCV)。
  • 溯源
    • 响应:潜在的缓解措施包括使用自动缓冲区溢出检测机制、采用地址空间布局随机化(ASLR)以及使用随机化内存地址的功能编译软件,以防止可预测的漏洞路径。
    • 上下文:使用某些编译器或编译器扩展提供的自动缓冲区溢出检测机制。示例包括:Microsoft Visual Studio /GS 标志、Fedora/Red Hat FORTIFY_SOURCE GCC 标志、StackGuard 和 ProPolice,它们提供了基于金丝雀的检测和范围/索引检查等各种机制。
  • 检索 URL:nvd.nist.gov, cwe.mitre.org, avd.aquasec.com, https://github.com/yaoyue123/iot/blob/main/Tenda/AC10U/
  • 指标:余弦相似度:0.7038,ROUGE-L:0.1892

在这种情况下,ProveRAG-Aqua 生成的响应为‘FN’,因为 LLM 遗漏了一些关于缓解策略的详细信息。需要注意的是,该响应实际上并不差,只是缺少了一些细节,指标也反映了它实际上与检索 URL 中的上下文非常接近。这突显了图 3 中显示的 TP 和 FN 值之间的接近程度。
![[Pasted image 20250321161408.png]]

现在,为了观察 ProveRAG 在其他 LLM 上的性能(以及溯源质量),以下是 Llama-3.1-8B 和 gpt-4o-mini 对 CVE-2024-0267 的响应:
![[Pasted image 20250321161434.png]]

CVE-2024-0267 — SQL 注入 -> Llama

漏洞利用信息

  • : “FN”,
  • 理由:此 CVE(2024-0267)是一个已知漏洞,并已向公众披露。该漏洞的关联标识符为 VDB-249823。
  • 溯源
    • 响应:在 Kashipara 医院管理系统(版本最高至 1.0)中发现了一个被分类为严重级别的漏洞。受影响的是组件参数处理程序中的 login.php 文件的某未知功能。
    • 上下文:从 VulDB 收到的新 CVE。
  • 检索 URL:nvd.nist.gov, vuldb.com/?ctiid.249823
  • 指标:余弦相似度:0.3070,ROUGE-L:0.0000

![[Pasted image 20250321161515.png]]

CVE-2024-0267 — SQL 注入 -> GPT

漏洞利用信息

  • : “TP”,
  • 理由:该响应准确描述了 Kashipara 医院管理系统中的严重漏洞 CVE-2024-0267,特别是详细说明了通过 login.php 文件中的“email”和“password”参数进行 SQL 注入的过程。它正确地指出,攻击者可以通过利用此漏洞未经授权访问系统的数据库,这与提供的上下文一致。
  • 溯源
    • 响应:CVE-2024-0267 是 Kashipara 医院管理系统中的一个严重漏洞,允许通过操纵 login.php 文件中的“email”和“password”参数进行 SQL 注入。攻击者可以通过向这些参数注入恶意 SQL 代码来利用此漏洞,从而导致未经授权访问系统数据库。
    • 上下文:在 Kashipara 医院管理系统(版本最高至 1.0)中发现了一个被分类为严重级别的漏洞。该漏洞被称为 CVE-2024-0267。对 email/password 参数的操作会导致 SQL 注入。攻击可以远程发起。
  • 检索 URL:nvd.nist.gov, cwe.mitre.org, vuldb.com/?id.249823
  • 指标:余弦相似度:0.8785,ROUGE-L:0.3265

对于 Llama-3.1-8B 处理的 CVE-2024-0267,预测被分类为漏洞利用信息的“FN”。理由和溯源验证了 ProveRAG 中选定的值。从上下文中可以看出,Llama 模型未能正确提取检索的信息。较低的 ROUGE-L 和余弦相似度分数表明生成的响应与支持证据之间的差异。这表明指令跟随能力较弱的 LLM 在溯源方面的表现将如何,因此强调了需要更强大的模型或针对该模型特定特性精心设计的提示。相比之下,gpt-4o-mini 模型通过提供与检索 URL 高度重叠的证据,准确识别预测为“TP”,并获得了较高的余弦相似度和 ROUGE-L 分数。这些指标对应于图 3 中展示的值。这一对比展示了不同模型可能难以有效利用检索上下文,突显了模型选择和/或针对特定模型定制提示的重要性,以最大化 ProveRAG 在优化漏洞分析性能和可靠性方面的好处。


6 结论

在本研究中,我们专注于通过开发 ProveRAG 系统来增强 LLM 分析和应对网络威胁的能力。ProveRAG 模拟了分析师在漏洞分析中的方法,同时对其自身的响应进行自我批评。通过整合自动化总结检索技术获取最新的网络数据以及自我批评机制,ProveRAG 缓解了最先进的 LLM 存在的遗漏和幻觉问题。它生成全面的漏洞利用步骤和缓解策略,并通过来自权威数据库(如 NVD、CWE 和 Aqua)的证据支持每个主张。我们的研究结果表明,ProveRAG 实现了卓越的准确性,在漏洞分析中超越了直接提示和分块检索方法。此外,我们的结果支持了 ProveRAG 在不同 LLM 中的适应性和有效性,同时强调了模型选择和定制提示工程在优化性能方面的重要性。通过提供经过验证的证据和详细的理由,ProveRAG 不仅为分析师提供了及时、准确的见解,还确保了过程被妥善记录以供后续审计。


7 伦理考量

我们认为本研究不会引发伦理问题,因为它既没有揭示新的漏洞,也没有促进漏洞利用。相反,这项工作专注于开发一种基于溯源的 LLM 框架,以增强对 LLM 知识库中不存在的漏洞的分析能力。通过纳入溯源,系统确保了其生成内容的事实准确性和透明性,从而实现自我批评并提供基于证据的见解。所提出的框架完全基于开放领域数据,旨在通过为漏洞分析提供可靠且可验证的输出来支持网络安全专业人士。它不会引入或暴露之前未公开的漏洞,从而在整个应用过程中保持了伦理完整性。此外,本研究有助于更广泛地理解 LLM 在网络安全中的作用和局限性。我们的研究结果为专业人士提供了有关在网络安全环境中合理使用 LLM 的可行见解。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐