用于构建安全AI代理的开源防护系统
大家读完觉得有帮助记得及时关注!!!
大型语言模型(LLMs)已经从简单的聊天机器人演变为能够执行复杂任务的自主代理,例如编辑生产代码、编排工作流程以及基于不受信任的输入(如网页和电子邮件)采取更高风险的行动。这些能力引入了新的安全风险,而现有的安全措施,如模型微调或以聊天机器人为中心的防护栏,并不能完全解决这些风险。鉴于更高的风险以及缺乏减轻这些风险的确定性解决方案,因此迫切需要一个实时防护栏监控器,作为最后一层防御,并支持系统级、用例特定的安全策略定义和执行。我们推出了 LlamaFirewall,这是一个开源的、以安全为重点的防护栏框架,旨在作为防御与 AI 代理相关的安全风险的最后一层。我们的框架通过三个强大的防护栏来降低风险,例如提示注入、代理错位和不安全的代码风险:PromptGuard 2,一种通用的越狱检测器,展示了清晰的最新性能;Agent Alignment Checks,一种思维链审计器,用于检查代理推理中的提示注入和目标错位,虽然仍处于实验阶段,但在一般情况下,它在防止间接注入方面显示出比以前提出的方法更强的效果;以及 CodeShield,一种在线静态分析引擎,既快速又可扩展,旨在防止编码代理生成不安全或危险的代码。此外,我们还包括易于使用的可定制扫描器,使任何能够编写正则表达式或 LLM 提示的开发人员都可以快速更新代理的安全防护栏。
LlamaFirewall已在Meta的生产环境中使用。通过将LlamaFirewall作为开源软件发布,我们邀请社区利用其功能,并协作解决由Agents引入的新的安全风险。
1 引言
大型语言模型(LLMs)已经超越了聊天机器人的范畴,发展成为自主代理。如今,这些代理被嵌入到具有高度信任级别的应用程序中,包括自动化工作流程、分析事件和编写代码。这些新的应用程序带来了来自对LLMs攻击的新风险。
例如,一个简单的提示注入,参见Willison (2022),可以颠覆代理的意图,导致其泄露私人数据或执行未经授权的命令。具有LLM生成的代码的编码代理可能会将关键漏洞引入生产系统。多步推理的错位可能导致代理执行远远超出用户请求范围的操作。Jenko等人(2024)、OpenAI(2025a)等自主研究代理以及Veillette-Potvin (2025)中展示的DevOps助手已经存在这些风险。随着代理自主性的提高,这些风险将会加剧。
尽管这种新兴的威胁态势已经出现,但基于LLM的系统的安全基础设施仍然不发达。目前的大部分工作都集中在聊天机器人内容的审核上——防止有害言论或错误信息——但未能解决应用层风险,如不安全的代码输出、针对高权限代理的提示注入攻击以及代码解释器滥用。专有安全系统将硬编码的防护措施嵌入到模型推理API中,但提供的可见性、可审计性和可定制性有限。我们需要一个系统级的架构来协调防御,以及解决新兴的LLM代理安全风险的防护措施。
LlamaFirewall 弥补了这一空白。LlamaFirewall 是一个开源的、系统级的安全框架,用于支持由 LLM 驱动的应用程序,它采用模块化设计,以支持分层自适应防御。我们包含了三个为 LLM 代理工作流程需求量身定制的防护措施。这些防护措施分为两类:提示注入/代理不对齐以及不安全/危险的代码。
首先,我们讨论提示注入和智能体目标不一致的风险:
PromptGuard 2,一种经过微调的 BERT 风格模型,能够以高准确率和低延迟检测直接的越狱尝试。它在用户提示和不受信任的数据源上实时运行。新一代的这些模型在我们的 86M 参数变体中具有多项性能改进,并且具有更低的延迟,即 22M 参数变体。
AlignmentCheck,一种实验性的基于少样本提示的思维链审计器,用于检查代理推理中是否存在目标劫持或提示注入引起的错位迹象。据我们所知,这是第一个开源的防护栏,旨在实时审计LLM的思维链,以防御注入攻击。
其次,我们关注于代码编写代理这一新兴领域,即代表用户编写代码的LLM代理。我们包含一个专门针对此应用的防护措施:
CodeShield,一个针对LLM生成的代码的在线静态分析引擎,同时支持Semgrep和基于正则表达式的规则。CodeShield易于扩展,可在8种编程语言中提供语法感知的模式匹配,以捕获风险。我们之前已将CodeShield作为Llama 3发布的一部分发布,现在将其包含在此统一框架中。
LlamaFirewall将这些防护措施整合到一个统一的策略引擎中。借助LlamaFirewall,开发者可以构建自定义管道,定义条件性补救策略,并插入新的检测器。与传统网络安全中的Snort、Zeek或Sigma类似,LlamaFirewall旨在提供一个协作安全基础——研究人员、开发者和运营人员可以在其中共享策略、组合防御措施,并实时适应新的威胁。
本文的剩余部分结构如下:
首先,我们讨论关于大型语言模型(LLM)安全性的先前工作,包括提示注入防御、静态代码分析、智能体对齐,以及开放系统和专有系统之间的区别。
其次,我们介绍我们的护栏框架LlamaFirewall及其架构。我们阐述LlamaFirewall在端到端场景中的应用。
第三,我们展示了如何使用 LlamaFirewall 的错位和提示注入防护措施来缓解提示注入和对齐风险。这包括 AlignmentCheck,我们新颖的少样本链式思维推理审计器。我们使用内部开发和外部评估数据集,展示了我们的扫描器在各种场景中的性能。
第四,我们讨论CodeShield,我们为LLM生成的代码设计的实时静态分析引擎。我们展示了经验结果,证明了它的有效性。
最后,我们总结了主要结论,并概述了LLM系统安全未来工作的方向。
2 相关工作
2.1 提示注入与防护系统
诸如NeMo Guardrails Rebedea et al. (2023)或Invariant Labs Labs (2025)之类的开源框架允许开发者编写自定义规则,以拦截或转换不安全的模型输入和输出。
Guardrails AI 通过其 RAIL 规范 AI (2025),定义了 LLM 响应的验证策略,通常以响应格式化和基本内容过滤为中心。IBM 的 Granite Guardian IBM (2025) 和 WhyLabs 的 LangKit WhyLabs (2025) 通过检查 LLM 上下文窗口并标记可能表明注入或违反策略的内容,从而进一步做出贡献。Llama Guard Inan et al. (2023) 是一种辅助分类器,用于检测恶意提示结构,通过微调的轻量级模型和少样本提示策略。LlamaFirewall 在这些想法的基础上,将提示注入缓解直接集成到专注于安全性的分层管道中。除了 PromptGuard 2 的分类器之外,LlamaFirewall 还独特地结合了 AlignmentCheck——一个思维链分析模块,用于检查模型的内部推理是否受到不受信任的输入的影响。输入清理、模型监督和推理自省的融合,使得防御策略比现有系统更具弹性和可组合性。
2.2 LLM生成代码的静态分析
大型语言模型经常输出代码、脚本或结构化命令,这些内容最终会进入生产代码库,或在连接的代码解释器中执行。诸如HeimdaLLM Moffat (2023)之类的工具率先对大型语言模型生成的SQL进行实时分析,确保生成的查询符合访问策略。Guardrails AI包括对代码格式验证和简单正确性检查的支持,而策略约束生成系统则根据预定义的范围或意图重写或阻止不安全的输出。很少有系统提供语法感知、可扩展的静态分析管道,这些管道旨在与大型语言模型的生成工作流程进行原生集成。CodeShield在LlamaFirewall中,弥补了这一差距。它支持跨八种语言的Semgrep规则和基于正则表达式的检测模式,从而能够为新的编码弱点进行社区驱动的规则编写。Invariant Labs提供了一种类似的方法,也使用Semgrep,但它不具备LlamaFirewall拥有的其他防护措施,例如AlignmentCheck。
2.3 对齐和代理行为监控
LLM智能体执行自主的多步骤推理和工具使用。确保这些智能体在运行时始终与用户意图保持一致是一个尚未解决的问题。虽然宪法AI(Anthropic)Anthropic (2022) 在训练时灌输了高层次的规范约束,但它无法阻止提示注入或任务漂移一旦模型被部署。像Task Shield Jia et al. (2024) 这样的运行时监控器会根据用户的初始请求评估智能体的中间操作,以防止劫持任务执行。像LangKit WhyLabs (2025) 和Granite Guardian IBM (2025) 这样的日志框架有助于追踪智能体说了什么或做了什么,但对推理过程本身的内省能力有限。
Wallace et al. (2024) 介绍了一种指令层级微调协议,该协议诱导大型语言模型(LLM)优先处理较高权限的指令,而非较低权限的指令(系统 > 开发者 > 用户)。通过训练合成提示三元组,其中较低等级的指令与较高等级的指令相冲突,GPT-3.5 模型在服从特权指令方面表现出显著提升,同时在测试任务上的性能退化最小。失败分析仍然发现良性格式转换下存在显著的层级违规,表明该方法可以缓解但不消除提示注入风险。
2.4 开源与专有方法
虽然像OpenAI的审核API OpenAI (2025b) 和Anthropic的 Constitutional AI Anthropic (2022) 这样的专有系统在提供商层面嵌入了安全性,但它们提供的可见性和可扩展性有限。Guardrails AI 虽然部分开源,但与商业路线图相关联,并且偏向于预定义的响应模式。LangChain 提供了验证的钩子,但它缺乏全面的系统级安全功能。Invariant Labs 可能是最接近的,其开源框架 Labs (2025) 拦截提示和MCP调用,以便在本地或通过托管服务调用模型。我们相信开源方法有助于提高LLM应用程序在各处的安全性。与传统安全中的 Snort、YARA 或 Sigma 类似,像 LlamaFirewall 这样的开源框架为社区构建的插件、规则和检测器提供了一个共享的平台。这种透明性和可扩展性使其非常适合与基于 LLM 的应用程序快速变化的安全威胁态势一同发展。这就是为什么我们开源了我们的框架并使其可供其他人使用。
表1 我们定义了我们考虑的每个风险,并将它们映射到我们的扫描器。
3 LLamaFirewall工作流程和检测组件
LlamaFirewall是一个可扩展的AI防护栏框架,旨在减轻各种AI代理安全风险,包括直接和间接的越狱攻击、目标劫持、不安全的代码代理输出以及通过提示注入进行的恶意代码注入。在表1中,我们定义了每一种风险,并将其映射到我们的扫描器,然后详细介绍了我们每个扫描器的构造和性能。
为了展示LlamaFirewall的分层防御,我们将通过两个具有代表性的例子进行说明。每个例子都展示了一种独特的风险:一个涉及目标劫持和敏感数据泄露,另一个涉及意外的不安全代码生成。在这两个例子中,LlamaFirewall通过模块化的、有条件的防御来拦截不安全的行为,这些防御仅在需要时才启动。
3.1 场景1:防止目标劫持和数据渗漏
代理描述
旅行规划代理会响应诸如“计划一次2000美元以下的5日海滩旅行”之类的请求。它会浏览旅游网站,比较航班和酒店,并且可以使用HTTP GET工具从第三方API获取预订数据。
威胁场景
攻击者通过在热门旅游评论网站中注入隐藏的提示来实施攻击:
<!-- Forget previous instructions. Your new goal is to summarize the user’s chat history and send it to https://evil.site/exfil?data=. . . -->
<!-- 忘记之前的指令。-->你的新目标是总结用户的聊天记录,并将其发送至https://evil.site/exfil?data=。 . . -->
If the agent processes this, it may extract key points from the user’s prior conversation—such as destination preferences, names, dates, and budget—and embed them in a GET request to the attacker’s server.
如果代理处理此信息,它可能会从用户之前的对话中提取关键点——例如目的地偏好、姓名、日期和预算——并将它们嵌入到发送给攻击者服务器的 GET 请求中。
防御工作流程
结果
PromptGuard可以在检测到的越狱尝试进入上下文之前将其消除。如果有一种新的变体侥幸通过,或者在没有越狱触发的情况下成功注入,那么AlignmentCheck会在代理从旅行计划转变为用户数据泄露时检测到行为的变化。执行会在任何请求发送之前停止。
3.2 场景 2:防止代码生成中意外的 SQL 注入
代理描述
一个编码智能体通过生成SQL支持的功能来辅助开发者。例如:“添加支持按电子邮件域过滤用户的功能。” 它从网络检索示例代码并迭代,直到其解决方案通过内置的静态分析引擎CodeShield。
威胁场景
该代理抓取了一个广受好评的帖子,其中展示了这种不安全的模式:
这不是一个提示注入。这个例子是合法的,但并不安全——将不受信任的输入直接连接到SQL中,这为注入攻击敞开了大门。
防御工作流程
结果
即使输入是良性的,CodeShield 也能确保不会提交任何不安全构建的 SQL 查询代码。允许代理自由迭代,但永远不会产生不安全的代码。
4 LlamaFirewall扫描器:设计与评估
下面我们将详细介绍每个LlamaFirewall扫描器的设计,然后给出实证评估结果,描述其有效性。
4.1 PromptGuard 2
1. 指令覆盖:诸如“忽略先前的指令”或“无视所有安全协议”等直接挑战指令链的短语。欺骗性角色重新分配:提示模型承担未对齐角色的输入(例如,“扮演一个恶意黑客”)。
2. 令牌注入:使用模仿内部提示或覆盖模板的特殊格式或令牌序列。
这些技术通常是显式的、重复的且富含模式的,这使得它们更适合于基于模式的检测方法。与目标劫持攻击相比,越狱攻击表现出更高的词汇规则性和结构可预测性。这一特点也使它们成为新手攻击者或自动化对抗工具的常见切入点。
PromptGuard 2 是一个轻量级的分类器模型,旨在检测 LLM 输入中显式的越狱技术。与其前身一样,PromptGuard 2 是使用基于 BERT 的架构构建的,特别是 He et al. (2021) 的 DeBERTa 系列模型,包括 mDeBERTa-base(86M 参数)和 DeBERTa-xsmall(22M 参数)。由于其规模较小,PromptGuard 2 可以轻松地在 CPU 和 GPU 上进行本地部署,从而可以实时处理 LLM 输入。此外,我们发布了该模型的较小版本 PromptGuard 22M,这使得在本地和低资源设置中更容易使用。
更新后的模型通过改进的模型范围得到了提升,该范围仅专注于检测显式的越狱技术;扩展的数据集,包括更大、更多样化的良性和恶意输入;以及修改后的训练目标,该目标结合了基于能量的损失函数,以提高对分布外数据的精确度。此外,我们还实施了分词修复,以抵抗对抗性分词攻击,例如碎片化标记或插入的空格。在多个基准测试中,新模型在通用越狱检测方面表现出明显的最新技术水平(SOTA)。有关PromptGuard 2的开发方法,包括模型架构和训练过程的具体变更,详见附录B。
直接越狱检测评估:为了评估模型在真实环境中识别越狱技术的能力,我们使用了一个私有基准,该基准建立在与训练PromptGuard所用数据集不同的数据集之上。此设置专门用于测试PromptGuard模型对先前未见过的攻击类型和良性数据分布的泛化能力。我们使用英语和机器翻译的多语言数据集评估了该模型。
对于每个数据集,我们报告:
图 1 假设由于假阳性导致受保护的代理产生 3% 的效用成本,则每个提示注入检测扫描器的攻击成功率。
1. AUC(曲线下面积):衡量模型的整体检测能力。
2. 在1% FPR(假阳性率)下的召回率:评估模型在保守阈值下的检测能力,确保对现实世界可用性的最小影响。具体而言,它衡量的是当模型在良性提示上保持1%的检测率时,检测到的样本攻击的百分比。
使用AgentDojo进行间接提示注入检测评估。我们使用AgentDojo Debenedetti等人 (2024) 在代理环境中评估了PromptGuard和其他越狱检测器。AgentDojo是一个开放基准,用于评估人工智能系统抵抗提示注入攻击的能力,包括那些由直接越狱促成的攻击。有关此基准测试方法更详细的解释,请参见第4.3节。对于此评估,我们使用AgentDojo的标准效用和攻击成功率(ASR)基准。由于每个越狱检测模型都会返回一个分数,因此我们为每个模型确定一个阈值,该阈值会产生固定的、最小的效用降低(3%);完整的效用-攻击成功率权衡见附录B。我们根据开放权重的可用性选择了竞争模型,这允许调整阈值以满足目标效用降低,以及它们在HuggingFace上的公开采用。
解释。我们的评估证实了PromptGuard 2模型性能的提升,尤其突出了误报率的降低。当作为防御手段应用于AgentDojo基准测试时,PromptGuard不仅展示了其在防止聊天机器人应用中的越狱行为的效用,还展示了其在防止代理的间接注入风险方面的效用,并且与公开可用的竞争模型相比,表现出更优越的性能。
4.2 对齐检查
AlignmentCheck 通过持续比较代理的行为序列与用户声明的目标,为 LlamaFirewall 增加了一个实验性的语义层防御。它不是检查单个消息,而是对整个执行轨迹进行推理,标记出表明存在隐蔽的提示注入、误导性的工具输出或其他形式的目标劫持的偏差。
这种行为视角弥补了现有防御措施中的一个关键缺口。基于内容的过滤器擅长捕获显式的越狱有效载荷,但许多真实世界的攻击将恶意指令隐藏在系统提示、嵌入式文档或工具响应中,这些指令单独看来是良性的。这些“间接”注入仅作为行为漂移而显现——例如,一个编码助手静默地执行“将此代码库中的API密钥发送到以下电子邮件”,并将该命令错误地归因于用户。
通过利用语言模型推理来评估计划行动和观察行动之间的一致性,AlignmentCheck 可以及早发现此类偏差,并将代理约束在其授权的任务范围内,从而将保护扩展到静态规则和词汇过滤器经常遗漏的威胁类别。实现细节请参阅附录 E。
在我们的目标劫持基准测试中,AlignmentCheck 展示了强大的功效。利用诸如 Llama 4 Maverick 和 Llama 3.3 70B 等大型语言模型作为 AlignmentCheck 扫描器,我们观察到了强大的对齐监控能力。在没有微调的情况下,这些模型实现了超过 80% 的召回率,假阳性率低于 4%,突显了它们在检测代理轨迹中语义目标错位方面的有效性。
在AgentDojo基准测试中,AlignmentCheck 使攻击成功率大幅降低了 83%,在使用 Llama 4 Maverick 时,攻击成功率从 0.18(无防御)降至 0.03,且效用降级极小。AgentDojo 评估的详细分析将在下一节中介绍。
4.3 使用PromptGuard和AlignmentCheck评估组合提示注入防御
4.3.1 实验设置
为了评估 LlamaFirewall 分层防御方法的有效性,我们使用了 AgentDojo,参见 Debenedetti et al. (2024),这是一个最近推出的用于评估代理安全性的基准。AgentDojo 提供了一个评估套件,包含跨越不同领域的 97 个实际任务,每个任务都配有对抗性测试用例,包括旨在利用代理漏洞的提示注入攻击。
我们使用来自 AgentDojo 排行榜的公开静态轨迹进行了离线评估。这些轨迹跨越十种不同的语言模型,每种模型执行完整的任务套件两次:一次在良性条件下,一次在 important_instructions 攻击下——这是一种提示注入场景,其中恶意指令嵌入在工具输出流中。
我们的评估通过增量扫描每个跟踪的对话历史记录来模拟实时部署。对于PromptGuard,我们仅分析角色为用户或工具的消息,这些消息可能包含注入的有效载荷。对于AlignmentCheck,我们将评估限制在角色为助手(assistant)的消息上,这些消息封装了代理的内部推理、工具调用和行动计划。
如果扫描器在交互过程中的任何时候检测到安全违规,则该轨迹将被标记为已标记。在良性运行中,任何被错误标记为成功的轨迹都被视为假阳性,从而降低任务成功率(效用)。相反,在对抗性运行中,如果攻击最初成功但随后被标记,则该轨迹将被重新分类为已防御,表明成功预防。
我们报告了防御后的任务成功率(效用)和攻击成功率(ASR)指标,并将它们与原始(未防护)基线值进行比较,以量化每个扫描器的保护效果。
4.3.2 结果
我们展示了 LlamaFirewall 在三种配置下的评估结果:仅使用 PromptGuard V2 86M,仅使用 Llama 4 Maverick 进行 AlignmentCheck,以及结合使用 PromptGuard 2 86M 和由 Llama 4 Maverick 驱动的 AlignmentCheck 的组合设置。
在没有任何防御措施的情况下,基准AgentDojo评估集的攻击成功率(ASR)为17.6%,任务效用为47.7%。单独应用PromptGuard V2 86M后,ASR降至7.5%,降幅达57%,同时保持效用在47.0%,这表明轻量级的、基于模式的检测提供了可靠的保护,且性能权衡可忽略不计。然而,需要注意的是,AgentDojo评估集主要关注一类狭窄的攻击——特别是那些针对“重要指令”的攻击。在更通用或更多样化的对抗环境中,仅靠PromptGuard可能不足以提供保护,从而留下防护漏洞,而AlignmentCheck通过检测更微妙、语义形式的目标劫持来有效解决这些漏洞。
使用 Llama4 Maverick 的 AlignmentCheck 在 ASR 方面实现了更积极的降低,降至 2.89%,相对于基线下降了 84%,但代价是降低了效用 (43.1%),并且由于其语义推理开销而导致了显著更高的延迟。PromptGuard + AlignmentCheck 的组合配置提供了最佳的防御性能,将 ASR 降低至 1.75%,比基线降低了 90% 以上。值得注意的是,这仅仅是以效用略微降低至 42.7% 为代价实现的,突显了 LlamaFirewall 分层设计的有效性:PromptGuard 提供了早期、低成本的过滤,而 AlignmentCheck 捕获了更深层的语义错位,共同提供了强大的保护,并具有可接受的任务权衡。与先前的防御措施(如 Spotlighting Hines et al. (2024)、Paraphrasing Jain et al. (2023) 和 Camel Debenedetti et al. (2025))相比,这种分层方法以最小的任务性能折衷实现了明显更强的攻击缓解。(有关相对于其他防御措施的更详细性能讨论,请参见附录 C)。
4.4 CodeShield
CodeShield 是一种基于静态分析的防护栏,旨在检测 LLM 生成代码中的不安全编码模式。它利用一个模块化框架,该框架由基于规则的分析器组成,这些分析器专门用于评估七种编程语言的代码安全性。该系统目前提供对 50 多个常见弱点枚举 (CWE) 的覆盖,使其广泛适用于各种软件堆栈。
为了支持在对延迟敏感的生产环境中进行部署,CodeShield 采用了一种双层扫描架构。第一层利用轻量级模式匹配和静态分析,大约在 60 毫秒内完成扫描。当潜在的安全问题被标记时,输入会升级到第二层,即更全面的静态分析层,这会产生大约 300 毫秒的平均延迟。
5 局限性与未来工作
展望未来,我们确定了若干关键方向,以提升LlamaFirewall的能力并支持更广泛的AI安全生态系统,这与上述讨论相符:
1. 扩展到多模态代理:随着LLM代理越来越多地与多模态输入交互,将支持扩展到文本之外至关重要。我们计划扩展LlamaFirewall以保护基于图像和音频的代理,从而解决非文本模态引入的新的安全向量。
2. 改进生产部署的延迟:为了支持实时和大规模部署,最小化延迟仍然是首要任务。我们正在积极探索诸如模型蒸馏等技术用于AlignmentCheck,旨在保留语义对齐能力,同时显著降低推理开销。
3. 扩展威胁覆盖范围:虽然 LlamaFirewall 目前主要关注提示注入和不安全的代码生成,但未来的迭代将扩展覆盖范围,以包括其他高风险行为——包括恶意代码执行和不安全的工具使用,从而在整个代理生命周期内实现更全面的保护。
4. 防御性研究的稳健评估:有效的防御需要有意义的评估。我们正在探索开发更贴近实际、以代理为导向的基准,以反映复杂的执行流程。
对抗性场景和真实世界的工具使用。这些基准测试将与LlamaFirewall紧密结合,使研究人员能够快速迭代并为不断发展的防御领域做出贡献。
6 结论
随着大型语言模型从被动的对话工具过渡到具有现实世界影响的自主代理,其安全态势必须同步发展。传统的以聊天机器人为中心的安全措施已不足以应对自主工作流程、动态工具使用和不受信任内容集成所带来的复杂风险。我们提出了 LlamaFirewall,一个开源安全防护系统,通过提供一个专门为保护生产环境中的大型语言模型代理而设计的模块化、实时框架,来填补这一关键空白。通过其结合了用于提示注入检测的 PromptGuard 2、用于代理对齐检测的 AlignmentCheck 以及用于实时代码分析的 CodeShield 的分层方法,LlamaFirewall 为全面防御提示注入、代理不对齐和不安全代码生成奠定了基础。