EIP-7702 安全避坑指南:從幣安 63 億被盜看新機制的 5 個致命盲區
幣安 10 月 30 日爆出 63 億美元被盜,全球震動。事後復盤發現,攻擊者用的不是傳統的私鑰竊取,而是 EIP-7702 委託授權——一個今年才正式啟用的以太坊新機制。這不是什麼「新漏洞」,而是機制本身的「設計盲點」撞上了人類的安全慣性。一般使用者和開發者都可能中招。本文拆解整條攻擊鏈,並用大白話講清楚 EIP-7702 到底是什麼,最後分別給出 5 條實際可做的避坑清單。
一、幣安被盜事件中 EIP-7702 扮演了什麼角色
先回到事件本身。10 月 30 日凌晨,鏈上監測者神魚在 X 上貼出一個令人不安的細節:幣安的 14 個熱錢包地址,在以太坊 Pectra 升級之後,都簽署過一種「奇怪的交易」——type-4 交易。而這些錢包對外部攻擊者的合約,一直保持著有效的委託授權。
目前社群還原的完整攻擊鏈大致如下:
- 入侵入口:幣安某位內部開發或維運人員的筆電遭釣魚或木馬攻破;
- 植入惡意交易:攻擊者取得一個內部簽名通道,可以往熱錢包裡塞入 type-4 交易;
- 批次委託:短短幾小時內,50 個熱錢包逐一「簽字」,把自己的程式執行權委託給攻擊者控制的合約;
- 控制權劫持:委託生效後,攻擊者可以像呼叫自己的合約一樣呼叫這些熱錢包——簽名系統看到的只是一個 32 位元組的「交易摘要」,實際簽掉的卻是「把車鑰匙交給別人開」的委託書。
所幸事件爆發後,幣安鏈上團隊緊急部署撤銷交易,目前 約 30 億美元被盜資產已成功鎖回——這代表 EIP-7702 的委託並非不可逆,但前提是你還簽得動撤銷交易。關於這次事件的完整時間線,請看我們之前的深度報導:63 億美元被盜:幣安熱錢包遭 EIP-7702 委託劫持。
值得一提的是,幣安並不是第一家被 EIP-7702 盯上的機構——早在 9 月,就已經有小散戶因為簽了陌生 DApp 的 type-4 交易,導致資產被洗劫。但幣安事件把這個機制層級的安全問題,一下子推到了檯面上。
二、EIP-7702 核心機制速覽(3 分鐘看懂)
傳統以太坊只有兩種帳戶:EOA(外部擁有帳戶)和合約帳戶。EOA 就像你的金融卡,私鑰簽一次就花一筆;合約帳戶則是部署在鏈上的程式邏輯。EIP-7702 想解決的核心問題是:能不能讓 EOA 暫時擁有合約帳戶的能力?
答案就是「委託授權(delegation)」——打個比方:你把車(EOA)借給朋友(目標合約)開。借車的方式不是改車牌,而是在鏈上簽一張委託書,上頭寫清楚「車鑰匙暫時由誰保管」。
從技術細節來看,EIP-7702 帶來兩個關鍵變化:
- type-4 交易:一種全新的交易類型,專門用來「簽署委託」。簽名者不需要轉任何 ETH 給目標地址,只要把委託書發布到鏈上就行。
- 委託會永久生效,直到被明確撤銷。這是最重要、也最容易被忽略的一條——它沒有「自動到期」,也沒有「用完即走」。
聽起來不錯,對吧?理論上你可以把錢包暫時委託給一個 gas 代付合約,或給 DApp 一個限時的自動化操作權限。但這個「永久生效」的底層設計,恰恰埋下了幾乎所有安全事故的種子。
三、5 個致命盲區(一般人會中招的)
下面這 5 個盲區,是一般使用者最容易踩的坑,每一個都有真實案例。
1. 委託授權不會自動到期——用完不撤,等於把鑰匙永久交給別人
很多 DApp 引導使用者「點一下 delegate,以後轉帳手續費打 8 折」,使用者簽完就忘了。結果那個委託一直躺在鏈上有效,DApp 換了團隊、甚至把地址轉賣掉,你的錢包鑰匙還在別人手裡握著。
2. 錢包介面不顯示你已經委託給誰
這是目前整個生態最尷尬的一點。截至 2026 年 10 月,絕大多數主流錢包(Trust Wallet、Exodus,甚至部分硬體錢包的管理介面)都沒有「委託管理」頁面。你簽過 17 筆 type-4 交易,錢包裡可能只看得到一串「交易摘要」,根本不知道自己把鑰匙交給了誰。
好消息是 etherscan.io 總算更新了介面——現在打開自己的地址頁,在「Delegations」標籤頁就能看到所有歷史委託紀錄。etherscan.io 是目前最可靠的自查工具。
3. 簽了字就生效,不需要二次確認
你在 DApp 上按下「確認」,錢包彈窗顯示「gas 費 0.001 ETH」,你就簽了——但鏈上真正發生的是:你的 EOA 向攻擊者合約發布了一份永久委託。沒有第二次彈窗,也沒有額外確認。簽名者看到的只是 32 位元組的交易摘要,根本分不清這是普通轉帳還是 type-4。
4. 委託可以嵌套,原始簽名者完全不知情
A 委託給 B,B 委託給 C,C 再委託給 D——理論上可以無限嵌套。幣安事件中就出現了委託鏈嵌套的跡象。如果你的錢包已經被惡意合約接管,它可以在未經你同意的情況下,再把控制權下放給更多地址。
5. 撤銷委託本身也需要簽名
這是最令人絕望的一點。如果攻擊者已經拿到你的委託權,他們可以凍結你的資產,或把錢包轉成惡意合約模式。你想撤銷?撤銷委託同樣要簽名。而你的簽名通道,說不定早就被攻擊者透過嵌套委託接管了。
四、一般使用者實際操作清單
講了這麼多,你現在最該做什麼?5 個步驟排查,照順序來:
✅ 第 1 步:立刻自查你的錢包委託紀錄。
打開 etherscan.io,輸入你的錢包地址,切換到「Delegations」標籤頁。如果你看到不認識的地址出現在委託清單裡,那就是一顆定時炸彈。
✅ 第 2 步:有陌生委託就立刻撤銷。
撤銷工具首選 OpenZeppelin Defender 或社群維護的 EIP-7702 Revoker。鏈上撤銷一筆的 gas 成本通常在 $1-5 之間,操作方式類似一般轉帳。
⚠️ 注意:如果你的錢包已經被惡意委託接管,撤銷可能會失敗。這時候改用硬體錢包(Ledger、Trezor)離線產生撤銷交易的簽名,再換一台乾淨的電腦廣播,是目前最安全的做法。
✅ 第 3 步:暫時調整你的錢包使用習慣。
如果你用的是 Trust Wallet 或 Exodus,建議暫時避免直接簽署 type-4 交易。相對安全的組合是 Ledger 硬體錢包加上 Rabby 瀏覽器外掛——硬體簽名裝置不會自動執行嵌套委託,至少不會替你「默默」簽掉。
✅ 第 4 步:不要在陌生 DApp 上按下「Delegate」。
任何以「gas 費打折」「免手續費」「自動化收益」為理由要你簽委託的 DApp,先停下來。到 X 或 Telegram 搜尋這個 DApp 名稱加上 "hack"、"scam",花 3 分鐘做個背景調查,比省下那幾美元 gas 值得多了。
✅ 第 5 步:交易所使用者特別提醒。
如果你主要使用的是 幣安、OKX 這類中心化交易所,熱錢包的委託由交易所統一管理。你個人帳戶層面不需要額外操作,但建議優先使用交易所官方 App,不要用第三方錢包直接對交易所的儲值地址簽署 type-4 交易。
五、開發者實際操作清單
身為 DApp 或 DeFi 開發者,你的責任更重。下面 5 條是業界目前達成共識的「最低安全基線」:
1. 委託授權必須設定合理的到期時間戳(expiry)。
雖然目前不是所有錢包都支援在簽名層校驗 expiry,但你部署的委託合約邏輯裡必須硬編碼這項檢查。一個「30 天後自動失效」的委託,和一個「永久生效」的委託,安全等級完全不同。
2. 前端介面必須用紅色大彈窗提示使用者這是 type-4 交易。
標準做法是:使用者點下 Delegate 按鈕後,前端跳出獨立的紅色對話框,用加粗大字寫明「⚠️ 你即將簽署 EIP-7702 委託交易——這會給予目標地址對你錢包的程式執行權」,並且要求使用者手動輸入「我知道風險」才能繼續。
3. 永遠不要接受使用者傳入的 delegation target。
委託的目標合約地址,必須是你寫死在前端程式碼、並與鏈上部署地址核對過的。讓使用者自己填 target,等於把委託權的「門牌號碼」直接交出去。
4. 升級到 EIP-7715 的 "delegateWithPermissions" 變體。
EIP-7715 在 EIP-7702 的基礎上增加了權限限制(permissions),可以規定委託目標能呼叫哪些函式、不能呼叫哪些函式。理論上這應該成為標準配備,但目前支援度還不高,建議儘快遷移。
5. 測試環境強制執行 OpenZeppelin 的 7702 審計腳本。
OpenZeppelin 已經把 EIP-7702 安全審計納入他們的 Defender 檢查清單。每次合約部署,都讓自動化腳本跑一遍委託相關的風險掃描,成本幾乎為零。
六、結語
EIP-7702 並不是一個「有 bug」的協議,它的核心設計目標——讓一般 EOA 擁有合約能力——是正確的。問題在於,這個「永久生效」的底層假設,撞上了以太坊生態裡最脆弱的一環:人類的安全習慣。
幣安事件可能是 EIP-7702 普及以來最貴的一堂安全課。但換個角度想,這次事件把整個生態從「無感委託」的美夢中一巴掌拍醒了。現在 etherscan 有了委託標籤頁、錢包團隊開始補上安全彈窗、OpenZeppelin 也更新了審計腳本——每一起事故,都在讓這個機制變得更安全。
對你個人來說,現在最值錢的動作只有兩個:去 etherscan 查一下自己有沒有陌生委託,以及 告訴身邊用 DeFi 的朋友這件事。這樣就夠了。