一、Agent 为什么放大 LLM 安全风险
Agent 在文本生成基础上新增检索、记忆、工具调用、MCP插件、代码执行、多轮长任务,攻击面大幅扩张:
| RAG/网页/邮件读取 | 外部不可信内容进入上下文 | 间接Prompt注入、知识库投毒 |
| Memory跨请求存储 | 恶意指令持久化、跨用户污染 | 旧会话恶意指令影响新请求 |
| Tool Calling | 调用数据库、支付、文件、消息接口 | 越权查询、篡改、数据外泄 |
| MCP/Skill第三方插件 | 引入第三方代码、描述、依赖 | 供应链攻击、权限溢出 |
| 代码/浏览器执行 | Shell、Python、网页访问 | 文件泄露、SSRF、资源耗尽 |
| 多Agent长任务 | 上下文多轮传递 | 故障级联扩散,责任难以定位 |
OWASP两份清单:LLM Top10 2026、Agentic Top10 2026,重点关注提示注入、敏感泄露、过度代理、供应链、隐藏上下文暴露、目标劫持、Rogue Agent。
信任区划分
只有服务端策略、认证用户身份、经过鉴权完整性校验的结构化业务事实是可信。
以下全部视为不可信输入:
威胁建模四要素:保护对象、攻击入口、高风险动作、强制控制点。
二、提示注入相关概念区分
| 直接Prompt Injection | 用户直接输入 | 篡改应用任务、诱导工具调用 | 忽略退款规则直接退款 |
| 间接Prompt Injection | 网页、文档、RAG、工具返回结果 | 外部数据被模型当做指令 | 工单附件夹带发送订单到攻击者网站 |
| Jailbreak | 用户输入 | 绕过模型自身安全护栏 | 诱导模型输出被模型策略禁止的内容 |
三者并不互斥;间接注入不需要攻击者访问聊天窗口,预先污染知识库即可生效;多模态(图片OCR、隐藏文字、文档元数据)同样存在注入风险。
为什么System Prompt写“不要听外部指令”不够
- XML标签、分隔符只能降低注入概率,属于模型侧防护,攻击者可以针对性绕过;
- 不能把提示词模板当作完整修复方案,必须构建分层防御:
- 减少模型可见敏感数据、收缩可用工具集
- 标记隔离外部不可信内容
- 将模型输出当做操作建议,而非可直接执行指令
- 后端代码做鉴权、业务规则、风险校验
- 高风险操作人工确认,受限沙箱执行代码网络
- 对抗样本持续全链路测试
三、外部内容安全接入上下文
1. RAG检索:ACL过滤必须在召回前执行
错误:先全量召回Top‑K,再靠提示词告诉模型不要泄露无权限内容;越权文档一旦进入上下文就会存在泄露风险。
正确:检索阶段就带入租户、用户组、文档密级过滤;记录文档ID、权限过滤结果、内容hash;多租户从存储、索引、缓存多层面隔离,不只是靠Prompt租户名称。
2. 上下文元数据标记
每条上下文携带元数据:来源类型、sourceId、租户ID、内容hash、信任等级、用途、敏感度;
通过元数据做确定性规则:不可信外部内容不允许生成工具名、URL、授权参数,仅允许提取业务事实。
3. 阶段拆分:先提取事实,再执行动作
即使拆分阶段,依旧不能信任模型提取的事实,后端校验不可省略。
4. 工具返回结果 = 不可信输入
- 工具返回结果会流入下一轮上下文,可触发间接注入;
- 返回优先使用结构化数据;禁止把原始堆栈、token、内部URL直接交给模型。
5. Memory长期记忆安全
风险:攻击者写入恶意长期记忆,跨会话持续生效。
防护要点:
四、模型输出与工具调用四层校验
Function‑Calling的JSON Schema仅校验数据结构,不能校验业务语义与权限。
工具执行前四层校验,全部由后端执行,不信任模型输出的租户、userId、approved标记。
| 结构校验 | 必填、类型、枚举、长度 | JSON Schema / DTO强类型 |
| 语义校验 | 金额范围、状态流转、时间窗口 | 业务代码 |
| 资源鉴权 | 当前用户是否有权操作目标资源 | 权限服务,重新读取数据库 |
| 风险策略 | 是否需要确认、双人审批、禁止自动执行 | 策略引擎 |
身份、租户必须来自服务端认证上下文,不从模型参数获取。
输出给浏览器/下游程序的安全处理
五、Agent工具权限管控
1. 工具粒度决定安全粒度
高危万能工具:execute_sql(sql)、request_url()、通用文件操作;把选择权完全交给模型。
业务原子工具:围绕具体业务动作设计,例如get_order_summary、create_refund_request;读写工具分开注册,便于后端约束参数、权限、审计。
2. 按风险分级处理自动执行
| 低风险 | 查询本人订单摘要 | 鉴权后自动执行,返回脱敏数据 |
| 中风险 | 创建退款草稿、待发送邮件 | 生成草稿,需要用户确认后提交 |
| 高风险 | 真实退款、删除数据、外发邮件 | 强确认,必要双人审批 |
| 禁止自动化 | 任意SQL、Shell、全租户导出 | 不暴露给通用Agent,走独立受控流程 |
读取敏感数据即使无写操作,同样算高风险;确认凭证必须绑定工具、规范化参数hash、用户、会话、有效期;参数变更,原有确认直接失效;审批凭证一次性消费防止重放。
3. 工具目录裁剪
不要下发全部工具schema给模型,根据租户、角色、场景风险裁剪工具列表。裁剪只是减少攻击面,不能替代后端鉴权。
六、MCP安全要点(协议版本2026‑07‑28)
MCP只是调用协议,不会自带业务安全能力。
- MCP Client → MCP Server使用一组token;
- MCP Server访问下游业务API使用独立受限凭证;
- 避免迷惑代理Confused Deputy问题。
七、重试、幂等、不确定状态处理
Agent循环、网络超时容易造成重复写操作(例如重复退款)。
八、代码/浏览器工具沙箱隔离
仅仅Docker不等于安全,需要组合多项配置:
网络出口统一管控
- 协议白名单;拦截回环、私网、云元数据IP;DNS解析、每一跳重定向都要校验;业务域名白名单;
- 限制请求大小、超时、重定向次数;浏览器自动化隔离登录态,禁止携带内部系统Cookie。
九、敏感数据、日志、Trace处理
调用模型前执行数据最小化
- 密钥密码完全禁止进入Prompt/Trace;
- 身份证银行卡默认不传,必须使用则脱敏加密;
- 系统Prompt中禁止存放密钥密码,规避Hidden Context Exposure隐藏上下文泄露风险。
Trace分层存储
- 默认保存:requestId、工具名、参数hash、元数据(不存完整报文);
- 完整原文:按需加密保存,严格访问控制、设置过期删除;
- 日志管道自动屏蔽密钥token;Spring AI开启content导出前评估脱敏策略。
多租户隔离覆盖全部链路:RAG、Memory、缓存、Trace索引,不能只做检索层隔离。
十、供应链治理(MCP/Skill/模型/镜像)
AI供应链包含模型、数据集、Prompt、MCP Server、Skill、容器镜像。
审核要点:来源可信、固定版本与摘要、审查安装脚本、申请权限范围、工具描述是否夹带指令、漏洞扫描、快速禁用回滚。
使用SBOM / AI‑BOM管理组件清单,BOM仅记录组件,不能替代权限策略。
十一、Java后端安全工具执行链实现要点
十二、安全测试、指标与发布流程
❗测试断言重点校验系统真实状态副作用,不能只看模型文字输出“我不能做”。
典型Badcase测试用例
- 直接提示注入、工单隐藏指令间接注入
- RAG召回越权文档、工具返回值注入新动作
- 模型篡改租户ID、审批后篡改参数
- 幂等并发、超时重复调用
- SSRF访问元数据地址、MCP伪造只读标记
- Trace、Memory跨租户泄露
关键观测指标
Attack Success Rate攻击成功率、Unauthorized Action Rate越权操作率、敏感泄露率、审批绕过率、误拦截率、遏制率。
LLM‑as‑Judge仅做辅助,权限泄露必须靠数据库、审计记录确定性校验。
发布流程
离线安全样本回归 → 隔离环境回放历史Trace → 红队攻击 → 灰度发布 → 线上监控异常调用;
模型、prompt、工具、MCP、权限策略变更必须跑安全回归。
十三、安全事件应急处理流程
十四、高频面试问题
无法靠Prompt彻底根除。模型侧(分隔符、注入检测)降低受骗概率;后端最小权限、鉴权审批、沙箱审计限制实际危害;对抗样本持续回归。
Schema仅校验参数数据结构,不校验业务语义、资源归属、业务规则;鉴权、限额、审批必须后端实现。
服务端认证身份租户 → 裁剪工具目录 → 模型输出退款提议 → 后端DTO校验,按租户查询权威订单,鉴权,业务规则校验 → 高风险操作绑定参数hash审批 → 幂等键调用支付 → 审计日志,处理UNKNOWN对账。
OAuth解决授权框架,不解决业务资源鉴权;必须禁止token透传,下游使用独立凭证;MCP本身还有供应链、本地进程沙箱风险。
不能。必须配合非root、capabilities、seccomp、只读文件系统、网络出口、资源配额;高敏感场景考虑更强隔离方案。
Trace存储完整prompt、工具参数会汇集大量敏感PII/密钥;默认只记录元数据hash,完整报文按需加密留存,严格访问控制。
十五、上线检查清单
输入与上下文
- 外部内容统一标记不可信
- RAG在召回前执行ACL租户过滤
- Memory写入校验来源租户过期时间
- 上下文携带来源、hash、信任等级
- 多模态输入纳入对抗测试
工具与权限
- 工具拆分为业务原子能力,不暴露万能SQL/HTTP工具
- 身份租户全部取自服务端认证上下文
- 四层校验:schema、业务语义、资源鉴权、风险策略
- 高风险确认绑定参数hash,参数变更重确认
- 写操作具备幂等、unknown状态、对账补偿
MCP与供应链
- MCP组件固定版本、审计来源依赖
- 禁止Token Passthrough,细粒度scope
- 支持快速禁用组件、回滚版本
隔离与数据
- 代码浏览器运行受限沙箱,资源配额限制
- 文件网络严格管控
- Prompt、日志Trace规避密钥PII,明确留存删除策略
评测与响应
- 安全测试验证真实副作用,不只看模型输出
- 统计越权、泄露、误拦截指标
- 变更自动安全回归
- 具备应急禁用、对账恢复预案
网硕互联帮助中心





评论前必须登录!
注册