把錢包交給代理代表什麼?
不是一個開關,而是一組讀取、建議、簽署、廣播和管理權限。
把每個身分列成矩陣:能讀哪些資料、建立哪些交易、由誰核准、可用哪個簽章者,以及能否修改白名單或限額。真正危險的通常是被忽略的 owner、module、session key 或既有 allowance。
如何留下證據: 保存地址、鏈、角色、資產範圍、合約方法與到期時間。
為什麼直接交付私鑰不是合理基線?
因為拿到私鑰的程序通常能繞過產品層所有提示與核准。
Prompt 規則不是密碼學控制;若 Agent 程序可讀 seed 或原始 key,遭入侵時可在工具外簽署任意交易,也可能把秘密寫入 log。較安全的基線是不可匯出的簽章服務,只接受通過外部策略的有限請求。
如何留下證據: 記錄 key 儲存位置、可讀程序、簽章 API 與拒絕條件。
最大可能損失要如何計算?
對每條可同時運作的路徑取餘額、allowance、單筆與期間上限的有效限制,再納入可重複次數。
單一路徑可用 min(可觸及餘額、allowance、期間限額、單筆限額×未介入次數) 作起點;零或未設定不能當作零風險。再加總可並行身分,加入 NFT、抵押品、bridge 權限和可升級模組。
如何留下證據: 為每個身分保存輸入值、單位、來源和未知值處理方式。
人工核准應放在哪一層?
應在最終交易物件已確定、簽章尚未發生的位置。
核准者要看到鏈、資產、數量、目的地址、合約方法、滑點或 deadline,而不是只看到自然語言摘要。低風險例行動作可由策略自動通過,高價值或新目的地址則升級為獨立通道核准。
如何留下證據: 保存核准畫面欄位、核准者、逾時規則與核准後是否仍可修改交易。
如何限制目的地址與動作種類?
以 allowlist 和 ABI/method 級政策限制,而不是讓模型自由填任意 calldata。
白名單要包含鏈與合約版本;對 router 或代理合約還需檢查最終接收者與內部 call。設定新地址應走較慢的管理通道並有冷卻期,避免 Agent 自行放寬自己的邊界。
如何留下證據: 保存允許的合約、方法、資產、接收者及修改權限。
代理真正需要哪些秘密?
多數 Agent 只需短期、單用途憑證,不需要 seed、提款 key 或管理員權限。
研究與報價可用唯讀 key;下單與提款要拆開;簽章由獨立服務持有。憑證必須限制來源、資源、方法、速率和期限,測試與正式環境也不能共用。
如何留下證據: 建立秘密清冊,列 owner、consumer、scope、期限和輪替方式。
撤銷計畫必須包含什麼?
必須能由未依賴受害 Agent 的獨立通道停止簽章、撤銷 allowance、輪替 key 並隔離資產。
只寫「可暫停」不夠;要演練誰能按下開關、多久生效、跨幾條鏈、是否需要 gas,以及舊憑證是否仍存在備份或 CI。復原還包含重建乾淨環境與確認未授權交易。
如何留下證據: 保存演練時間線、交易 hash、輪替結果、負責人與未涵蓋系統。
如何測試連接錢包時的 Prompt Injection?
在測試網或隔離 fork 中,讓不可信內容嘗試改變目的地址、金額、工具或核准說明。
載荷可放入網頁、代幣 metadata、交易備註和工具回傳。測試重點不是模型是否口頭拒絕,而是外部策略是否阻止敏感物件、log 是否留痕、人工核准是否顯示實際異常。
如何留下證據: 保存載荷來源、最終交易物件、政策結果與是否觸及簽章服務。
從測試網轉到真實資金時要改什麼?
要重新設定身分、額度、監控、核准與復原,不能直接複製測試網參數。
正式環境應從小額專用錢包開始,將鏈 ID、合約地址、gas、MEV、價格來源和通知通道納入政策。先用故障演練驗證停止與撤銷,再逐級提高額度,而不是因測試網成功就一次開放。
如何留下證據: 保存上線檢查表、初始餘額、升額門檻與回滾條件。
驗證工作簿
以下檢查卡把研究變成可重做紀錄。它們不產生投資建議,而是要求保存證據、反例、版本、限制與會改變結論的條件。
檢查 01|把錢包交給代理代表什麼 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 每條可寫路徑都有明確身分和 scope
- 會推翻判定的訊號
- 只記前端連接的主錢包
- 本題判定規則
- 以所有並行路徑計算暴露額
檢查 02|為什麼直接交付私鑰不是合理基線 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- Agent 無法取得原始簽章材料
- 會推翻判定的訊號
- 把環境變數視為隔離
- 本題判定規則
- 原始私鑰可讀即視為無上限路徑
檢查 03|最大可能損失要如何計算 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 鏈上設定與後端策略可實際驗證
- 會推翻判定的訊號
- 把未知上限填成零或只看現有餘額
- 本題判定規則
- 對未知值採保守上界並單獨標示
檢查 04|人工核准應放在哪一層 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 核准綁定不可變的交易摘要
- 會推翻判定的訊號
- 先核准意圖後由 Agent 改寫 calldata
- 本題判定規則
- 交易改動即要求重新核准
檢查 05|如何限制目的地址與動作種類 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 策略層可拒絕未列出的最終效果
- 會推翻判定的訊號
- 只檢查第一層合約地址
- 本題判定規則
- 無法解析的 call 預設拒絕
檢查 06|代理真正需要哪些秘密 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 每個秘密都能對到一項必要功能
- 會推翻判定的訊號
- 以方便為由共用全能 key
- 本題判定規則
- 不能說明用途的秘密應移除或降權
檢查 07|撤銷計畫必須包含什麼 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 測試憑證與 allowance 的實際撤銷演練
- 會推翻判定的訊號
- 撤銷只能透過同一個已受害 Agent
- 本題判定規則
- 未演練前只標示設計存在
檢查 08|如何測試連接錢包時的 Prompt Injection · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 敵意內容到簽章邊界的端到端測試
- 會推翻判定的訊號
- 只測「忽略前文」等直接指令
- 本題判定規則
- 任何未授權簽章嘗試都列為重大
檢查 09|從測試網轉到真實資金時要改什麼 · 支持性測試
- 本輪做法
- 尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
- 應取得的證據
- 正式鏈上的小額限權驗證
- 會推翻判定的訊號
- 沿用測試 key 或無限 allowance
- 本題判定規則
- 每次升額都需新的損失上限證據
檢查 01|把錢包交給代理代表什麼 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 每條可寫路徑都有明確身分和 scope
- 會推翻判定的訊號
- 只記前端連接的主錢包
- 本題判定規則
- 以所有並行路徑計算暴露額
檢查 02|為什麼直接交付私鑰不是合理基線 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- Agent 無法取得原始簽章材料
- 會推翻判定的訊號
- 把環境變數視為隔離
- 本題判定規則
- 原始私鑰可讀即視為無上限路徑
檢查 03|最大可能損失要如何計算 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 鏈上設定與後端策略可實際驗證
- 會推翻判定的訊號
- 把未知上限填成零或只看現有餘額
- 本題判定規則
- 對未知值採保守上界並單獨標示
檢查 04|人工核准應放在哪一層 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 核准綁定不可變的交易摘要
- 會推翻判定的訊號
- 先核准意圖後由 Agent 改寫 calldata
- 本題判定規則
- 交易改動即要求重新核准
檢查 05|如何限制目的地址與動作種類 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 策略層可拒絕未列出的最終效果
- 會推翻判定的訊號
- 只檢查第一層合約地址
- 本題判定規則
- 無法解析的 call 預設拒絕
檢查 06|代理真正需要哪些秘密 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 每個秘密都能對到一項必要功能
- 會推翻判定的訊號
- 以方便為由共用全能 key
- 本題判定規則
- 不能說明用途的秘密應移除或降權
檢查 07|撤銷計畫必須包含什麼 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 測試憑證與 allowance 的實際撤銷演練
- 會推翻判定的訊號
- 撤銷只能透過同一個已受害 Agent
- 本題判定規則
- 未演練前只標示設計存在
檢查 08|如何測試連接錢包時的 Prompt Injection · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 敵意內容到簽章邊界的端到端測試
- 會推翻判定的訊號
- 只測「忽略前文」等直接指令
- 本題判定規則
- 任何未授權簽章嘗試都列為重大
檢查 09|從測試網轉到真實資金時要改什麼 · 反例測試
- 本輪做法
- 在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
- 應取得的證據
- 正式鏈上的小額限權驗證
- 會推翻判定的訊號
- 沿用測試 key 或無限 allowance
- 本題判定規則
- 每次升額都需新的損失上限證據
常見問題
硬體錢包能讓 Agent 自動交易又完全安全嗎?
不能。它能保護 key,但若自動核准路徑過寬,錯誤或敵意交易仍可能被簽署。
每日限額是否已足夠?
不一定。還要看單筆、目的地址、可並行身分、allowance 及誰能修改限額。
人工核准能消除 Prompt Injection 嗎?
不能;若核准畫面隱藏實際 calldata 或人員長期盲按,仍會失效。
本檔案使用的來源
- OWASP Top 10 for Agentic Applications — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- OWASP LLM08: Excessive Agency — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- OWASP Top 10 for LLM and Gen AI Apps — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- NIST AI 600-1: Generative AI Profile — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Ethereum accounts — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Ethereum JSON-RPC API — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- ERC-7715: Request Permissions from Wallets — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Safe Smart Account overview — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- Safe Modules — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- AI agent with a spending limit for a treasury — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
- OpenZeppelin Access Control — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
