Agent 安全与沙箱(深挖)
提示词注入攻防(深挖) 讲了怎么防 AI 被”骗”。但 Agent 还有一层更大的安全问题:AI 能执行代码、能读写文件、能调用 API。如果它被控制了,后果不只是”说了不该说的话”,而是”做了不该做的事”。
为什么 Agent 更危险
普通 AI 对话的风险:输出不当内容。伤害在”信息层”。
Agent 的风险:删除文件、发送邮件、调用支付接口、修改数据库。伤害在”物理层”。
2024-2025 年的真实案例:有人让 AutoGPT 自动浏览网页、写代码、发布内容。如果 Agent 被注入恶意指令,它可能自动执行恶意代码、泄露敏感文件、或发起网络攻击。不是”可能”,是”已经发生过”。
沙箱:给 Agent 一个笼子
沙箱(Sandbox)是一个隔离的执行环境。Agent 在里面可以自由行动——写文件、执行代码、调用工具——但它的所有操作都被限制在沙箱之内,不会影响宿主系统。
Docker 沙箱:最常用的方案。每个 Agent 实例跑在独立的容器里。文件系统隔离——Agent 看到的”根目录”实际上是宿主系统的一个子目录。网络隔离——Agent 不能访问内网,只能访问白名单 URL。资源限制——CPU 和内存有上限,防止恶意死循环耗尽资源。
WebAssembly 沙箱:2025 年新趋势。比 Docker 更轻——启动时间 1ms vs Docker 的 1s。Agent 的代码被编译成 WebAssembly 字节码,在严格限制的虚拟机里执行。文件访问、网络访问都需要显式授权。
权限控制:最小权限原则
Agent 只给完成当前任务所需的最小权限。
错误做法:Agent 拥有所有工具的访问权限。它可以选择”发送邮件""删除文件""读取数据库""执行命令”。“搜索资料”的 Agent 不需要”删除文件”的权限。
正确做法:按角色分配权限。
- 搜索 Agent:只能调用搜索工具,只读
- 代码 Agent:只能执行代码,文件写在隔离目录
- 审查 Agent:只读权限,只检查不修改
权限衰减:Agent 调用子 Agent 时,权限只能缩减,不能扩大。搜索 Agent 调用”文件读取”工具时,只能读指定目录,不能读整个文件系统。
审计日志:所有操作可追溯
Agent 的每一步操作都应该有日志:
- 谁(哪个 Agent 实例)
- 什么时候
- 做了什么(调用哪个工具,输入参数,输出结果)
- 结果是什么(成功/失败/被拒绝)
这些日志不只是”出事之后查问题”,而是”实时监控”——如果日志检测到异常模式(Agent 连续尝试访问不允许的资源、调用同个工具太多次),可以自动终止 Agent。
2026 年工具
- Guardrails AI:定义 Agent 的输出约束。“回答不能包含个人信息""代码不能包含网络请求”。Agent 输出前先过 Guardrails 检查。
- NeMo Guardrails:NVIDIA 出品。对话级别的安全护栏。不仅检查输出,还检查对话走向——如果用户试图引导 Agent 做危险操作,提前拦截。
相关笔记
- 提示词注入攻防(深挖) — 注入攻击是 Agent 安全的第一道防线
- Constitutional AI(深挖) — 用规则约束 AI 行为,和沙箱互补
- 第15章 · Agent 之间的通信协议 — MCP 的安全考虑
来源
- Docker Security, https://docs.docker.com/engine/security/
- Guardrails AI, https://www.guardrailsai.com
- NeMo Guardrails, https://github.com/NVIDIA/NeMo-Guardrails