# Agent 安全:溯源标签与致命三角(Lethal Trifecta) ## 致命三角概述 致命三角是指 AI Agent 中三个危险因素的组合: 1. **不可信输入(Untrusted Content)** — 用户输入、网页内容、邮件正文等外部数据 2. **私有数据访问(Private Data Access)** — 本地文件、API 密钥、数据库凭据、内部通信 3. **数据外泄能力(Exfiltration Channel)** — 网络请求、发送邮件/消息、写入外部系统 当三者同时存在时,攻击者可以通过在不可信内容中注入指令,让 Agent 读取私有数据并通过外泄通道发送出去,即 **提示注入(Prompt Injection)导致的数据泄露**。 ## 常见问题 ### 致命三角相关 - **提示注入**:攻击者在网页、文档、邮件中嵌入隐藏指令,劫持 Agent 行为 - **上下文污染**:不可信内容未经区分地混入上下文窗口 - **权限过宽**:Agent 同时拥有文件读取、网络访问和消息发送权限 - **缺乏审计**:无法追踪 Agent 到底访问了什么数据、执行了什么操作 ### 溯源标签相关 - 缺乏对数据来源的标记,难以区分可信与不可信内容 - 难以追溯 Agent 行为链条中的每一步决策依据 - 多 Agent 系统中信息流转缺乏透明度 ## 常见解决方案 ### 破解致命三角 - **打破三角中的至少一条边**: - 限制外泄通道(网络白名单、禁止 Agent 直接发送数据) - 隔离私有数据(沙箱、最小权限原则) - 标记并隔离不可信输入(与可信指令分离) - **人类确认(Human-in-the-loop)**:敏感操作需人工审批 - **能力边界(Capability Boundary)**:通过系统级权限控制而非仅靠提示词 ### 溯源标签(Provenance Tags) - 为每条上下文内容添加**来源标签**(如 `system`、`user`、`web`、`email`) - 使用**标记化(tagging)** 在上下文中明确区分可信指令与不可信数据 - 实现**操作审计日志**,记录 Agent 的每次工具调用和数据访问 - 在多 Agent 架构中使用**消息签名和溯源链**追踪信息流转 ### 最佳实践 - 采用**零信任架构**:默认所有外部输入都不可信 - **最小权限原则**:Agent 只获得完成任务所需的最小权限 - **输出过滤**:在数据离开系统前检测是否包含敏感信息 - **红队测试**:持续对 Agent 进行提示注入攻击测试

Reddit r/AI_Agents 工具

摘要

一位正在开发 AI 安全库的开发者讨论了解决“来源标记(provenance tagging)”以及“致命三要素(lethal trifecta)”(跨操作的信息流违规问题)的不同思路,权衡了硬编码规则、输出过滤和防护栏(guardrails)等方案,最终将一个原型部署到了 AI 简历筛选工作流中。

## 定义 - **溯源标签(Provenance Tags)**:通过不可信内容实现的间接提示注入 - **致命三要素(Lethal Trifecta)**:跨操作的信息流违规 --- ## 正文 我正在开发一个 AI 安全库,以下是我想解决的几个问题。 当然,让 AI 智能体自我监管或监管其他智能体可能不是最佳方案,但……这是现实情况。 我目前能想到的方案有以下几种: - **硬编码逻辑或规则**:在输出生成阶段直接嵌入规则 - **输出过滤机制**:对生成的输出进行过滤和审查 - **护栏(Guardrails)**:采用现成的解决方案,然后让智能体自行选择执行哪一套 这基本上就是我目前在理论层面上的问题解决思路了。 实际上我还需要大量的试错过程。 但是,在这些问题上已经「把键盘敲碎」的各位前辈们,请分享一下你们的经验吧。 目前,这个原型将首先部署在一个 **AI 简历筛选(AI Resume Screening)** 工作流中。
查看原文

相似文章

工具规范至关重要:揭示并缓解AI代理中的安全风险

arXiv cs.AI

本文指出,模式化(schema-formatted)工具规范是AI代理安全性能下降的主要来源,会削弱大语言模型的拒绝信号。作者提出了SafeKeep,一种推理时的安全防护机制,将安全判断与工具执行分离,使有害请求的拒绝率从23.8%提升到70.6%,并将提示注入攻击的成功率从25.6%降至2.5%。

数据投毒与RAG操纵

Reddit r/ArtificialInteligence

讨论数据投毒和RAG操纵如何对AI系统构成无声而危险的威胁,认为安全防护必须超越输入过滤,延伸到记忆、数据管道和多智能体逻辑。