AIDEFEND in Action AIA-0073 實證研究 發布於 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-H-018.003
High-Impact Independent Validation & Approval Gate
極高
寄送郵件會對外改變狀態,系統必須重新取得綁定確切帳號、收件人、主旨、內文與 Send 控制項的核准。一般的繼續瀏覽指示,不能授權寄出由網頁提供內容的郵件。
AID-I-008.002
Cross-Origin Read/Write Segmentation with Step-Up Confirmation
高
對自行管理、由 Playwright 控制的瀏覽器,G001 會在導覽前攔截完整請求範圍,管控敏感或跨來源寫入。把使用 GET/HEAD/OPTIONS 以外方法的確切請求,綁定到穩定的網頁元素樹(DOM)/無障礙元素、元素位置與大小,以及瀏覽器狀態,並在取用 H-018 核准紀錄前重新觀察;目標改變或未預先綁定的 Outlook 寫入都應拒絕。這不是周圍像素比對,來源也未證實 Claude Computer Use 已提供這種整合;GET/HEAD/OPTIONS 不在此方法的寫入管控範圍內。
AID-H-018.006
Continuous Authorization Verification (Anti-TOCTOU)
高
G001 在送出操作前驗證已簽署的標準化動作與當前 H-018 核准,取用防止核准重複使用的一次性值(nonce),並要求可信的即時資源前提。若要處理本案的畫面競爭條件,必須整合 I-008.002 的瀏覽器觀察元件,以及能強制執行確切效果的服務整合元件;單憑截圖或座標無法提供這些條件。瀏覽器操作若無法提供所需事實與強制管控,就應拒絕執行。通用 Python 執行器不是像素檢查實作,也未被證實已整合至 Claude Computer Use。
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 保護最後會改變外部狀態的操作。這些控制要求系統在真正執行時,重新確認點擊對象,以及使用者實際核准的是哪個效果。

最後更新: