币安63亿美元失窃事件后,Hoskinson警告EIP-7702“极其危险”的代码
要点速览
- •研究人员表示,一个定制sweeper合约以Binance 14为目标,并被设计为即使个别代币交易失败也会继续处理转账。
- •据称,重构的代码能够对一个持有约8.23亿美元USDC的外部金库进行操作。
- •CyberSatoshi表示,EIP-7702允许在一笔type-4交易中包含50个授权,并帮助在单个区块内转出了数十亿美元。
- •EIP-7702要求有效的授权签名,因此该功能本身无法提供对币安钱包的未授权访问。
- •调查人员尚未查明攻击者如何获得币安签名系统的访问权限,币安也未证实该研究员的重构结论。

Cardano创始人Charles Hoskinson强调了围绕以太坊EIP-7702(以太坊改进提案7702)的安全担忧。此前有研究人员声称,该委托功能可能加剧了一次重大币安安全事件的影响规模和速度。
根据近期报道,币安损失的加密资产价值约为63亿美元。调查人员尚未查明攻击者究竟是如何获得该事件所涉签名系统的访问权限的。
Hoskinson指出币安sweeper代码的安全隐患
Hoskinson于2026年10月30日分享了研究员CyberSatoshi的一份技术分析,并警告称:“小心,外面存在一些极其危险的代码。”
Careful, there is some seriously dangerous code out there.
— Charles Hoskinson (@IOHK_Charles),2026年10月30日
X帖子:https://x.com/IOHK_Charles/status/2116246648716411341?ref_src=twsrc%5Etfw
该分析确认,被称为“Binance 14”的币安钱包是一个定制sweeper合约的目标——此类代码旨在一旦目标地址中有资产可用便自动将其转出。据称,该合约在转移钱包中的ETH时,恰好留下了1 ETH。分析认为,这可能使币安的自动化交易系统在资产被转出的过程中得以继续运行。
该合约还被设计为即使个别代币转账失败也会继续处理转账,而不是让一次失败或被拦截的交易中断整个操作。
涉及约8.23亿美元USDC的外部金库据称可被触及
CyberSatoshi表示,被入侵的执行函数还能够对一个持有约8.23亿美元USDC(一种与美元挂钩的稳定币)的外部金库进行操作。
在10月30日的一篇帖子中,该研究员将从币安EIP-7702 sweeper(标识为 0x63e8…6fae)中重构的字节码描述为专为Binance 14的架构定制开发,而非通用的盗取工具。
分析指出,该合约:
- 在清扫ETH时通过
bal – 1 ether恰好留下1 ether,使币安的自动化热钱包队列不会因gas问题报错或触发警报。 - 使用原始
staticcall和continue循环,以及自定义的SweepItemFailed错误码,确保某个失效或被列入黑名单的ERC-20代币不会使整批约60亿美元的操作回滚。 - 包含一个自定义的
callExecute函数,可冒充Binance 14作为持有8.23亿美元USDC的外部金库的控制者。
热钱包是交易所用于处理日常充提款的联网钱包,此类自动化队列依赖其无错运行。
该分析附带的评论是:“如果逃跑的车开得慢一点,抢劫本可以被阻止。”分析认为,EIP-7702本身不应为该事件承担责任,但它可能加快了攻击的进程。
据CyberSatoshi称,如果没有EIP-7702,从一个交易所在线热钱包中转出64种代币以及外部8.23亿美元的金库,将需要在70多笔交易中管理不断变化的nonce——按照以太坊的规则,来自同一账户的每笔交易必须携带顺序递增的nonce,因此单个地址的转账无法打包为一次提交。该研究员表示,防御系统可能在第三笔交易后就阻止了该操作。
而借助EIP-7702,攻击者据称在单个type-4负载(EIP-7702引入的用于携带授权列表的交易格式)中使用了50个连续nonce,将一个外部拥有账户转换为自定义代理,并在一个区块内原子性地转出了数十亿美元。该帖子将此次操作描述为“精准的国家级工程”,并称“以太坊核心开发者打造了终极逃跑车”。
该研究员还分享了以下代码片段作为该机制的示例:
if (bal > 1 ether) { bal – 1 ether}(“”); }
Reading the reconstructed bytecode of the Binance EIP-7702 sweeper (
0x63e8…6fae) is wild. This wasn’t a generic drainer. It was custom-engineered for Binance 14’s architecture:– Leaves exactly 1 ether behind (
bal – 1 ether) when sweeping ETH so Binance’s automated hot wallet queue wouldn’t error on gas and trip alarms.
– Uses rawstaticcall+continueloops with custom error codes (SweepItemFailed) so one bricked or blacklisted ERC-20 wouldn’t revert the $6B batch.
– Includes a customcallExecutefunction to impersonate Binance 14 as controller of an external vault holding $823M in USDC.They leave a comment: “robberies could be prevented if getaway cars were slower.” You can’t fully blame EIP-7702, but it sped up the attack. Without 7702, draining 64 tokens plus an external $823M vault from a live exchange hot wallet meant fighting moving nonces across 70+ transactions. Defense systems would’ve killed it after tx #3. With 7702, Lazarus sprayed 50 consecutive nonces in one type-4 payload, turned an EOA into a custom proxy, and atomically swept billions in a single block. Ethereum core devs built the ultimate getaway car. Surgical state-sponsored engineering. This could be etched onchain:
if (bal > 1 ether) { bal – 1 ether}(“”); }— CyberSatoshi 𓆙 (@XBToshi),2026年10月30日
X帖子:https://x.com/XBToshi/status/2116097368705937613?ref_src=twsrc%5Etfw
分析还声称,Binance 14知晓该外部金库的相关信息,且被委托的代码可以利用该钱包已授予的授权执行操作。这些说法基于该研究员的重构,尚未得到币安的证实。据报道,独立研究人员已观察到一笔包含由Binance 14签名的50个授权的EIP-7702交易。
EIP-7702可加快执行速度,但无法伪造授权
EIP-7702于2025年5月作为以太坊Pectra升级的一部分激活,它允许外部拥有账户(EOA)将执行委托给智能合约代码。一项授权包含链ID、委托地址、nonce和签名。以太坊在应用委托之前会验证签名。
这一签名要求意味着,EIP-7702不允许攻击者在没有事先获得有效授权的情况下任意接管币安钱包并加载恶意代码。CyberSatoshi的团队表示,攻击者仍需获取相关私钥或获得对币安签名系统的访问权限。
然而,一旦委托获得有效授权,被委托的代码便可能具备广泛的执行能力,因为它在账户的上下文中运行。这一区别是币安事件调查的核心:EIP-7702可能提高了转账的速度和规模,但它并未独立创建签名授权。
以太坊文档已就委托风险发出警告
以太坊官方的EIP-7702文档包含显著的警告:被委托的代码可以获得对账户的完全访问权限,应当经过仔细审计。该规范还指出,如果委托合约设计不当,恶意方几乎可以不受限制地控制签名者的EOA。
这些警告适用于一般意义上的委托,而不仅限于本次事件:任何签署有效授权的账户,都要承担其委托代码所设计行为带来的风险。
因此,币安事件引出了两个不同的安全问题。其一是攻击者如何获得有效的签名密钥或以其他方式获得对币安签名系统的访问权限;其二是在获得该授权之后,委托代码的使用如何影响资产转移的速度和规模。
Hoskinson的警告主要针对第二个问题,而解决第一个问题仍是查明事件原因的关键。
原文来源:https://www.cryptoninjas.net/news/hoskinson-flags-dangerous-eip-7702-code-after-binances-6-3b-crypto-breach/