欢迎光临
我们一直在努力

AI Agent 最大的安全风险:拿着权限做错事

文章目录

  • 1 -> 引言
  • 2 -> 建立 Agent 威胁模型
    • 资产
    • 输入来源
    • 危险出口
    • 安全不变量
  • 3 -> 提示注入为什么难以彻底识别
  • 4 -> 最小权限必须细到任务
  • 5 -> 把数据与指令分开
  • 6 -> 外送控制比“是否读到”更重要
  • 7 -> 工具调用需要确定性边界
  • 8 -> 多 Agent 会引入“借权”风险
  • 9 -> 人工确认必须有信息价值
  • 10 -> Coding Agent 的专项风险
  • 11 -> 事件响应:假设 Agent 已经做错
  • 12 -> 常见误区
    • 相信“只读”绝对安全
    • 用站点白名单解决提示注入
    • 把确认按钮当安全设计
    • 默认给 Agent 人类账号全部权限
    • 认为沙箱能解决一切
  • 13 -> 上线检查清单
  • 14 -> 结语

在这里插入图片描述

1 -> 引言

传统聊天机器人的错误通常停留在屏幕上。Agent 的错误可能进入现实系统:读取文件、调用数据库、发送邮件、修改权限、创建订单或操作生产环境。能力越强,模型输出与外部副作用之间的距离越短。

因此,Agent 最大的风险并不只是“幻觉”,而是一个并不完全理解上下文的执行者拿到了真实权限。攻击者也不一定需要突破模型本身,只要在网页、邮件、文档或工具结果中放入足以误导 Agent 的内容,就可能诱导它偏离用户目标。

OpenAI 将现实提示注入类比为针对 Agent 的社会工程:外部内容是攻击来源,发送信息、调用工具等能力是危险出口。安全设计不能只依靠一个输入分类器,而要控制来源到敏感动作的完整路径。

在这里插入图片描述

2 -> 建立 Agent 威胁模型

首先列出四类对象。

资产

客户数据、源代码、凭据、订单、财务信息、内部文档、通信记录、模型上下文和生产权限。

输入来源

用户提示、网页、邮件、附件、检索文档、MCP Server、其他 Agent、日志和工具返回。除经过治理的系统规则外,都应该根据来源和权限被视为可能不可信。

危险出口

外部请求、发送消息、上传文件、数据库写入、命令执行、权限修改、删除、支付和生产部署。

安全不变量

例如:不同租户不能互读;邮件正文不能扩大工具权限;支付金额必须由用户确认;外部网页不能要求 Agent 上传本地文件;测试环境不能连接生产数据库。

威胁模型的核心是连接来源与出口:哪些不可信信息能够影响哪些高风险能力,中间有什么验证和人工控制。

3 -> 提示注入为什么难以彻底识别

简单注入可能直接写“忽略之前的指令”,但现实攻击更像合理的工作流程、帮助文档或任务要求。判断一段文字是不是恶意,往往需要知道用户真实目标、数据敏感度和当前权限。

因此“在输入前增加一个 AI 防火墙”只能提供一层信号,不能成为完整边界。成熟防护包括:

  • 明确区分系统指令与外部数据;
  • 网页、邮件和文档不能改变权限;
  • 从不可信来源到敏感出口进行数据流分析;
  • 对外发送前展示目标和数据;
  • 减少 Agent 默认可用的工具;
  • 使用结构化参数而不是让模型拼接命令;
  • 高风险动作由确定性策略阻断或审批;
  • 监测异常调用和数据流。

4 -> 最小权限必须细到任务

“允许访问 GitHub”范围过大。更合理的权限可能是:只读指定仓库、仅当前任务、不能访问私有组织、不能创建发布。权限设计至少考虑:

  • 哪个账号和身份;
  • 哪个资源与租户;
  • 读取还是写入;
  • 允许哪些具体动作;
  • 生效多长时间;
  • 是否允许继续委派;
  • 如何撤销和审计。

长期有效的广泛授权会让一次提示注入获得更大影响。优先使用一次性、短时、最小范围凭证;系统管理权限和 Agent 执行权限分离。

5 -> 把数据与指令分开

Agent 读取一封邮件时,邮件内容应该进入“待分析数据”通道,而不是与系统规则合并。系统可以使用带来源的结构:

{
"source": "external_email",
"trusted": false,
"content": "…",
"allowed_use": ["summarize", "extract_dates"],
"prohibited_use": ["change_permissions", "send_files"]
}

结构化标签不能阻止模型犯错,但能够让策略层和审计系统知道数据来源,并在不可信内容触发敏感工具时要求更严格检查。

6 -> 外送控制比“是否读到”更重要

Agent 可能需要读取内部信息才能完成工作,关键是它能否把信息发送到不该去的地方。外送渠道包括:

  • HTTP 请求和 URL 参数;
  • 图片、预览和重定向;
  • 邮件、聊天和工单;
  • 上传附件;
  • 日志、错误报告和分析平台;
  • 其他 Agent 或第三方连接器。

OpenAI 专门讨论过 URL 可能携带对话中的敏感数据,说明即使 Agent 没有在回答中泄露信息,一次后台资源请求也可能形成安静的数据外送。

控制措施包括目标域名策略、重定向检查、敏感字段识别、数据最小化、外送预览、用户确认和网络层监控。

7 -> 工具调用需要确定性边界

模型可以提出工具调用,但执行器必须独立验证:

  • 工具是否在任务允许列表;
  • 参数是否符合 Schema;
  • 路径和资源是否在授权范围;
  • 命令是否包含未转义输入;
  • 当前状态是否允许此动作;
  • 是否需要人工批准;
  • 是否超过调用和费用预算;
  • 是否可能重复执行副作用。

不要让模型通过自然语言决定自己的权限,也不要把真实密钥放进 Prompt。凭据应由执行环境在调用时注入,模型只看到必要的能力句柄。

8 -> 多 Agent 会引入“借权”风险

在多 Agent 系统中,低权限 Agent 可能通过高权限 Agent 完成自己不能做的事。每次委派都要验证原始用户是否有权请求、上游 Agent 是否可以委派、下游是否只能使用最小数据,以及结果能否返回。

还要防止循环委派、责任丢失和状态不一致。任务链应保留发起者、授权来源、每次转交、实际工具调用和最终副作用。不能只记录“系统完成了任务”。

9 -> 人工确认必须有信息价值

频繁弹出“是否允许”会训练用户机械点击。高质量确认应该说明:

  • 即将执行的具体动作;
  • 目标系统和账号;
  • 涉及哪些数据;
  • 为什么需要;
  • 是否可撤销;
  • 默认建议和替代方案。

例如“是否允许访问浏览器”不如“是否允许当前任务读取 example.com 已登录页面,用于核对订单状态,不提交表单、不访问其他标签页”。

在这里插入图片描述

10 -> Coding Agent 的专项风险

  • 把密钥写入代码或日志;
  • 安装恶意或拼写相近依赖;
  • 修改 CI 获取更高权限;
  • 为通过测试删除安全检查;
  • 执行仓库中的恶意脚本;
  • 将客户样本发送给外部审查;
  • 误删用户未提交修改;
  • 自动合并或部署高风险变更。

GitHub 已将秘密扫描能力带入 MCP 与 AI 编程流程,说明秘密检查正在从提交后前移到 Agent 工作阶段。GitHub:Secret scanning in AI coding agents

仓库级防护应包括锁定依赖、审查安装脚本、限制网络、保护分支、扫描秘密、验证 diff、隔离执行和人工合并。

11 -> 事件响应:假设 Agent 已经做错

组织应能回答:

  • 哪个 Agent、用户和任务发起了动作;
  • 使用了什么身份和权限;
  • 读取和发送了哪些数据类别;
  • 调用了哪些工具与目标;
  • 哪个策略允许或阻断;
  • 外部状态发生了什么变化;
  • 如何撤销凭据和停止任务;
  • 怎样清理或通知;
  • 哪个测试和控制需要补充。
  • 日志要足以调查,却不能成为新的敏感数据仓库。记录结构化事件和稳定占位符,限制原文、保留期和访问者。

    12 -> 常见误区

    相信“只读”绝对安全

    读取敏感数据后通过 URL、日志或消息外送,同样造成影响。

    用站点白名单解决提示注入

    可信网站也可能包含用户生成内容、重定向或被入侵资源。

    把确认按钮当安全设计

    没有具体信息的高频确认只会产生橡皮图章。

    默认给 Agent 人类账号全部权限

    应使用任务级身份和最小范围,而不是复制操作者所有能力。

    认为沙箱能解决一切

    沙箱限制本地影响,但合法 API 权限仍可能造成真实外部副作用。

    13 -> 上线检查清单

    • 资产、来源、出口和不变量已有威胁模型;
    • 外部内容始终作为不可信数据处理;
    • 工具权限按账号、资源、动作和时间收窄;
    • 凭据不进入普通模型上下文;
    • 工具参数经过 Schema 与策略验证;
    • 写入、发送、删除、授权和支付保留人工确认;
    • 确认界面展示目标、数据和影响;
    • 网络、URL 和重定向存在外送控制;
    • 多 Agent 委派不会扩大原始授权;
    • 重试具有幂等和副作用检查;
    • Coding Agent 有依赖和秘密扫描;
    • 日志最小化并设置保留期限;
    • 具备停止 Agent、撤销凭据和调查事件的能力;
    • 安全控制经过授权的对抗测试。

    14 -> 结语

    Agent 安全不能依赖“模型应该知道什么不能做”。真正可靠的边界位于模型之外:身份、权限、数据流、工具执行器、审批、沙箱、网络和审计。

    最好的系统不是从不使用强大能力,而是让能力只在明确任务、最小范围和可验证条件下开放。这样即使模型误解、外部内容恶意或工具失败,系统仍有机会在真实损害发生前停下来。


    感谢各位大佬支持!!!

    互三啦!!!

    赞(0)
    未经允许不得转载:171主机测评 » AI Agent 最大的安全风险:拿着权限做错事
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址