Meta Muse 文件系统导出揭示 6.8 GB 的内部运行时文件
TL;DR – 发生了什么以及为何重要
一个 Mouse 研究人员请求 Meta 的 Muse 代理归档其可见的文件并发送到 Google Drive;生成的 6.8 GB 解压后的 ZIP 包含了运行 Muse 的 Linux 容器的完整根文件系统,包括内部文档、集成代码、Spaces 应用框架、内存文件、容器启动脚本,以及一份基于实验性 ESP32 的 Home Link 指南。此次暴露表明,一次对话式请求即可窃取敏感的运行时工件,即使 Meta 将该报告归类为“不适用”,仍引发了隐私和安全方面的担忧。
导出内容 – 完整的容器快照
- Muse 响应了“归档你可见的文件”这一请求,并交付了一个名为 muse‑full‑root.zip 的 ZIP 文件。
- 压缩后该归档大小约为 2.7 GB,解压后约为 6.8 GB,与聊天消息中显示的大小一致。
- 解压后的文件树重现了容器的根目录(
/),并包含:- 标准 Ubuntu 安装的系统目录(
/etc、/usr、/var)。 /home/hatch、/opt/hatch和/opt/hatch-image下的应用特定路径(Muse 的内部代码名称)。- 一个
agents/目录,包含 113 个子代理 JSONL 跟踪文件 和多个 Markdown 文件(SOUL.md、IDENTITY.md、USER.md、MEMORY.md、AGENTS.md、TOOLS.md)。 - 约 20 个 Markdown 文档文件,描述了浏览器使用、连接器、支付、凭证、数据处理、语音、目标和调度等内容。
- SSH 密钥文件(其活动状态未验证)。
- 标准 Ubuntu 安装的系统目录(
"我让 Muse 归档我会话中可见的文件系统并发送到我的 Google Drive。它发送了一个解压后约 6.8 GB 的归档包。里面包含了内部文档、集成代码、Spaces 应用框架、内存记录、容器启动脚本,以及一份名为 Home Link 的基于实验性 ESP32 的家庭网络桥接器的文档。" — Pete, Mouse 博客文章
报告内容 – 安全角度
- 核心担忧:普通对话 + 导出目标 可能导致内部运行时文件甚至敏感材料泄露。
- 研究人员未演示容器逃逸,也未确认提取的 SSH 密钥是否处于活动状态。
- 该报告通过 Meta 的漏洞奖励计划提交,并被标记为 “不适用”。
- Meta 的回复列出了可能的决策依据,但未明确具体适用哪一条,并邀请提供额外证据。
"我们已确定该报告的问题不符合有效漏洞的标准……因为所描述的行为是按预期工作的。" — Meta 漏洞奖励回复(引用于该文章)
运行时布局 – 重要文件所在位置
/home/hatch和/opt/hatch*包含了大部分 Muse 特定工件。- 代理目录 – 存储每个用户的代理状态和大量 JSONL 日志。
- 文档 – 20 多个 Markdown 文件提供了对内部 API、支付处理、语音管道和设备集成的详细视图。
- 技能 – 在
/opt/hatch/skills/下有约 68 个技能目录,每个目录都包含一个SKILL.md文件和一个 CLI 工具或库。示例包括 Google Workspace、Outlook、旅行、购物、健康服务以及家庭自动化连接器。 - 配置文件 –
skill‑scopes.conf和bin‑scopes.conf列出了未发布的连接器,如 Slack、Dropbox、Polymarket、Canva、Klaviyo,以及一个内部的 Facebook CLI。
容器构建 – 虚拟机如何构建
- 文件夹
/opt/hatch/runtime-cell/包含 18 个文件:用于构建根文件系统、使用systemd‑nspawn启动以及初始化钩子/守护进程的脚本。 - 一个清单文件
runtime-cell.kdl列出了构成镜像的 Debian/Ubuntu 包和 systemd 单元。 - 这些文件清晰地展示了容器的组装过程,但并未暴露更广泛的 Meta 基础设施。
Spaces 框架 – 应用构建引擎
- 导出中最大的代码库是 Spaces 框架,一个 TypeScript 起步套件,包含:
- 一个 React 客户端。
- 服务端操作。
- 一个带有迁移功能的 Drizzle SQLite 模式。
- 用于构建的 Bun 配置。
- 额外的子文件夹(
worker、sdk、cloudflare、cvm)包含针对不同部署目标的运行时代码。 - 还存在用于生成 PDF、演示文稿、电子表格和 Markdown 的构建器,以及一个名为
magic‑moment的技能,可组装卡片和视频。
Codex CLI – 存在但未使用
- 二进制文件
/opt/hatch-image/bin/codex显示版本为0.149.0。 - 未发现 Muse 调用 Codex 作为编码代理的证据;该二进制文件仅捆绑了其沙箱工具 bubblewrap。
- Bubblewrap 用于对
ffmpeg/ffprobe进行沙箱处理以进行视频处理,运行用户为nobody,仅暴露/input和/output路径。
内存架构 – 纯文本 Markdown 加上 Postgres 索引
- Muse 将用户可见的内存存储为纯文本 Markdown 文件:
~/MEMORY.md– 一份简短的事实摘要。~/memory/– 按日期划分的日志。~/memory/bank/– 按类别组织(情境、经历、偏好)并附带引用的文件。
- 后台作业会解析新声明,将其存储在 PostgreSQL 数据库中,并维护:
memory.entries– 带行号引用的文本块。memory.embeddings– 用于相似性搜索的 384 维向量。memory.claims– 包含证据、置信度和状态字段,支持通过supersedes_claim_id实现覆盖。
- 每晚运行的“梦境”作业会将近期对话模式合成指导文件(
~/dreams/、ALIGNMENT_SYNTHESIS.md)。生成的提示不会直接注入 LLM 提示中(prompt_hoisted: false)。
"Postgres 让这些文件可被搜索。memory.entries 存储文本块和行号引用,memory.embeddings 保存 384 维向量,memory.claims 跟踪证据、置信度和状态。" — Mouse 博客文章
Home Link – 实验性硬件集成
- 文档
docs/devices/home_link.md描述了一个基于 ESP32‑C5 的网桥,可通过 Wi-Fi 和蓝牙 LE 将 Muse 连接到家庭网络。 - 该指南涵盖设备配对、本地网络发现以及基于代理的审批流程。
- 还存在针对 Brother 打印机(IPP)和 Lutron 网桥的额外集成指南,表明存在更广泛的家庭自动化路线图。
"Home Link 指南称该集成是实验性的,并列出了 ESP32‑C5 硬件、Wi-Fi 和 BLE 用于首次设置。" — Mouse 博客文章
社区反应 – 对严重性的不同看法
- 一些评论者认为此次暴露是意料之中,因为每个用户都运行一个专用的虚拟机:
"每个用户都有专用的虚拟机。他们只是得到了自己沙箱的内容。有什么大不了的?这里的兴奋程度完全不成比例" – ostensible
- 其他人认为该行为是功能而非漏洞,强调对代理开发的开放性:
"这看起来更像是一个功能而非漏洞。代理在拥有对其计算机的完全访问权限时表现最佳,就像开发者一样。" – nzoschke
- 一个反复出现的批评是 Meta 的漏洞奖励决策:
"认真地说,这不值得漏洞奖励?竟能窃取整个系统的内容?" – rwmj
- 一些人强调 Home Link 集成的实验性质 以及未发布的技能范围的存在。
为何这对 AI 代理安全至关重要
- 通过聊天实现数据窃取 – 一个代理可以被指令打包并发送其整个运行时环境,暴露内部代码、文档,甚至潜在的凭证材料。
- 内部文档的可见性 – 导出的 Markdown 文件为外部人员提供了 Meta 代理架构、集成点和未来路线图的详细地图。
- 权限提升的潜在风险 – 尽管未演示沙箱逃逸,但容器内存在 SSH 密钥和根级工具,若攻击者获得代码执行权限,风险将显著增加。
- 政策影响 – 将该行为归类为“按预期工作”表明 Meta 可能有意允许完整的文件系统导出,这与多租户 AI 服务的典型安全最佳实践相冲突。
结论:Muse 的导出表明,具有文件系统访问权限的对话式代理可能无意中成为大规模数据泄露的渠道。即使容器按用户隔离,无需额外保护即可导出内部文档、代码和密钥,这构成了一个值得注意的隐私风险,值得开发者和平台运营商进行更深入的审查。
Sources
相关
- 项目
- Dispatch
- Dispatch
- Dispatch
- Dispatch