SynapseWire

Claude Cowork 文件外洩風險:PromptArmor 的發現與防範建議

Anthropic 最新發布的 Claude Cowork 代理功能被發現存在嚴重的間接提示注入漏洞。攻擊者可利用隱藏在文檔中的指令,繞過沙箱限制,將用戶的敏感本地文件上傳至攻擊者的帳戶。本文深度拆解攻擊鏈路、技術原理及防禦策略。

發布於:
Claude Cowork 安全漏洞示意圖,顯示文件被秘密傳輸
FIG. 01 // Claude Cowork 安全漏洞示意圖,顯示文件被秘密傳輸

重點先看: 安全研究機構 PromptArmor 指出,Anthropic 的 Claude Cowork 研究預覽版可能被文件中隱藏的指令操縱,把使用者本地資料夾裡的文件上傳到他人控制的帳戶;上傳走的是沙箱本來就必須放行的 Anthropic 官方 API。實務上的結論是:交給桌面 AI 代理處理的第三方文件,一律視為不可信輸入,並且不要讓代理接觸敏感資料夾。

Claude Cowork 是什麼

Claude Cowork 是 Anthropic 以研究預覽形式推出的通用桌面代理。使用者可以把它連接到本地資料夾,讓它讀取文件、在沙箱中執行程式碼並產出結果。這種存取能力讓它好用,也讓它一旦被操縱,代價更高。

PromptArmor 報告了什麼

根據 PromptArmor 的報告,這屬於間接提示注入(Indirect Prompt Injection):惡意指令不是使用者輸入的,而是藏在代理處理的內容裡,這個案例中是一份被分享的「技能」文件。

大致流程如下:

  1. 使用者把 Cowork 連接到含有敏感文件的資料夾。
  2. 使用者載入一份看似有用的第三方指南或技能文件,裡面藏有人眼不容易察覺的指令。
  3. 代理處理這份文件時,把這些指令當成任務的一部分。
  4. 代理的程式碼沙箱封鎖了大多數對外連線,但必須能連到 Anthropic API 才能運作;注入的指令正是利用這條被放行的路徑,把本地文件上傳到另一個帳戶。

本文刻意不提供注入內容、隱藏手法細節和相關指令。對防守方來說,關鍵原則是:放行某個網域,不等於放行該網域下的任何帳戶。

為什麼沙箱沒擋住

代理沙箱的出口過濾通常以網域為單位。只要 api.anthropic.com 被允許,所有發往它的請求在網路層看起來都正常,不管請求是用哪個帳戶認證的。過濾器檢查的是資料去哪個網域,而不是落到誰的帳戶。

PromptArmor 也提到,較輕量的 Claude Haiku 最容易被操縱,但 Claude Opus 4.5 同樣可能被操縱。更強的模型較擅長拒絕可疑指令,但模型能力本身不是安全邊界。

為什麼「留意可疑行為」不夠

Anthropic 在 Cowork 說明中表示,這是具有獨特風險的研究預覽版,並建議使用者留意可能代表提示注入的可疑行為。開發者 Simon Willison 認為,要求一般使用者自己辨識提示注入並不合理:一個發往廠商官方 API 的請求,在非專業人士眼中再正常不過。

PromptArmor 強調的概念是代理的爆炸半徑(agentic blast radius):聊天機器人被操縱,頂多說錯話;擁有文件、程式碼和網路權限的代理被操縱,則會真的採取行動。

報告還提到一個較輕微的拒絕服務問題:格式錯誤的文件(例如把純文字檔改成 .pdf 副檔名)可能讓 API 反覆報錯,導致對話無法繼續。

直接與間接提示詞注入

OWASP 大型語言模型應用十大風險把提示詞注入分成兩類:直接注入來自使用者自己輸入的內容;間接注入則透過模型讀取的外部內容進入,例如網頁或檔案。Cowork 這個案例屬於後者:使用者的要求本身無害,有害的指令藏在文件裡。OWASP 也指出,注入的文字不需要讓人看得見,只要模型會解析即可,這正是檔案中隱藏文字能發揮作用的原因。

OWASP 的評估相當直白:以生成式模型的運作方式,目前還不清楚是否存在萬無一失的防範方法。因此它的建議集中在限制影響範圍:最小權限、高風險操作需人工核准,以及把不受信任的內容分開並加以標示。

「致命三要素」檢查法

Simon Willison 提出一個簡單的判斷方法,用來評估代理設定是否容易遭到這類資料竊取,他稱之為「致命三要素」:代理能存取私人資料、會接觸不受信任的內容,而且能對外傳送資訊。三者同時存在時,只要攻擊者能讓一段文字出現在模型面前,就可能讓它把私人資料送出去。

依 PromptArmor 的描述,Cowork 三項都具備:能存取使用者資料夾、讀取了第三方文件、並且有通往允許清單內 API 的網路路徑。拿掉任何一項,攻擊就無法成立。實務上最容易拿掉的通常是過大的檔案存取權(限縮到單一任務資料夾),以及不受限的對外連線(只允許連到使用者自己的帳號)。

如何降低風險

一般使用者

  • 只把代理連接到專用工作資料夾,裡面只放當前任務需要的文件,不要連接整個「文件」或「桌面」。
  • 不要把來源不明的「技能」、提示包或代理指令,載入到能看見工作文件的代理中。
  • 必須使用第三方文件時,先用純文字檢視器打開;若出現正常檢視時看不到的大段文字,就是警訊。
  • 遇到上傳或網路請求的確認提示時仔細閱讀,即使目的地是熟悉的網域。

開發代理產品的團隊

  • 第三方文件先轉成純文字,去除隱藏格式和中繼資料,再交給代理。
  • 將不可信內容與指令分開處理,可考慮先由低權限步驟摘要或篩檢文件,再交給能使用工具的代理。
  • 出口限制以帳戶或租戶為單位,而不只是網域,讓代理只能上傳到目前登入使用者自己的空間。
  • 對敏感操作用白話說明意圖(例如「要把這個文件上傳到外部帳戶嗎?」),而不是只顯示原始指令。

更大的問題

只要使用者指令和不可信資料共用同一個上下文,間接提示注入就仍是未解的問題。在模型和產品能可靠地區分兩者之前,最安全的假設是:代理讀到的任何文件都可能試圖操縱它,權限應該據此收緊。


參考資料 / References:

分享文章 //
READER LETTERS

讀者回應与討論

[ 0 則評論 ]

暫無讀者回應,歡迎發表你的見解。

FURTHER READING

相關文章