翻译:CyKG-RAG: Towards knowledge-graph enhanced retrieval augmented generation for cybersecurity
近年来,网络安全威胁检测与分析已成为日益重要的研究领域。与其他领域一样,生成式人工智能(generative AI)和大语言模型(LLMs)的兴起为推进网络安全创造了新的机遇,但也突显了LLMs面临的一些关键挑战——包括幻觉问题、知识缺陷以及处理事实信息能力的不足。为了解决这些限制,检索增强生成(Retrieval Augmented Generation, RAG)——通过动态从外部来源检索相关
CyKG-RAG:迈向知识图谱增强的网络安全检索增强生成
CyKG-RAG: Towards knowledge-graph enhanced retrieval augmented generation for cybersecurity
摘要
近年来,网络安全威胁检测与分析已成为日益重要的研究领域。与其他领域一样,生成式人工智能(generative AI)和大语言模型(LLMs)的兴起为推进网络安全创造了新的机遇,但也突显了LLMs面临的一些关键挑战——包括幻觉问题、知识缺陷以及处理事实信息能力的不足。为了解决这些限制,检索增强生成(Retrieval Augmented Generation, RAG)——通过动态从外部来源检索相关信息以增强LLMs的能力——已在许多领域展现出潜力。然而,普通的RAG方法通常基于文本操作,未考虑数据中的符号表示、概念意义及其关系。在网络安全领域,这类RAG方法无法充分考虑一些关键方面,例如网络结构、威胁攻击模式以及复杂的安全事实知识,而这些对于识别可疑活动、整合线索以发现和重建攻击至关重要。
为应对这一挑战,我们提出了CyKG-RAG,一种将知识图谱(Knowledge Graphs, KGs)与RAG方法相结合的新型框架,专门用于改进网络安全检测与分析。我们的框架利用知识图谱中丰富的语义关系和结构化数据,提供上下文相关的支持信息,从而提高网络威胁检测的准确性和可靠性。我们通过实际用例验证了该方法的有效性,结果表明其在提升网络安全措施方面具有广阔前景。
关键词 RAG,LLM,网络安全,知识图谱
1. 引言
知识驱动的方法在网络安全领域日益受到关注,通过使用本体和知识图谱促进了术语标准化以及决策过程的自动化。因此,网络安全领域已涌现出多种形式化的知识表示方法(例如,[1, 2, 3, 4, 5, 6])以及构建网络安全知识图谱的方法论[7]。
尽管语义网技术不断发展,且基于图的方法在各领域中的应用日益广泛,网络安全专业人员的能力与其在安全流程中有效利用语义技术的能力之间仍存在显著差距。长期以来,如何让安全专业人员无需深入了解语义领域的专业知识即可访问、查询并利用知识图谱一直是一个障碍。这一差距意义重大,因为形式化的知识表示有潜力缓解网络安全专业人员面临的若干关键挑战,包括:(i) 全球范围内熟练网络安全人员的短缺[12];(ii) 学习曲线陡峭[8];(iii) 数据量过大导致分析师疲劳和超负荷[34];以及 (iv) 快速演变的威胁环境要求持续警惕与适应能力[5]。
随着ChatGPT、LLama、Claude和Gemini等大语言模型(LLMs)的出现[9, 10],研究人员开始探索这些模型如何改进网络安全任务[11]。然而,这些模型面临严重的局限性。它们通常在复杂推理任务和多查询间保持一致性方面表现不佳,这使得在应对复杂的网络安全挑战时难以依赖它们[12]。此外,它们在处理事实数据集时常失败,有时会引入无关或错误的信息——这一问题通常被称为“幻觉”,即模型生成的内容缺乏证据支持[13]。这引发了重大的信任问题,因为在网络安全这样关键的领域中,确保LLMs生成信息的质量和可靠性仍然是一个严峻挑战。
为了解决网络安全背景下的这些问题,我们研究了将领域特定知识图谱与LLMs相结合的可能性。我们的目标是支持安全分析师完成诸如日志分析和攻击检测等任务。在将知识整合到LLMs的各种策略中,包括微调、提示工程和知识编辑,我们专注于检索增强生成(Retrieval-Augmented Generation, RAG)[14]。该技术使LLMs能够利用数据集回答用户查询,而无需额外的模型训练。RAG最初设计用于答案嵌入在文本特定区域的场景。然而,它在从分散但相关的信息片段中综合见解时常遇到困难。这类文本的数量可能超出LLM上下文窗口的限制,而扩展这些窗口可能不足以解决问题,因为信息可能会“迷失”在更长的上下文中[15]。此外,当RAG需要跨大数据集或大量文档(例如,日志)理解和总结语义概念时也会遇到困难,这在网络安全领域尤为常见。这些挑战凸显了形式化知识表示的需求,这种表示非常适合定义结构化概念、其关系以及相关元数据。
本文提出了CyKG-RAG,这是一种将网络安全知识以图形式集成的RAG方法。我们的框架利用知识图谱中丰富的语义关系和结构化数据,提供上下文相关的支持信息。我们通过实际用例验证了该方法的有效性。
2. 相关工作
在本文的背景下,两类研究特别值得关注:(i) 网络安全领域的知识建模;(ii) 图驱动的RAG方法。
2.1 网络安全中的知识图谱/本体
形式化知识表示一直是网络安全领域广泛研究的主题。早期的研究集中在将信息安全知识进行高层次的概念化,并通过本体表示(例如,[16, 1, 17, 18, 19, 20, 21])。这些本体通常包含一组基本概念,如资产、威胁、漏洞和对策。此外,许多针对特定应用领域(例如,风险管理、事件管理)的本体已经被发布。关于安全本体的全面调查和分类可以参考[22]。近年来,一些项目致力于开发覆盖信息共享标准(如CVE、CVSS和CAPEC)的安全本体。这些标准是当代网络安全知识的重要来源,并支持漏洞信息的交换。作为STUCCO研究项目的一部分,[23]提出了一种构建网络安全知识图谱的方法,该方法整合了结构化和非结构化数据源中的信息。文献[6]的目标是整合来自各种网络安全系统和标准的异构知识模式,并创建一个统一的网络安全本体(Unified Cybersecurity Ontology, UCO),对齐CAPEC、CVE、CWE、STIX、可信自动化指标信息交换(TAXII)以及Att&ck。文献[2]则采取了更为综合的方法,不仅提出了一个网络安全本体,还解决了网络安全领域的动态特性,并引入了一个ETL工作流程,以便在新信息可用时更新知识图谱。此外,它可以轻松链接到本地可用数据并融入操作场景中。开放访问的网络安全知识图谱(CSKGs)包括CSKG[4]、Open-CyKG[5]、ATT&CK-KG[24]和SEPSES-CSKG[2, 3]。有关CSKGs的更多细节,请参阅最近的综述[25, 26, 27, 28]。
2.2 LLM与检索增强生成
在检索增强生成(Retrieval-Augmented Generation, RAG)中,相关信息从外部来源检索并整合到大语言模型(LLMs)的上下文窗口中。文献[29]概述了三种不同的RAG范式:朴素RAG(Naïve RAG)、高级RAG(Advanced RAG)和模块化RAG(Modular RAG)。朴素RAG方法通常基于将文档转换为文本、将文本分割成块,并将这些块嵌入到向量空间中。高级RAG系统进一步发展,结合了预检索和后检索策略以提高检索质量。模块化RAG系统引入了迭代和动态的检索与生成交替循环,从而增强了检索过程的灵活性和有效性。
图与LLMs在RAG中的交集是一个新兴的研究领域,在知识图谱创建[30]、补全[31]以及因果图提取[32, 33]方面做出了重要贡献。高级RAG系统也开始使用基于图的索引[34]。文献[35]提出了G-Retriever方法,允许用户通过对话界面询问图相关问题。该方法可以通过软提示进行微调,以增强图理解能力。另一种为现有LLMs添加图推理能力的方法是Graph-ToolFormer[36],其目标是实现图学习。此外,SURGE[37]利用知识图谱支持上下文相关的、基于知识的对话。与其他基于知识的方法相比,它采用对比学习来确保生成的文本与检索到的子图具有高度相似性。
对我们工作而言,一个重要方法是FABULA[38],这是一个利用OSINT中上下文叙述特征自动生成事件情报报告的系统。GraphRAG[39]解决了RAG在面对整个文本语料库的全局问题时失效的挑战,因此提出了一种从文本语料库构建基于图的索引,并将图划分为分层社区结构的方法。为了对整个语料库进行查询聚焦的摘要生成,采用了Map-Reduce方法,首先基于每个社区摘要独立回答查询,然后将所有相关部分答案汇总为最终的全局答案。
在问答和多文档问答(MD-QA)领域[40],文献[40]使用知识图谱提示(Knowledge Graph Prompting, KGP)为MD-QA提供合适的上下文提示,该方法由图构建模块和图遍历模块组成。
3. CyKG-RAG框架
本研究的目标是通过一种特定领域的RAG方法增强现有的LLMs,该方法利用符号表示来解决与私有和动态安全相关信息(如日志数据、安全事件和IT基础设施)相关的网络安全问题。此外,我们还希望利用现有的网络安全信息,包括漏洞、弱点和攻击模式等信息,以协助网络安全分析师完成日常任务。在本节中,我们将介绍我们针对网络安全设计的RAG系统方法。我们讨论了RAG架构,包括知识图谱构建、现有网络安全知识图谱的向量嵌入以及检索机制。最后,我们展示了我们的原型实现。
3.1 RAG架构
图1所示的架构概述了我们专门为网络安全设计并利用知识图谱的RAG系统。它可以分解为以下组件:
(i) 知识图谱构建
我们的CyKG-RAG方法利用知识图谱表示形式来表达与网络安全相关的领域特定知识,包括例如主机日志事件、网络和基础设施描述以及网络安全信息。这些信息对于安全分析师回答网络安全相关问题是至关重要的,因此将被整合到我们的RAG系统中。如图1所示,知识图谱基于两类信息源构建:
- 日志与事件图:从本地日志数据和事件中构建,表示与网络安全相关的私有组织特定信息。
- 外部数据:包括来自公开可用的网络安全信息,例如通用漏洞披露(CVE)、通用弱点枚举(CWE)、通用攻击模式枚举与分类(CAPEC)、MITRE ATT&CK以及其他威胁情报。这些信息会持续更新,以确保知识图谱反映最新的网络安全威胁和防御态势。
构建的知识图谱可用于将本地安全事件与外部网络威胁情报进行上下文化处理,从而提供对潜在威胁的更全面理解。知识图谱的构建可以通过两种方式完成:
- 基于LLM的知识图谱构建:这种方法通过LLMs将半结构化和非结构化信息转换为知识图谱表示。
- 基于规则的知识图谱构建:这种方法通过声明性语言(如RML)将结构化信息映射到本体/模式上,并将其转换为知识图谱。
(ii) 现有网络安全知识图谱中的向量嵌入
将向量嵌入整合到知识图谱中的优势在于其能够对知识图谱中非结构化元素(特别是通常为非结构化的安全相关数据,如日志消息、安全事件等)进行灵活的全文搜索。知识图谱节点中的向量嵌入有助于识别相关节点及其与其他实体的关系。与传统的图查询(如SPARQL、Cypher)相比,这种方法特别有用,因为传统查询可能由于知识图谱中不匹配或不完整的数据而难以检索信息。
向量相似性搜索的目标是基于向量嵌入的相似性在知识图谱中定位元素(即节点)。这些嵌入被编码并存储为节点的属性。通常,一个节点代表较大文档的一部分数据块。在网络安全背景下,文档可以是一个安全日志源,而数据块可能是包含系统特定事件消息的日志行。
图2展示了一个使用日志知识图谱中的向量嵌入进行相似性搜索的示例。如图左上部分所示,该过程从知识图谱构建开始,将日志源(例如Authlog)中的条目(例如“Mar 4 19:25:47 mail auth: pam_unix(dovecot): authentication failure; logname…”)转换为日志图。随后,日志图被分割为更小的单元,称为“数据块”(例如Chunk-1、Chunk-2、Chunk-3等)。这些数据块是知识图谱中的节点,表示与特定节点相关联的单个日志行,捕获相关实体(如用户“Daryl”和“Dovecot”邮件服务器)及其关系(如提及、认证失败)。
知识图谱中的每个节点(表示一个日志数据块)都关联一个嵌入——即一个捕捉数据块中文本语义含义的数值表示。这些嵌入随后存储在向量索引中。嵌入允许系统执行向量相似性搜索,以根据查询检索最上下文相关的数据块。例如,节点属性部分显示了与Chunk-2对应的嵌入,该嵌入与涉及Daryl的认证失败事件相关联。基于分块的嵌入使系统能够根据语义相似性(而不仅仅是关键词匹配)将查询与最相关的日志行进行匹配。
(iii) 检索与问答机制
如图1所示,我们的RAG方法的检索机制包括以下步骤:
-
安全分析师的问题 ○1
过程从安全分析师提出一个用自然语言表达的网络安全问题开始。该问题被整合到提示中并发送给LLM。 -
图查询与向量(语义)搜索 ○2
基于给定的问题和上下文知识(即知识图谱模式、词汇表),LLM生成一个图查询,即针对资源描述框架(RDF)知识图谱的SPARQL查询或针对标记属性图(LPG)的Cypher查询,并在知识图谱上执行。需要注意的是,生成的查询并不总能回答给定的问题——例如,因为LLM可能生成无效查询,或者查询可能返回空结果。为了解决这一限制,我们的框架将查询生成与基于问题向量表示和知识图谱中嵌入向量表示之间相似性的向量(语义)搜索相结合。如图2所示,问题“Daryl是谁?他在系统中做了什么?”首先通过LLM编码为查询嵌入——一个表示问题语义含义的向量。然后,该查询嵌入与包含日志数据块嵌入的向量索引进行比较。通过向量相似性搜索,系统识别出最相关的数据块及其关联节点。这些识别出的节点可以用作起点,通过图查询遍历其他路径并检索与问题相关的其他信息。 -
网络安全知识与日志事件图 ○3
生成的查询针对两个主要数据源:- 日志与事件图:这些图表示由网络安全相关数据(如日志、事件和基础设施信息)构建的私有/本地信息。
- 网络安全知识图谱:这些图表示包含从公开可用数据源(如漏洞、弱点、攻击模式等)构建的广泛网络安全知识的外部信息。
-
结果检索 ○4
从日志与事件图和网络安全知识图谱中通过图查询检索的结果以及通过向量(相似性)搜索检索的结果与提示一起传递给LLM。 -
结果合成 ○6
LLM处理并综合检索到的信息,生成最终答案并呈现给安全分析师。
3.2 原型实现
(i) 知识图谱构建
我们的知识图谱构建方法基于两种基本技术。第一种是基于规则的构建,我们利用它来摄取结构化的网络安全信息。为此,我们复用了现有的CSKG[2],该图谱使用RDF映射语言(RML)将结构化信息映射并转换为知识图谱。我们使用了Ontotext GraphDB6(一个开源图数据库)来存储RDF数据。
第二种是基于LLM的构建,用于将私有或本地数据中的半结构化和非结构化信息(例如日志源)转换为知识图谱。具体而言,我们使用了Langchain LLM Graph Transformers7,这是一种基于Python的工具,利用LLM将文档转换为基于图的格式。在实验中,我们使用ChatGPT 3.5-turbo8执行这些任务。为了为构建的知识图谱创建向量嵌入,我们利用了OpenAIEmbedding9——这是OpenAI提供的一项服务,用于生成文本数据的向量嵌入。生成的向量嵌入随后存储在Neo4J向量存储10中。
(ii) 简单聊天机器人界面用于问答
为了促进安全分析师与CyKG-RAG系统的交互,我们开发了一个简单的基于Web的聊天机器人系统界面,如图3所示。
我们使用了Streamlit11(一个开源的Python框架)快速构建Web应用程序。在最终的应用程序中,安全分析师可以用自然语言提出与安全相关的问题,并获得系统返回的回答以及解释(例如,实际生成的查询及其从知识图谱中获得的结果)。
该界面由以下几个部分组成:
- 问题区域:安全分析师可以在此输入查询。
- 最终答案框:显示系统生成的答案。
- 生成的图查询部分:展示由LLM生成的实际查询,可以是SPARQL或Cypher查询。
- 查询结果部分:提供传递给LLM的数据,包括从图数据库或向量嵌入中获得的结果。
4. 实验与用例应用
在本节中,我们描述了一系列实验,以展示我们的RAG方法在网络安全相关问答和分析任务中的可行性。我们首先从与网络威胁情报和漏洞评估相关的通用网络安全问题入手,使用持续更新的CVE信息进行测试,随后对特定日志数据集进行了日志分析。为了区分检索过程的不同部分,我们使用了不同的颜色标记:(i) 蓝色文本框表示安全分析师提出的自然语言问题;(ii) 绿色框表示LLM生成的图查询(例如SPARQL、Cypher);(iii) 红色框表示从图数据库中获得的查询结果或向量相似性检索的结果;(iv) 棕色框表示问题的最终答案。
(i) 网络威胁情报的通用问题
在此演示中,我们利用现有的SEPSES CSKG12作为RAG系统的知识来源。在这种情况下,系统可用于回答与网络威胁情报(例如MITRE ATT&CK13)相关的问题,包括关于攻击技术、战术等的查询。
(ii) 基于持续更新的漏洞信息的漏洞评估
我们使用与用例(i)相同的知识来源,展示了RAG系统如何有效处理快速演变的网络安全信息的动态检索。例如,系统可以评估由其CVE ID标识的特定组件或产品的当前漏洞状态。仅靠LLM无法实现这一点,因为每当新的CVE发布时,都需要频繁更新(例如微调)。
(iii) 安全日志分析
此场景展示了RAG系统如何促进针对私有或本地信息(例如日志源)的问答。在该实验中,我们使用了从AIT数据集[41]派生的数据集,并通过LLM构建了知识图谱。此外,我们还生成了向量嵌入,以支持对构建的知识图谱进行全文搜索。
5. 结论与未来工作
网络安全是一个以复杂且快速演变的领域知识为特征的领域,同时具有高度动态的环境和多种形式的信息流(例如日志)。此外,这类信息的关系性质要求能够有效且可靠地连接分散的信息片段。这些特性对LLMs提出了挑战。尽管LLMs在网络安全领域展现了巨大的潜力,但它们难以基于更新的信息进行重新训练,在处理事实信息时可靠性不足,并且容易出现幻觉等问题。
在本文中,我们提出结合多种检索增强生成技术,以应对这些固有的局限性,并在网络安全分析工作流中充分利用LLMs的能力。为此,我们引入了CyKG-RAG,这是一种基于RAG的问答系统,它将安全知识的符号表示(以知识图谱结构形式)与查询生成及基于向量嵌入的语义相似性搜索相结合,从而实时检索相关信息并合成有意义的答案。我们在从通用网络安全知识到动态知识(如新出现的漏洞)以及实时日志数据的相关问题解答中的初步评估显示了非常有前景的结果。
在未来的工作中,我们将在更广泛的实验设置中对该方法进行全面评估,并研究各种RAG技术的相对有效性以及在不同场景下组合这些技术的不同方法。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)