返回
2026/11/03
一個簽章為何能持續掏空 Binance 熱錢包:攻擊背後的 EIP-7702 委派
50 份預先簽署的 EIP-7702 授權、一份命中,委派在錢包清空後依然有效。本文解析其原理,以及熱錢包營運方應監控哪些項目。
在我們關於 Binance 入侵事件的第一篇文章中,我們探討了攻擊據報導是如何開始的:一台遭入侵的 DevOps 筆記型電腦,以及攻擊者隨後進入了負責核准敏感操作的系統。此後,資安公司 Blockaid 的鏈上分析揭露了攻擊在 Ethereum 上最後階段的運作方式。它利用了 EIP-7702——2025 年 5 月加入 Ethereum 的一項功能——並凸顯出許多熱錢包營運方尚未納入規劃的風險。
簡單來說:一份簽署的授權,就讓 Binance 最大的 Ethereum 熱錢包變成攻擊者可以控制的帳戶。這種控制並未在錢包被清空時結束,即使輪換金鑰也不會結束。
重點摘要
- 攻擊者將涵蓋 50 個連續 nonce 的 50 份預先簽署 EIP-7702 授權打包進一筆交易;其中恰好一份相符,錢包的執行權因此交給了攻擊者的合約。
- EIP-7702 委派會持續有效,直到帳戶取代或清除它。首次轉移之後入帳的存款(某一時刻超過 2 億美元)在沒有任何新簽章的情況下被轉走。
- 輪換私鑰無法解除委派,因為委派屬於位址本身。只有明確的撤銷操作才能清除它。
- 攻擊者如何取得 50 個有效簽章仍是未解之謎。Binance 表示尚未發現私鑰外洩的證據。
- 熱錢包營運方應監控委派狀態,拒絕簽署非預期的授權,並將明確的撤銷步驟納入事件應變手冊。
EIP-7702 快速入門
EIP-7702 讓一般的 Ethereum 帳戶(外部擁有帳戶,即 EOA)可以將其執行委派給智慧合約。帳戶擁有者簽署一份授權,其中指定合約位址、鏈以及帳戶目前的 nonce。攜帶該授權的交易被處理後,對該帳戶的呼叫就會執行該合約的程式碼,就像這個帳戶是智慧合約錢包一樣。這項功能有其正當用途,例如批次處理交易,以及代替使用者支付手續費。
規格中有三個細節與本次事件密切相關:
- 授權透過一種新的交易類型——類型 4(
0x04)——傳遞,一筆交易可以攜帶一份授權清單。任何人都可以提交這筆交易;授權只需要帶有該帳戶的有效簽章。 - 每份授權只有在其 nonce 等於帳戶目前的 nonce 時才有效。若不相符,只會略過這一份授權,交易會繼續處理下一份。
- 委派是持久的。它會一直存在,直到帳戶簽署一份指向其他位址的新授權,或一份指向零位址的授權(後者會清除委派)。
Binance 14 錢包是如何被接管的
繁忙的交易所熱錢包會不斷送出交易,因此它的 nonce 一直在變動。事先準備簽署授權的攻擊者無法得知交易上鏈時哪個 nonce 才是目前的值。根據 Blockaid 的分析,攻擊者的解法是簽署一個範圍,而不是單一數值。
| 時間(UTC,10 月 29 日) | 事件經過 |
|---|---|
| 15:59 | 攻擊者部署了一個「清掃」(sweeper)合約。該合約未經驗證,只有攻擊者的操作位址可以呼叫。 |
| 20:20:59 | 一筆類型 4 交易攜帶了 50 份 EIP-7702 授權,全部以 Binance 14 熱錢包的金鑰簽署,對應 50 個連續的 nonce。其中恰好一份與錢包的即時 nonce 相符,錢包隨即被委派給清掃合約。 |
| 20:24:23 | 對清掃合約的一次呼叫,就從錢包轉走約 167,464 ETH、16.15 億 USDT 以及數十種其他代幣,只留下 1 ETH 支付手續費。 |
| 20:41 | 在仍處於委派狀態下,該錢包被用來從 Binance 14 控制的另一個智慧帳戶轉走約 8.23 億 USDC。 |
| 21:04 至 23:56 | 隨著新資金入帳,錢包又被清掃了四次。光是 21:44 這一次,就有超過 2 億美元的新存款在沒有任何新簽章的情況下被轉走。 |
| 00:10(10 月 30 日) | 根據 Hypernative 的時間軸,委派被撤銷。 |
USDC 這一步還揭示了第二個影響。被委派的帳戶會保留它在其他合約中擁有的所有角色:擁有者、執行者、獲核准的支出方。誰控制了它的執行,誰就能使用所有這些角色。
為什麼空錢包依然危險
資產遭竊後,人們自然會認為:空錢包已經沒有什麼可失去的,而更換金鑰就能終止攻擊者的存取。在 EIP-7702 之下,這兩種想法都是錯的。委派附著在位址上,而不是餘額或某一份金鑰上。只要委派還在,任何轉入該位址的資金都可能被委派合約轉走,攻擊者不需要任何額外的簽章。
這正是本次事件中發生的情況。首次清掃後,資金仍不斷轉入 Binance 14,並再次被轉走。輪換金鑰也無濟於事:正如 Blockaid 指出的,清除委派需要同一帳戶簽署一份指向零位址的新授權。在該撤銷操作被處理之前,應將該位址視為由攻擊者控制。
提示: 發生事件時,先撤銷委派,再輪換金鑰並補充資金。在確認委派已被清除之前,停止所有向受影響位址轉帳的自動化流程。
尚未釐清的問題
全部 50 份授權都帶有 Binance 14 金鑰的有效簽章。大致有兩種解釋,而公開證據目前還無法判斷是哪一種:
- 金鑰已外洩,攻擊者直接簽署了這些授權。
- 簽章基礎設施遭到濫用:攻擊者在從未取出金鑰的情況下,讓 Binance 自己的簽章系統簽署了由攻擊者選定的資料。
Binance 表示尚未發現錢包私鑰外洩的證據,調查仍在進行中。Blockaid 的 CEO 向 Cointelegraph 表示,這些活動看起來比較像是簽章基礎設施遭入侵,而非金鑰外洩,但這只是外部的初步評估。在 Binance 發布事後檢討報告之前,我們將這個問題視為尚無定論。
如果您營運熱錢包,應該怎麼做
1. 監控委派狀態
被委派的帳戶擁有程式碼。在 EIP-7702 之下,它的程式碼是委派標記 0xef0100,後面接著被委派合約的 20 位元組位址。一般 EOA 則完全沒有程式碼。您可以透過標準的 JSON-RPC 呼叫檢查任何位址:
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_getCode","params":["0xYOUR_HOT_WALLET","latest"]}' \
https://YOUR_RPC_ENDPOINT
結果為 0x 表示沒有委派。結果以 0xef0100 開頭則表示該位址已被委派。請在每個區塊或以較短的間隔檢查每一個熱錢包,一旦出現任何非計畫中的變化,立即發出警示。
2. 監看涉及您位址的類型 4 交易
委派您錢包的交易不一定來自您的錢包。只要攜帶由您的金鑰簽署的有效授權,任何人都可以提交它。請監控授權清單中包含您任一位址簽章的類型 4 交易,而不只是從這些位址送出的交易。
3. 建立委派清冊
針對您營運的每個位址,記錄它是否應該被委派;如果應該,委派給哪個經過稽核的合約。清冊以外的任何委派都應視為資安事件。如果您不使用 EIP-7702,每個熱錢包的預期狀態很簡單:沒有程式碼。
4. 在簽章端拒絕非預期的授權
EIP-7702 授權有其專屬的簽章格式:位元組 0x05 後接編碼後的鏈 ID、合約位址與 nonce,再取其雜湊值。簽章服務與 HSM 政策可以辨識這種格式。如果您不使用委派,請完全封鎖這類資料;如果有使用,只允許已知的合約位址。另請注意,鏈 ID 為 0 的授權在所有鏈上都有效。
5. 將明確的撤銷步驟納入事件應變手冊
為每個錢包寫明如何撤銷委派:由誰簽署零位址授權、從哪個系統簽署,以及如何確認撤銷已生效(位址的程式碼重新變為 0x)。其中也應包括停止對受影響位址的入帳轉帳,並在真正需要之前演練這套程序。
提示: 同樣的觀念也適用於加密貨幣以外的領域。任何比建立它的憑證存續更久的授權,例如 OAuth 更新權杖、委派的雲端角色或長期有效的 CI/CD 權杖,都需要在事件應變中有獨立且明確的撤銷步驟。
LOGIQ 能提供哪些協助
LOGIQ 協助企業檢視在其 Linux 伺服器、雲端帳戶與流水線中,哪些人員與系統能以何種權限執行操作,並建立涵蓋委派存取(而不只是密碼和金鑰)的監控與事件應變流程。如果您希望有人再幫忙檢視自己的控管措施,歡迎閱讀上文提到的我們關於此次入侵的第一篇文章,或透過我們的網站與我們聯絡。
參考資料
- Blockaid:Binance 遭駭事件的鏈上分析
- Hypernative:Inside the largest crypto theft of all time: the $6.3B Binance hot wallet drain(2026 年 10 月 30 日)
- Cointelegraph:Binance hack may involve private key misuse, not theft: Blockaid CEO(2026 年 10 月 30 日)
- ETHNews:Binance’s $6.3B hack exposes a new hot wallet security risk(2026 年 10 月 30 日)
- TRM Labs:North Korea steals USD 6.36 billion from Binance in the largest hack in history
- Ethereum:EIP-7702: Set Code for EOAs
Global
Japan
Korea
China
Vietnam
Thailand
Indonesia
Portugal
Spain
France
Germany
Egypt
Russia