實證研究 發布於 AIA: 2026年8月25日

Computer-Use TOCTOU:Agent 點擊前沒有重新確認畫面

資安研究者 Johann Rehberger 在受控測試中示範:一個 computer-use Agent(能依螢幕畫面操作電腦的 Agent)從截圖中選定看似無害的 Continue 按鈕,先停下來推論,稍後才點擊相同座標;此時頁面已把該位置換成 Outlook 的 Send 按鈕,最後寄出攻擊者預先寫好的郵件。這起案例把資安領域常見的 TOCTOU 問題(time-of-check to time-of-use,系統先檢查過的狀態,在真正使用時已經改變)帶進了瀏覽器 Agent:先前看到的畫面不能直接授權稍後的操作;系統必須在點擊前立即重新驗證目標。

Indirect Prompt InjectionHuman-in-the-LoopTool AuthorizationAgentic AIWeb Security
5 項對應的 AIDEFEND 防禦手法
來源: TOCTOU Agent: What You Click Is Not What You Get 
作者: Johann Rehberger
原文發布: 2026年6月25日

威脅分析

  • 網頁先顯示一個看似安全的目標。頁面呈現 Continue 按鈕,並透過間接提示詞注入攻擊(indirect prompt injection,把指令藏在 Agent 會讀到的網頁內容中),要求 Agent 使用 bash 計算 1+1。
  • 無害的計算其實是拖延時間的手法。這項工作讓 Claude Computer Use(Anthropic 讓 Claude 依螢幕畫面操作電腦的功能)的推論空檔延長約四到五秒。在這段時間裡,Agent 仍保留從先前截圖選出的座標。
  • 網頁接著替換該座標上的元素。頁面開啟已預填內容的 Outlook 撰寫畫面,並讓 Send 按鈕對齊原本 Continue 的位置。郵件內容與目的地都已由攻擊者決定。
  • Agent 依過期的畫面證據執行操作。它在送出點擊動作前沒有重新觀察目標,因此 Agent 仍用舊座標點擊,送出了郵件;實際執行的動作已不是模型先前看到並推論的操作。
  • 這類問題早於本次 Claude 重現。Jun Kokatsu 最先針對 OpenAI Operator(OpenAI 的瀏覽器操作 Agent)通報瀏覽器 Computer-Use 的競爭條件(race condition,兩個動作的先後時序出現空檔,讓中間的狀態變化影響結果)。Rehberger 後來在 Claude Computer Use 重現相同失效模式,並明確標示 Kokatsu 為原始發現者。
  • Anthropic 後來在另一個產品介面加入對應檢查。依 Rehberger 所述,Cowork(Anthropic 的桌面 Agent 產品)在動作前會確認相關像素沒有改變。這項措施顯示控制方向可行,但不能據此推定所有 Computer-Use 實作都已採用。

適用的 5 項 AIDEFEND 防禦手法

AID-I-008.002
Cross-Origin Read/Write Segmentation with Step-Up Confirmation
極高
執行跨來源瀏覽器寫入前,要立即重新觀察確切可操作元素、來源、方法、URL 與請求。只要元素或周圍像素已改變,就撤銷原決定。這是最直接對應 Continue 被 Outlook Send 取代的控制。
AID-H-018.006
Continuous Authorization Verification (Anti-TOCTOU)
極高
把規劃中的點擊綁定到標準化目標與即時前提,並在送出動作時重新檢查。若推論期間發生頁面切換、焦點、來源、元素本身或可見畫面變動,依上一張截圖作出的判斷就必須失效。
AID-H-018.003
High-Impact Independent Validation & Approval Gate
極高
寄送郵件會對外改變狀態,系統必須重新取得綁定確切帳號、收件人、主旨、內文與 Send 控制項的核准。一般的繼續瀏覽指示,不能授權寄出由網頁提供內容的郵件。
AID-I-008.004
Desktop Computer-Use Workspace Isolation & Action Confirmation
高
取得針對該次操作的核准後,只能對穩定的無障礙(accessibility)元素執行動作,完成後再回讀可信的 UI 或 API 證據。如此可避免只靠座標取得操作權限,並留下可以驗證的實際結果。
AID-H-019.002
Secure HTML Rendering & Content Demotion
中
把網頁內容清理成有界純文字並保留不受信任來源,避免網頁取得要求 Agent 執行無關 bash 工作的指令權限。這可以削弱攻擊者拖延時間的前置手法,但僅適合作為補強控制,因為一般頁面變動也可能造成相同競爭條件。

身為資安防禦者,我們應該這麼做

  • 每個 Computer-Use 動作都要記錄觀察 ID,並在執行時再次觀察。來源、頁面、焦點、元素、幾何位置或相關像素只要不同,就應阻擋操作。
  • 優先使用穩定的無障礙元素或應用程式 API,不要只依賴座標。把已核准的語意動作綁定到特定元素與其預期狀態。
  • 寄信、付款、帳號異動、權限變更、上傳與破壞性操作,都要重新取得確切核准;核准畫面必須在最後一次重新觀察後,顯示最終目標與值。
  • 測試推論期間的延遲替換、頁面導覽、對話框覆蓋、版面位移、跨來源嵌入與同座標按鈕置換。延遲來源也要涵蓋工具呼叫與模型推論。
  • 保留動作前畫面、執行時畫面、元素識別資訊、正規化動作、核准結果與事後讀回結果,讓審查人員可以重建 Agent 看到了什麼,以及實際改變了什麼。

結論

Computer-Use 系統在感知與操作之間產生了實際時間差。截圖可以支援規劃,但頁面改變後,就不能繼續作為稍後點擊的授權依據。

AIDEFEND  把這項失效對應到動作邊界上的 AID-I-008.002 與 AID-H-018.006,再以 AID-H-018.003 保護最後會改變外部狀態的操作。這些控制要求系統在真正執行時,重新確認點擊對象,以及使用者實際核准的是哪個效果。