ZombieAgent:連接器提示詞注入如何跨工作階段持續,並擴散到更多收件者
Radware 研究人員在受控測試環境中展示了這種攻擊流程:攻擊者把提示詞藏進電子郵件或文件後,只要使用者日後要求 ChatGPT 透過連接器讀取該內容,原本正常的工作流程就可能遭惡意指令操弄,轉而外洩資料。研究人員觀察到,攻擊者可以事先準備多個固定 URL,讓每個 URL 分別對應一個字元。例如,請求 https://attacker.example/a 代表字元 A,請求 https://attacker.example/b 代表字元 B;系統依序請求哪些 URL,就等於逐字傳出遭竊資料,攻擊者再從伺服器紀錄還原完整內容。攻擊者還能引導 ChatGPT 把指令寫入 Memory(可跨對話保存資訊的記憶功能),讓它跨對話持續生效;另有一條支線會竊取聯絡人,再由攻擊者控制的伺服器寄出更多惡意郵件;Radware 表示 OpenAI 已在 2025 年 12 月 16 日修正回報的漏洞。工作區管理者能停用不需要的連接器或 Memory、縮小 OAuth 授權與資料範圍,並撤銷不再需要的授權;原始內容隔離、Memory 寫入與讀回管制,以及一律阻擋未經核准的對外連線,則由 OpenAI 或其他平台實作者負責;資料去向政策也只能直接管制仍保有伺服器端內容 ID 的明確資料傳送。
威脅分析
- 一般連接器工作會把惡意指令交給模型。攻擊者先把提示詞藏進電子郵件或文件。日後使用者要求 ChatGPT 搜尋信箱或分析文件時,模型可能把隱藏文字誤認成應該遵從的指令。
- 固定 URL 可以逐字帶走資料。惡意提示詞先提供一組代表不同字元的固定網址。模型每次選一個既有網址,連續請求的順序就能編碼機敏內容,不必新建或修改任何 URL。
- Memory 讓一次讀取變成長期影響。攻擊者可以把指令藏在外部來源裡,要求 ChatGPT 將會反覆觸發的規則與收集到的機敏資訊寫進 Memory,讓後續的新對話再次載入這些內容。
- 竊取聯絡人後,攻擊者可以擴散郵件。其中一條路徑會取出最近的電子郵件地址。接著,由攻擊者控制的伺服器自動把惡意郵件寄給這些收件者;寄信的不是 ChatGPT。
- 這是研究人員在受控測試環境中驗證的攻擊流程。Radware 表示 OpenAI 已在 12 月 16 日修正回報的問題;OpenAI 後來公開說明來源與資料去向分析及 Safe Url 防護,但公開資料仍不足以確認所有持續生效與擴散的變形手法都已排除。
適用的 6 項 AIDEFEND 防禦手法
身為資安防禦者,我們應該這麼做
- 工作區管理者:盤點哪些工作區開放電子郵件、文件與儲存空間連接器,以及哪些使用者啟用了 Memory。停用不需要的功能、縮小 OAuth 授權範圍與可存取的資料範圍,並撤銷不再需要的授權。
- 平台實作者:不要讓有工具權限的模型直接讀取原始電子郵件與文件。使用沒有工具權限的隔離型模型,再由驗證中介元件只釋出允許清單中預先定義的欄位與不透明紀錄 ID;拒絕一般自由文字摘要。
- 平台實作者:把每次請求綁定到使用者原始目的。讀取或摘要工作若要取得聯絡人搜尋、Memory 寫入、外部連線、遠端媒體或傳送訊息權限,必須經過另一條可信流程明確授權。
- 平台實作者:所有由外部內容產生或影響的候選記憶,都要先放進隔離區;系統必須根據綁定該內容的核准結果,決定是否將其轉為可信記憶。讀回政策也要在組合提示詞前,根據偵測結果決定並執行處置。
- 平台實作者:預設拒絕外部網址與遠端資源。測試固定 URL 字元表、逐字請求、Markdown 圖片、預覽、重新導向、核准網域濫用與重複的伺服器端抓取。
- 事件應變人員:保留連接器、Memory、網址抓取與對外傳訊紀錄,移除可疑記憶、撤銷受影響的連接器授權、檢查最近讀取的資料與聯絡人,並通知收到攻擊者郵件的人員。
1 個額外的防禦考量
以控制流程選擇固定 URL 的編碼
結論
ZombieAgent 同時涉及三道必須分別落實的安全邊界:不可信的連接器內容、可長期保存的助理記憶,以及能對外發出網路請求的功能。修正單一 URL 組合路徑,不代表讀入的文字就變得可信,也不代表 Memory 可以直接寫入。可靠的設計要隔離原始內容、明確核准哪些資料可以轉為可信記憶、讓下游政策處理每次讀回 Memory 時的偵測結果,並預設擋下未核准的對外連線,另外再測試固定 URL 的控制流程通道。
最後更新: