KeyFrame內部研究專用

Common Security Issues in Crypto Wallets

DeFi Security Summit - DSS·11月30日週日·23 min英文

三句話摘要

加密錢包(瀏覽器擴充套件與行動端)常見安全漏洞的成因分析與防禦設計建議。 加密錢包的安全邊界在於每一層的訊息驗證與 UI 資訊完整性,任何一環的鬆懈都可能讓攻擊者繞過用戶授權或隱藏關鍵交易細節,防禦設計必須從架構入口貫穿至顯示層。 訊息驗證不足可完全繞過用戶審核:瀏覽器擴充套件錢包的內部流程依賴 post message 串接多個 UI 步驟,若後台腳本未嚴格驗證訊息來源與類型,攻擊者可構造訊息直接跳至「簽名執行」階段,跳過確認介面。

重點整理

重點
  • 1

    訊息驗證不足可完全繞過用戶審核:瀏覽器擴充套件錢包的內部流程依賴 post message 串接多個 UI 步驟,若後台腳本未嚴格驗證訊息來源與類型,攻擊者可構造訊息直接跳至「簽名執行」階段,跳過確認介面。

  • 2

    origin 欄位不可信,必須使用瀏覽器事件的只讀 origin:`postMessage` 中的 `origin` 欄位可被 iframe 任意偽造,錢包若依賴它顯示「請求來源站點」,將給用戶呈現假的合法域名,應改用 `MessageEvent.origin` 並對照白名單驗證。

  • 3

    用戶新增網路時 chain ID 驗證邏輯存在缺陷:部分錢包從 RPC 端點動態取回 chain ID 與用戶輸入比對,但若 RPC 被攻擊者控制,兩者皆為惡意值,比對永遠通過,錢包就會接受偽造網路並顯示假餘額與交易記錄。

  • 4

    Token UI 資訊不完整可觸發實際資產損失:惡意代幣合約可將 `transfer()` 設計為 payable,當 UI 未顯示 `value` 欄位,網站可在簽名時附加大額 ETH,用戶看到的只是普通 ERC20 轉帳,實際執行卻損失主網幣。

實用技巧與重點

乾貨
  • 威脅來源分類:① 惡意網頁/開發者(post message 偽造) ② 實體存取(記憶體轉儲、KDF 暴力破解) ③ UI 欺騙用戶
  • 擴充套件架構層:Provider → Content Script → Background Script(可加 Service Worker)
  • 行動端輸入向量:URI scheme、Intent filter,需在流程入口嚴格驗證傳入內容
  • 漏洞類別一:訊息類型驗證(Message Type Validation)
  • 漏洞類別二:來源驗證(Origin Verification)—— 應使用 `MessageEvent.origin`(只讀),不信任訊息體內的 origin 欄位
  • 漏洞類別三:來源可見性(Origin Visibility)—— 防禦方式:對域名字串做 normalize + sanitize,UI 顯示不截斷
  • 漏洞類別四:惡意 RPC 注入假 chain ID —— 防禦方式:chain ID 唯一性檢查應基於用戶輸入而非 RPC 回傳值
  • 漏洞類別五:Token UI 缺少 `value` 欄位顯示
  • 攻擊案例流程:惡意網站查餘額 → 發少量 USDT → 誘導用戶「轉回」1 USDT → 合約 payable transfer 附加大額 ETH → 資產被鎖定
  • 防禦工具:Token Risk API(分析多鏈代幣、標記高風險 token,於錢包 UI 層顯示警示)

結論

結論

加密錢包的安全邊界在於每一層的訊息驗證與 UI 資訊完整性,任何一環的鬆懈都可能讓攻擊者繞過用戶授權或隱藏關鍵交易細節,防禦設計必須從架構入口貫穿至顯示層。

完整解析

詳細

加密錢包正成為絕大多數用戶進入 Web3 世界的第一道門,但這個「門」本身卻存在大量源自架構設計與環境誤解的安全缺陷。來自 Hex 的安全研究員 Andy 在這場演講中,系統性地拆解了瀏覽器擴充套件錢包與行動端錢包的攻擊面,並以具體漏洞案例說明問題的根因與防禦方向。

錢包面臨的威脅可分為三類:惡意網頁或開發者透過 post message 傳遞偽造請求;具備設備實體存取權的攻擊者可轉儲記憶體、暴力破解 KDF 派生密碼或篡改 OS 安全儲存;以及利用 UI 資訊不完整來欺騙用戶做出錯誤決策。擴充套件錢包的架構是:網頁透過 Provider 發出請求,Content Script 作為中間傳遞層,Background Script 負責實際的授權與敏感操作決策。行動端則透過 URI scheme 與 Intent filter 接收外部請求,攻擊面不同,但「嚴格驗證輸入」的核心要求一致。

第一個大類漏洞是訊息驗證不足。錢包內部的多個 UI 步驟(例如「切換網路確認」→「代幣轉帳確認」)依靠 post message 串接,Background Script 必須清楚區分訊息來自 Content Script 還是內部 UI 元件。若驗證不足,攻擊者可以構造精心設計的訊息,跳過「顯示授權介面」這一步,直接觸發「執行簽名」的 handler,使錢包誤以為用戶已審核並批准交易。第二個問題是來源驗證:postMessage 訊息體中的 `origin` 欄位可被頁面內的 iframe 任意設定(例如偽稱自己是 `build.devxy`),若錢包以此欄位來顯示「請求站點」,UI 就會呈現假的合法域名。正確做法是使用瀏覽器提供的只讀 `MessageEvent.origin`,並對照白名單,拒絕來自 iframe 或不可信上下文的訊息。此外,即使 origin 驗證正確,攻擊者仍可利用同形字符(homograph attack)或不可見填充字符讓惡意域名在視覺上與受信任域名完全相同,防禦方式是對域名字串進行規範化(normalize)並在 UI 中完整顯示不截斷。

網路新增流程也存在根本性缺陷。部分錢包在用戶添加自定義網路時,會從 RPC 端點動態取回 chain ID 並與用戶輸入比對,但若 RPC 端點由攻擊者控制,兩個值皆為惡意值,比對永遠通過。同時,重複性檢查若只比對名稱與 URL 而非 chain ID,攻擊者仍可注入重複 chain ID 的惡意網路,讓錢包顯示假餘額、假交易記錄,並在廣播前對用戶交易進行前置或後置操作。最後一個問題出在 Token UI:許多錢包的 ERC20 代幣轉帳介面未顯示 `value` 欄位。惡意代幣合約可將 `transfer()` 設計為 `payable`,網站在誘導用戶簽署看似無害的「1 USDT 轉帳」時,附加大額 ETH 作為 msg.value,合約執行後鎖定這部分資產,用戶毫不知情。Andy 的團隊因此建立了 Token Risk API,在多條鏈上分析代幣行為並於錢包 UI 層顯示風險標示,讓錢包從「簽名工具」升級為「風險感知介面」。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵