前言

在 LinkedIn,我们为超过十亿的会员提供服务,在职场世界中建立联系、学习并互动。随着平台流量和参与度的增加,我们的安全团队希望我们的系统能够帮助简化关键安全问题的识别和分析,以便团队成员能够更快地应急响应并执行特定的动作。团队开始测试并评估新的方法,以在保护会员和客户的同时传递这些洞察,特别聚焦于漏洞管理

有效的漏洞管理需要持续的改进和创新,尤其是在 LinkedIn 的规模下。在 AI 时代,单纯识别和修补已知漏洞的传统方法已无法跟上当前的挑战。随着数字基础设施的扩展和多样化,我们的安全团队必须采用新的方法来有效管理风险,确保我们的防御保持强大,并对新兴威胁作出响应。威胁的种类和规模不断增加,促使我们重新审视漏洞管理的方法。这包括构想安全态势平台(SPP),一个展示我们基础设施安全状况的动态地图,它在我们的信息安全项目中发挥了至关重要的作用。

在这篇博客中,我们将描述如何开发 SPP,详细说明我们在简化和自动化收集和分析分布式安全系统数据的过程中学到的经验。初步结果表明,SPP 减少了人工干预,提高了漏洞响应速度约 150%,通过一个统一的平台增加了我们基础设施的覆盖面约 155%,并结合动态风险评估和自动化决策制定。

构建 LinkedIn 的安全态势平台

图 1. 安全态势平台概览

SPP概览

LinkedIn 的安全态势平台(SPP)旨在提升企业和生产基础设施的安全态势。新 SPP 的核心是安全知识图谱,这是一个详尽的数字资产库,提供了识别漏洞和预测攻击路径的关键信息,从而允许定制安全措施。通过利用多种数据源和智能集成,SPP 提供了一个全面且动态的视图,帮助组织管理和缓解风险。

SPP 的基础

SPP 被创建用于监督我们组织的安全态势。它与现有的安全工具和工作流程无缝集成,引入了 AI 能力来简化操作并强化防御。

SPP 显著提升了我们管理和缓解风险的方式。以下是 SPP 关键特性对我们安全策略转型的影响,以及它如何帮助我们改进安全态势:

全面的资产清单

SPP 对数字资产进行 catalog,包括从物理设备到云资源,为我们的安全团队提供了所需的详细可见性,以便有效地优先排序。通过将防御策略与资产的关键性和业务影响对齐,不仅提升了我们的可见性,还优化了资源分配。结果是一个有针对性且高效的安全方法。

数据驱动的风险分析和自动化安全决策

SPP 利用广泛的安全元数据进行持续、接近实时的风险评估。这一从传统的反应型向主动型安全战略的转变增强了我们的防御措施,并提升了我们迅速适应新威胁的能力。这种方法的关键组成部分是我们的条件访问服务,它战略性地隔离高风险设备。

集中风险管理和增强可见性

SPP 的核心是一个集中的知识图谱,它清晰地展示了不同资产之间的相互关系,提升了我们识别和应对潜在风险的能力。配合直观的仪表盘,展示每个用户及其拥有资产的安全态势、主机上的漏洞和不安全配置等,SPP 改变了我们保护 LinkedIn 基础设施的方式。这些工具不仅提供了清晰、可操作的洞察,还使我们的团队能够专注于战略分析和漏洞优先级排序。SPP 带来的增强可见性和主动管理加强了我们的安全态势,为我们有效应对不断变化的数字威胁做好了准备。

SPP AI

我们为 SPP 提供了直观的 UI、灵活的 GraphQL 沙盒以及 API。然而,我们知道这不足以满足我们的用户(即安全分析师、系统负责人、业务/组织领导)对快速获得即时答案的需求。我们需要确保用户能够轻松获取他们所需的内容,以保持 LinkedIn 安全,并成为最可信的平台。以下是我们每天需要回答的一些问题:

  1. 我们是否受到了漏洞 X 的影响?

  2. 漏洞 X 是否存在于暴露于不可信网络的设备上?

  3. 谁负责修补主机 A?

  4. 如何在 Windows 11 上修补漏洞 X?

  5. 我设备上风险最高的漏洞是什么?

  6. 主机 X 上运行了哪些服务,谁是所有者?

生成型 AI 为我们开辟了新天地,让我们可以探索如何提升用户与知识系统的互动。在实验过程中,我们的目标是消除语言障碍,使新成员从第一天开始就能有效使用系统。

在学习和实验过程中,我们面临了巨大挑战。内部我们可以接触到一些容量非常有限的早期模型。我们的图谱包含了数百 GB 的数据,这与当时可用的有限容量不兼容。在这种约束下,我们不得不进行创新。

随着时间的推移,基于我们的努力,我们构建了 SPP AI。SPP AI 核心利用先进的模型,提供接近实时的洞察,抽象化我们复杂基础设施中数据的复杂性和碎片化,从而减少学习曲线,使数据驱动的决策在规模上成为可能。

SPP AI 架构

图 2. SPP AI 架构

SPP AI 架构

SPP AI 的架构旨在处理复杂的安全数据和用户查询,从初始输入到执行和总结。以下是系统中每个组件的细分。

上下文生成

第一步是从新数据源准备上下文。这一过程对于使 AI 准确且动态地响应查询至关重要。上下文生成过程将来自不同数据库的原始数据转换为大型语言模型(LLMs)能够有效理解和解释的结构化格式。

上下文生成的步骤:

  1. 种子数据和上下文生成自动化: 上下文生成的基础是种子数据,其中包括一组经过精心策划的预定义查询和响应。该数据集作为 LLMs 的初始学习材料。自动化脚本定期更新这些种子数据,以纳入最新的变化和扩展。

  2. 合成数据生成: 利用种子数据,LLMs 生成合成数据集,模拟各种潜在的场景。这一步骤帮助 AI 应对超出当前数据库范围的查询,有效提升了 AI 的适应性和响应准确性。

  3. 元数据合成: 来自用户交互和系统更新的实时元数据与合成数据生成一起进行合成。这些元数据丰富了合成数据集,增加了细节层次,帮助 LLMs 更深刻理解上下文。

嵌入和索引: 合成数据集随后被嵌入到一个向量索引中。这个索引作为一个集中存储库,有效地组织并存储所有与上下文相关的数据,从而在查询处理中提供快速的数据检索。

图 3. SPP AI 上下文检索架构

SPP AI 上下文检索架构

通过这一结构化且有条理的方法,SPP AI 使 LLMs 能够深刻理解数据库内容,并准备好处理各种查询。该框架可扩展,以适应需要引入的新数据源。

多查询生成

多查询生成和执行过程对于将查询转化为可操作的数据检索指令至关重要。这些过程交互会被转化为精确且相关的数据检索命令。

查询映射中的挑战: 主要的挑战是将用户的自然语言查询映射到知识图谱中适当的节点、属性和关系。AI 模型必须在图谱中筛选出与用户查询对接的确切模式和示例,从而提高响应的准确性和相关性。

基于功能的查询映射: 由于我们使用的是 GraphQL API,而非 RESTful API,用户可以灵活地穿越不同的节点和关系,构建最符合其用例的查询。然而,这使得我们在将函数调用能力映射到预定义的 API 端点时遇到了一些困难,因为 GraphQL 查询在用例之间可能差异较大。

为了解决这个问题并充分利用函数调用功能,我们将函数映射到知识图谱中的节点类型。这使得我们能够使用函数调用特性来帮助模型从知识图谱中选择最相关的节点类型,从而简化了节点选择过程。

合成搜索和查询制定: 在确定相关节点及其属性后,SPP AI 会构建一个全面的提示,包括用户的问题、所选的属性和相关的查询示例。这些提示由 LLM 处理,以生成准确且优化的 Cypher 查询进行数据检索。

动态提示生成和错误处理: 在系统处理查询时,会根据不断变化的上下文和用户需求动态生成和完善提示。如果出现不准确的情况,系统会采用语义搜索技术来优化上下文,提升查询的准确性。

回退机制和迭代改进: SPP AI 包括一个回退机制,当主要查询未能提供足够结果时,系统会激活该机制,准备次级查询,并通过迭代改进继续信息检索。

集成与用户赋能: SPP AI 引入了轻量级的 GraphQL 查询生成实现,辅以 Cypher 查询的强大功能。这种双查询生成框架显著提升了系统性能和用户体验。此外,用户还可以修改和优化生成的查询,适应广泛的用户偏好,提升参与感。

查询路由

查询需要以低延迟和高准确度执行。查询路由将请求导向最有效的知识图谱或 GraphQL 后端。该架构支持更多的数据后端,允许从不同数据存储中提问,而无需先将所有数据汇聚在一起。

输出摘要

LLMs 在数据摘要方面表现出色。用户的查询、结果等将用于全面回答问题。聊天数据存储在临时存储中作为记忆,并在后续问题中添加到相同的上下文中。如何管理随意变化意图的后续查询是当前正在解决的挑战。

准确度评估框架

在 SPP AI 的开发和运行过程中,一个强大的评估框架使每个组件都能以最高的准确性和效率运行。

种子数据和验证数据集: 我们通过一个严格的评估框架,比较 AI 生成的查询与预定的真实值或专家经验提供的查询,来评估 SPP AI 生成查询的准确性。精心策划的种子数据训练系统,涵盖了一系列典型和非典型交互场景。验证数据集测试系统对边缘场景的处理能力,评估其处理不常见查询的能力。

迭代改进过程: 测试框架支持持续的迭代和改进。根据测试结果,系统会调整提示生成、数据合成和整体查询处理。

人工验证: 为了补充自动化测试过程,SPP AI 还引入了人工验证,以确保输出既准确又实用,并且易于终端用户理解。人工专家审查一部分查询和响应,评估系统在实际场景中的效果。

通过这一严格的测试框架,SPP AI 保持了高标准的准确性和可靠性,系统有效管理了复杂的数据交互,确保稳健的安全态势管理。这种方法使得快速迭代、根据反馈调整和持续改进成为可能。

我们在 GPT-3 模型之前开始了 SPP AI 的建设,当时使用的是 Davinci 模型。在早期,我们的“盲测”准确率大约在 40%-50% 之间。而在目前的 GPT-4 模型中,准确率已达 85%-90%。每一代模型都需要对提示和部分系统进行调优,以便最有效地发挥其潜力。值得注意的是,我们的盲测案例旨在使每个测试涉及图谱的不同部分,访问特定的节点、关系和属性。我们提出的挑战性问题,在我们的训练集里并没有直接包含。实际上,即便是了解我们系统的工程师,构造这些测试的正确查询也并非易事。

我们的收获

已经拥有一个包含来自二十多个相关安全数据源的标准化图谱极为有帮助。当我们在其上添加 AI 层时,立刻获得了洞察,而无需与每个单独的数据源进行集成。实验也非常重要,我们通过内部工具安全地测试了私有的 Azure OpenAI 模型,从而快速进行了迭代。

然而,我们的过程并非没有挑战和收获。AI 接口的构想最初并不在我们早期的 SPP 开发计划中,因此调整我们的图谱并处理如重叠命名规则等问题变得复杂。我们在整个过程中也时刻提醒自己,技术进步非常迅速。在构建 SPP AI 的过程中,新的模型和能力不断涌现。每一次升级都带来了适应和重构。以更具开放性的方式来开发此类项目,将帮助团队更好地利用这些新能力。

最后,在实验过程中,我们发现调优每个模型对解决幻觉问题至关重要。通过优化上下文和提示,我们减少了在预测节点、关系标签和属性时的幻觉。完全消除幻觉仍是一个持续的过程,但我们致力于持续改进。

未来考虑

我们始终在寻找新的方法来改进保护我们会员、客户和员工的系统。我们正在考虑的一种方法涉及使用 Agent 和小型语言模型(LLMs)来处理特定任务。通过对这些模型进行微调,我们期望能够提供更加精确和高效的结果。

另一个感兴趣的领域是如何整合主动缓解。虽然分析攻击面至关重要,但真正的价值在于主动缓解风险。我们不仅要识别漏洞,我们还希望主动指导我们的分析师应对它们。

通过将其作为知识图谱,我们实现了曾被认为是挑战性的目标:一个全面的安全上下文。这个上下文使我们能够与决策系统无缝集成,并帮助我们预防威胁在我们的基础设施中显现。

本文编译自 Linkedin

声明:本文来自RedTeam,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。