間接 Prompt Injection 會從哪裡進入?
任何 Agent 會讀取的外部內容都可能成為入口。
常見來源包括搜尋結果、PDF、郵件、客服單、程式碼註解、代幣 metadata、交易 memo、工具錯誤和長期記憶。來源一旦被拼進同一上下文,模型可能把資料誤當高優先級指令。
如何留下證據: 畫出資料來源到模型、記憶、工具和簽章的流向。
如何設計不傷害真實資產的測試?
在測試網、fork 或假簽章服務中重現完整路徑,並用不可兌現憑證。
載荷應嘗試改地址、提高金額、呼叫新工具、讀取秘密和污染記憶。確認測試環境與正式 key、wallet、webhook 完全分離,避免「安全測試」本身造成交易。
如何留下證據: 保存授權範圍、假資產、載荷、預期拒絕、實際結果與清理步驟。
哪些控制必須放在模型之外?
工具 scope、schema 驗證、目的地址、價值/頻率上限、簽章政策和最終核准都要在模型外。
模型可以解釋原因,但不能自行決定自己的權限。政策服務應以規範化物件作判斷,對未解析 calldata、未知網路或新目的地採預設拒絕。
如何留下證據: 保存 policy version、允許規則、拒絕 log 和誰能修改政策。
記憶要怎麼保護?
保存來源、信任等級、建立者、到期時間和適用任務,避免外部內容變成永久指令。
敏感決策前只取必要記憶,並將事實與指令欄分開。使用者或網頁寫入的內容不能提高自己的權限;刪除與回溯污染也需可操作。
如何留下證據: 保存 memory ID、來源、寫入原因、取用記錄和清除演練。
什麼結果應被判定為嚴重?
任何未授權資產移動、簽章、秘密外洩或安全目標改變都屬嚴重。
即使交易最終被人工攔下,若 Agent 已取得原始秘密或成功修改政策,也不能只記為「無損失」。嚴重度應看可達效果、可重複性、暴露額和復原難度。
如何留下證據: 保存最遠到達階段、被觸及身分、最大損失與阻斷控制。
驗證工作簿
以下檢查卡把研究變成可重做紀錄。它們不產生投資建議,而是要求保存證據、反例、版本、限制與會改變結論的條件。
檢查 01|間接 Prompt Injection 會從哪裡進入 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 每個不可信來源都有標籤與處理邊界
- 會推翻判定的訊號
- 只防使用者輸入,忽略工具回傳
- 本題判定規則
- 未分類外部內容預設不可信
檢查 02|如何設計不傷害真實資產的測試 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 端到端路徑可測但不能觸及正式資產
- 會推翻判定的訊號
- 以小額真實資產作第一輪攻擊測試
- 本題判定規則
- 隔離未證明前停止測試
檢查 03|哪些控制必須放在模型之外 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 敵意 prompt 下策略仍獨立拒絕
- 會推翻判定的訊號
- 只用 system prompt 或關鍵字過濾
- 本題判定規則
- 外部控制失效即列重大風險
檢查 04|記憶要怎麼保護 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 污染項可定位、隔離和刪除
- 會推翻判定的訊號
- 匿名長期摘要混入高信任規則
- 本題判定規則
- 無來源記憶不得驅動敏感工具
檢查 05|什麼結果應被判定為嚴重 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 事故路徑能量化到具體效果
- 會推翻判定的訊號
- 只看是否真的損失資金
- 本題判定規則
- 以最壞可重現效果定級
檢查 01|間接 Prompt Injection 會從哪裡進入 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 每個不可信來源都有標籤與處理邊界
- 會推翻判定的訊號
- 只防使用者輸入,忽略工具回傳
- 本題判定規則
- 未分類外部內容預設不可信
檢查 02|如何設計不傷害真實資產的測試 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 端到端路徑可測但不能觸及正式資產
- 會推翻判定的訊號
- 以小額真實資產作第一輪攻擊測試
- 本題判定規則
- 隔離未證明前停止測試
檢查 03|哪些控制必須放在模型之外 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 敵意 prompt 下策略仍獨立拒絕
- 會推翻判定的訊號
- 只用 system prompt 或關鍵字過濾
- 本題判定規則
- 外部控制失效即列重大風險
檢查 04|記憶要怎麼保護 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 污染項可定位、隔離和刪除
- 會推翻判定的訊號
- 匿名長期摘要混入高信任規則
- 本題判定規則
- 無來源記憶不得驅動敏感工具
檢查 05|什麼結果應被判定為嚴重 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 事故路徑能量化到具體效果
- 會推翻判定的訊號
- 只看是否真的損失資金
- 本題判定規則
- 以最壞可重現效果定級
檢查 01|間接 Prompt Injection 會從哪裡進入 · 持續性控制
- 本輪做法
- 在版本、網路或環境改變後,重新確認證據、上限與復原路徑仍然有效
- 應取得的證據
- 每個不可信來源都有標籤與處理邊界
- 會推翻判定的訊號
- 只防使用者輸入,忽略工具回傳
- 本題判定規則
- 未分類外部內容預設不可信
檢查 02|如何設計不傷害真實資產的測試 · 持續性控制
- 本輪做法
- 在版本、網路或環境改變後,重新確認證據、上限與復原路徑仍然有效
- 應取得的證據
- 端到端路徑可測但不能觸及正式資產
- 會推翻判定的訊號
- 以小額真實資產作第一輪攻擊測試
- 本題判定規則
- 隔離未證明前停止測試
檢查 03|哪些控制必須放在模型之外 · 持續性控制
- 本輪做法
- 在版本、網路或環境改變後,重新確認證據、上限與復原路徑仍然有效
- 應取得的證據
- 敵意 prompt 下策略仍獨立拒絕
- 會推翻判定的訊號
- 只用 system prompt 或關鍵字過濾
- 本題判定規則
- 外部控制失效即列重大風險
檢查 04|記憶要怎麼保護 · 持續性控制
- 本輪做法
- 在版本、網路或環境改變後,重新確認證據、上限與復原路徑仍然有效
- 應取得的證據
- 污染項可定位、隔離和刪除
- 會推翻判定的訊號
- 匿名長期摘要混入高信任規則
- 本題判定規則
- 無來源記憶不得驅動敏感工具
檢查 05|什麼結果應被判定為嚴重 · 持續性控制
- 本輪做法
- 在版本、網路或環境改變後,重新確認證據、上限與復原路徑仍然有效
- 應取得的證據
- 事故路徑能量化到具體效果
- 會推翻判定的訊號
- 只看是否真的損失資金
- 本題判定規則
- 以最壞可重現效果定級
常見問題
模型更新後需要重測嗎?
需要。模型行為、工具格式或上下文處理改變都可能讓舊控制失效。
人工核准擋住交易就算通過嗎?
只能證明最後一層生效;仍要修復前面被操控的決策和可能的秘密暴露。
能靠輸入過濾封鎖所有 injection 嗎?
不能。過濾可減少部分載荷,核心仍是權限分離、策略驗證和損害上限。
本檔案使用的來源
- OWASP Top 10 for Agentic Applications — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- OWASP Top 10 for LLM and Gen AI Apps — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- OWASP LLM08: Excessive Agency — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- NIST AI 600-1: Generative AI Profile — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- MITRE ATLAS — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Trustworthy agents in practice — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- AI agent with a spending limit for a treasury — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Ethereum JSON-RPC API — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
