把錢包交給代理代表什麼?

不是一個開關,而是一組讀取、建議、簽署、廣播和管理權限。

把每個身分列成矩陣:能讀哪些資料、建立哪些交易、由誰核准、可用哪個簽章者,以及能否修改白名單或限額。真正危險的通常是被忽略的 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

檢查 01|把錢包交給代理代表什麼 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
每條可寫路徑都有明確身分和 scope
會推翻判定的訊號
只記前端連接的主錢包
本題判定規則
以所有並行路徑計算暴露額
02

檢查 02|為什麼直接交付私鑰不是合理基線 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
Agent 無法取得原始簽章材料
會推翻判定的訊號
把環境變數視為隔離
本題判定規則
原始私鑰可讀即視為無上限路徑
03

檢查 03|最大可能損失要如何計算 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
鏈上設定與後端策略可實際驗證
會推翻判定的訊號
把未知上限填成零或只看現有餘額
本題判定規則
對未知值採保守上界並單獨標示
04

檢查 04|人工核准應放在哪一層 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
核准綁定不可變的交易摘要
會推翻判定的訊號
先核准意圖後由 Agent 改寫 calldata
本題判定規則
交易改動即要求重新核准
05

檢查 05|如何限制目的地址與動作種類 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
策略層可拒絕未列出的最終效果
會推翻判定的訊號
只檢查第一層合約地址
本題判定規則
無法解析的 call 預設拒絕
06

檢查 06|代理真正需要哪些秘密 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
每個秘密都能對到一項必要功能
會推翻判定的訊號
以方便為由共用全能 key
本題判定規則
不能說明用途的秘密應移除或降權
07

檢查 07|撤銷計畫必須包含什麼 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
測試憑證與 allowance 的實際撤銷演練
會推翻判定的訊號
撤銷只能透過同一個已受害 Agent
本題判定規則
未演練前只標示設計存在
08

檢查 08|如何測試連接錢包時的 Prompt Injection · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
敵意內容到簽章邊界的端到端測試
會推翻判定的訊號
只測「忽略前文」等直接指令
本題判定規則
任何未授權簽章嘗試都列為重大
09

檢查 09|從測試網轉到真實資金時要改什麼 · 支持性測試

本輪做法
尋找最接近實際行為的支持證據,但不接受無法連回原始聲明的材料
應取得的證據
正式鏈上的小額限權驗證
會推翻判定的訊號
沿用測試 key 或無限 allowance
本題判定規則
每次升額都需新的損失上限證據
10

檢查 01|把錢包交給代理代表什麼 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
每條可寫路徑都有明確身分和 scope
會推翻判定的訊號
只記前端連接的主錢包
本題判定規則
以所有並行路徑計算暴露額
11

檢查 02|為什麼直接交付私鑰不是合理基線 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
Agent 無法取得原始簽章材料
會推翻判定的訊號
把環境變數視為隔離
本題判定規則
原始私鑰可讀即視為無上限路徑
12

檢查 03|最大可能損失要如何計算 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
鏈上設定與後端策略可實際驗證
會推翻判定的訊號
把未知上限填成零或只看現有餘額
本題判定規則
對未知值採保守上界並單獨標示
13

檢查 04|人工核准應放在哪一層 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
核准綁定不可變的交易摘要
會推翻判定的訊號
先核准意圖後由 Agent 改寫 calldata
本題判定規則
交易改動即要求重新核准
14

檢查 05|如何限制目的地址與動作種類 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
策略層可拒絕未列出的最終效果
會推翻判定的訊號
只檢查第一層合約地址
本題判定規則
無法解析的 call 預設拒絕
15

檢查 06|代理真正需要哪些秘密 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
每個秘密都能對到一項必要功能
會推翻判定的訊號
以方便為由共用全能 key
本題判定規則
不能說明用途的秘密應移除或降權
16

檢查 07|撤銷計畫必須包含什麼 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
測試憑證與 allowance 的實際撤銷演練
會推翻判定的訊號
撤銷只能透過同一個已受害 Agent
本題判定規則
未演練前只標示設計存在
17

檢查 08|如何測試連接錢包時的 Prompt Injection · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
敵意內容到簽章邊界的端到端測試
會推翻判定的訊號
只測「忽略前文」等直接指令
本題判定規則
任何未授權簽章嘗試都列為重大
18

檢查 09|從測試網轉到真實資金時要改什麼 · 反例測試

本輪做法
在關閉這一列之前,以變體、工具失敗或替代路徑嘗試推翻暫定結論
應取得的證據
正式鏈上的小額限權驗證
會推翻判定的訊號
沿用測試 key 或無限 allowance
本題判定規則
每次升額都需新的損失上限證據

常見問題

硬體錢包能讓 Agent 自動交易又完全安全嗎?

不能。它能保護 key,但若自動核准路徑過寬,錯誤或敵意交易仍可能被簽署。

每日限額是否已足夠?

不一定。還要看單筆、目的地址、可並行身分、allowance 及誰能修改限額。

人工核准能消除 Prompt Injection 嗎?

不能;若核准畫面隱藏實際 calldata 或人員長期盲按,仍會失效。

本檔案使用的來源

  1. OWASP Top 10 for Agentic Applications — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  2. OWASP LLM08: Excessive Agency — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  3. OWASP Top 10 for LLM and Gen AI Apps — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  4. NIST AI 600-1: Generative AI Profile — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  5. Ethereum accounts — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  6. Ethereum JSON-RPC API — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  7. ERC-7715: Request Permissions from Wallets — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  8. Safe Smart Account overview — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  9. Safe Modules — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  10. AI agent with a spending limit for a treasury — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。
  11. OpenZeppelin Access Control — 用於核對範圍、版本、行為或控制的一手資料;使用時仍須確認頁面日期與上下文。