KeyFrame內部研究專用

Auditing ERC-4337 Paymasters: Little Code, Big Risk

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

三句話摘要

ERC-4337 Paymaster 的收費時機設計與安全審計關鍵漏洞解析。 ERC-4337 Paymaster 的安全核心在於「驗證階段預收費 + 精確的 gas 懲罰計算」,任何對 Oracle、小數位或 10% 未使用 gas 懲罰的忽略都將導致可被利用的財務漏洞。 執行階段的不確定性是核心風險:4337 對 Validation 階段有嚴格確定性限制,但 Execution 階段完全不確定,因此 Post-op 收費讓用戶有機會在執行中撤銷 ERC20 授權,Paymaster 仍需付費卻收不回代幣,構成可重現的 gas griefing 攻擊。

重點整理

重點
  • 1

    執行階段的不確定性是核心風險:4337 對 Validation 階段有嚴格確定性限制,但 Execution 階段完全不確定,因此 Post-op 收費讓用戶有機會在執行中撤銷 ERC20 授權,Paymaster 仍需付費卻收不回代幣,構成可重現的 gas griefing 攻擊。

  • 2

    Validation 階段預收費是更佳策略,但數學必須精準:預先按 gas limit 上限收費可保證付款,但 ERC20/ETH 匯率換算中,Oracle 精度、小數位處理、5 個 gas limit 之間的關係都是常見審計缺陷。

  • 3

    10% 未使用 gas 懲罰必須納入計算:系統對「用戶設定的 gas limit」與「實際消耗」之間的差值課徵 10% 懲罰,若 Paymaster 邏輯未正確反映此懲罰,將系統性地造成少收或多收。

  • 4

    不應因 Oracle 資料過期而 revert:應將過期容忍窗口編碼進回傳的 validity window,避免因 stale data 導致整筆操作失敗,影響用戶體驗與可用性。

實用技巧與重點

乾貨
  • 客戶名單:Alchemy、Pimlico、Trust Wallet(均為高度使用的 Paymaster)
  • ERC-4337 流程共 5 步驟:①帳戶驗證 ②帳戶執行 ③Paymaster 驗證 ④實際執行 ⑤Post-op 補償
  • 兩類 Paymaster:ERC20 Token Paymaster、Verifying Paymaster(簽名贊助模式)
  • Gas griefing 攻擊向量:用戶在執行階段 revoke ERC20 approval → Paymaster 支付 gas 但無法收回代幣
  • 未使用 gas 懲罰比例:10%(actual gas 與 specified limit 之差)
  • 審計公開報告網址:certificate.stant.com
  • 聯絡方式:X 或 Telegram DM @Reuben

結論

結論

ERC-4337 Paymaster 的安全核心在於「驗證階段預收費 + 精確的 gas 懲罰計算」,任何對 Oracle、小數位或 10% 未使用 gas 懲罰的忽略都將導致可被利用的財務漏洞。

完整解析

詳細

ERC-4337 是以太坊帳戶抽象的核心標準,它在原生交易層之上加了一層抽象:用戶不再直接發 Ethereum 交易,而是提交稱為「UserOperation」的結構體,由 Bundler 將多筆 UserOp 打包成一筆實際的鏈上交易,目標合約為 Entry Point——一個負責協調整個流程的標準合約。整個生命週期分為驗證(Validation)與執行(Execution)兩個主要階段,Paymaster 在其中扮演「代付 gas 或以代幣換 gas」的角色,並在最後的 post-op 步驟向 Bundler 補償費用。

Paymaster 在設計上面臨的首要問題是「何時向用戶收費」。直覺上,應在 post-op(執行後)收費,因為此時才知道確切 gas 消耗。然而,執行階段本質上是不確定的——4337 對驗證階段設有嚴格限制以確保可預測性,執行階段則完全放開。這帶來一個嚴重的 gas griefing 攻擊:用戶可以在執行階段中夾帶「撤銷 ERC20 授權」的操作,導致 post-op 轉帳失敗。此時驗證已通過、Bundler 已上鏈,Paymaster 必須付費卻無法收回代幣,執行階段雖可回滾但 gas 已不可挽回。

因此,在驗證階段預先收費是更穩健的選擇,確保付款在任何執行發生前已完成。但這也引入了新的複雜性:用戶操作有 5 個不同的 gas limit 參數,Paymaster 必須在驗證時依據這些上限預估最大費用,按當時的 ERC20/ETH 匯率換算後收取。這個換算過程涉及 Oracle 整合,所有常見的 Oracle 攻擊面(價格精度、小數位對齊、資料過時)都適用。演講者特別強調,若 Oracle 資料過期不應直接 revert,而應將容忍窗口編入 UserOp 回傳的 validity window 中,以保持系統可用性。

最後,預收費後的找零邏輯同樣暗藏陷阱:系統對「用戶設定的 gas limit 上限」與「實際消耗量」之差值課徵 10% 的懲罰。若 Paymaster 計算退款時未正確扣除這筆懲罰,將系統性地少收或多收用戶費用,兩種情況都屬於可量化的財務損失。演講者表示這些問題絕大多數已在 Alchemy、Pimlico、Trust Wallet 等客戶的公開審計報告中有所記錄,報告可在 certificate.stant.com 查閱。

關鍵時刻

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