英文原帖摘录与中文翻译
Today we launched muse.ai, a personal AI agent, and published a deep dive on how we built safety into its system.
今天我们推出了个人 AI Agent Muse,并发布了一篇深入说明,介绍如何把安全机制构建进它的系统。
原帖其余内容说明:个人 Agent 会随着时间积累大量用户上下文;Meta 因此把安全、安保和隐私作为 Muse 的核心设计目标,并链接到完整技术说明。
官方披露的系统结构
Muse 为每位用户提供一台独立云端虚拟机。官方把它描述为同一台机器上的两个隔离安全域,而不是一个拥有宿主机 root 权限的 LLM Agent。核心 Agent 框架、工作区、文件、二进制和工具运行在 systemd-nspawn 运行时容器中;容器内 root 映射为宿主机非特权用户。运行时拥有独立的 Debian 根文件系统和虚拟网络接口,并限制系统调用与内核能力,例如禁用 io_uring,移除 CAP_SYS_PTRACE 和 CAP_NET_ADMIN。
安全敏感服务位于运行时容器之外,并作为独立的 systemd 单元运行:
hatch-safety:用独立模型和分类器检查核心模型的请求与响应,包括提示注入检测;privsep:以最小权限执行内置连接器逻辑,使连接凭据不进入 Agent 的可见范围;hatch-authd:存储 OAuth 等凭据,并向运行时签发替代令牌;- Sentinel:连接器动作和所有网络出口的唯一权限裁决者;
- 持久应用状态保存在运行时与凭据存储之外的 PostgreSQL 数据库中。
这些组件通过带 SO_PEERCRED 和对等 ACL 的 Unix 域套接字通信。
Sentinel 与网络出口
Agent 只提出动作,Sentinel 决定允许、拒绝或请求用户确认。连接器请求会携带连接器、方法、动作类别、范围和用户请求上下文;用户批准由客户端直接发送给 Sentinel,而不是通过与 Agent 的对话完成。批准可限定为一次、当前会话、单项任务、指定时限或长期权限,并绑定具体连接器、目标和用途。
所有运行时网络流量先经过受 Linux 网络控制保护的转发代理。Sentinel 可在第 4 层和第 7 层检查主机名、解析后及最终 IP、端口、协议、HTTP 方法、路径和解码后的实际请求;官方还说明加入了 DNS 解析后的 SSRF 限制。需要凭据时,运行时代码只看到由 authd 签发的替代令牌;实际凭据在网络边界获得授权后才被替换进去。
系统还实现了官方称为“tainted egress”的内核级数据流跟踪:工具进程初始为 clean,读取用户数据后变为 tainted。实现使用 eBPF cgroup 程序做网络拦截和进程归属,并使用附着在 Linux Security Module hook 上的 eBPF 程序传播 taint。带 taint 或无法验证的进程失去自动放行资格,回到常规批准流程。
浏览器与连接器的最小权限
内置连接器的 CLI 只解析参数、打开调用方已有权访问的文件,再通过 Unix 套接字传递类型化参数和文件描述符;真正业务逻辑由 systemd 沙箱中的 worker 执行。每个 worker 由 cgroup 标识,并有明确的凭据白名单。邮件连接器会用确定性过滤器和分类模型过滤一次性验证码、密码重置链接和登录魔法链接。
浏览器由运行时之外的 CDP broker 管理。专用浏览器子 Agent 读取无障碍树快照而非原始 DOM,不能在页面上下文执行 JavaScript,也看不到由安全凭据存储注入的登录信息;用户接管或系统填充凭据时 Agent 会暂停。额外分类器检查与任务无关的个人数据外流、DOM/图片/下载文件中的提示注入,以及高风险表单提交。
防御纵深与已知边界
官方把提示注入防护分为多层:模型训练、对外部输入标记为不可信、独立的多分类器集合、涉及数据外流时的人类确认,以及运行时隔离、privsep、authd 和 Sentinel 的确定性边界。
Meta 明确表示 Muse 仍可能犯错,提示注入仍是行业中的开放问题。当前架构按用户隔离数据,并通过运营政策限制 Meta 人员访问,但并不能阻止 Meta 在支持、安全或运营服务所需时访问数据;官方称计划在之后推出可由外部审计、以密码学方式限制服务提供方访问的 Confidential VM。
以上内容均来自原始 X 帖及其链接的 Meta 官方技术说明,不代表独立安全审计结论。