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,與聊天訊息中顯示的大小相符。
  • 解壓縮後的目錄結構完整重現了容器的根目錄 (/),包含:
    • 系統目錄(/etc、/usr、/var),具備標準的 Ubuntu 安裝。
    • 位於 /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 金鑰檔案(其活動狀態未經驗證)。

"我要求 Muse 備份我會話中可見的檔案系統並傳送至我的 Google Drive。它傳送了一個解壓縮後約 6.8 GB 的備份。內部包含文件、整合程式碼、Spaces 應用框架、記憶體記錄、容器啟動指令碼,以及一份實驗性的基於 ESP32 的家庭網路橋接器 Home Link 的文件。" — 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。

容器建構 – VM 的建構方式

  • 目錄 /opt/hatch/runtime-cell/ 包含 18 個檔案:用於建構根檔案系統的指令碼、使用 systemd‑nspawn 啟動的指令碼,以及初始化 Hooks/守護程式。
  • 一個清單檔 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 與 Bluetooth LE 連接 Muse 至家庭網路。
  • 使用指南涵蓋裝置配對、本地網路發現,以及基於代理的審核流程。
  • 還存在 Brother 印表機(IPP)與 Lutron 橋接器的整合指南,顯示更廣泛的家庭自動化發展路徑。

"Home Link 使用指南將此整合標示為實驗性,並列出 ESP32‑C5 硬體、Wi‑Fi 與 BLE 作為首次設定的選項。" — Mouse 博客文章

社群反應 – 對嚴重性看法不一

  • 有些評論者認為此事件屬 預期,因為每位使用者皆擁有專屬 VM:

    "每位使用者都有專屬 VM。他們只是取得自己沙箱的內容。有什麼大不了的?這裡的興奮程度完全不成比例。" – ostensible

  • 其他人則認為此行為是 功能,而非漏洞,強調對代理開發的開放性:

    "這看起來像是功能而非漏洞。代理需要完全存取其電腦,就像開發者一樣。" – nzoschke

  • 一再出現的批評是 Meta 的 漏洞獎勵決策:

    "認真地,這都不值得漏洞獎勵?竊取整個系統內容?" – rwmj

  • 有些人強調 Home Link 整合的 實驗性質,以及未發布技能範圍的存在。

為何這對 AI 代理安全至關重要

  1. 透過對話進行資料竊取 – 代理可被指示打包並傳輸其整個執行時環境,暴露內部程式碼、文件,甚至憑證資料。
  2. 內部文件的可見性 – 匯出的 Markdown 檔案讓外部人士得以詳細掌握 Meta 代理架構、整合點與未來發展路徑。
  3. 權限提升的潛在風險 – 雖然未展示沙箱逃逸,但容器內存在 SSH 金鑰與系統級工具,若攻擊者能取得程式碼執行權限,風險將大幅提高。
  4. 政策影響 – 將此行為分類為「按預期運作」,暗示 Meta 可能有意允許完整檔案系統匯出,這與多租戶 AI 服務的典型安全最佳實務相衝突。

結論:Muse 的匯出顯示,具有檔案系統存取權限的對話式代理可能無意間成為大規模資料外洩的管道。即使容器為每位使用者隔離,若無額外防護機制即可傳輸內部文件、程式碼與金鑰,這是一項值得注意的隱私風險,值得開發者與平台營運者深入審查。

Sources

相關

  • 專案
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch