霍斯金森警告EIP-7702可能带来的风险,指责其助长Binance热钱包攻击

3 小时前
閱讀 5 分鐘
7 視圖

查尔斯·霍斯金森的警告

Cardano创始人查尔斯·霍斯金森对“极其危险的代码”发出了警告,并分享了一份分析,指责以太坊的EIP-7702委托功能帮助攻击者迅速清空了Binance的热钱包。

分析内容

在他的X平台帖子中,霍斯金森写道:“小心,外面有一些极其危险的代码。”他分享的帖子由CyberSatoshi发布,描述了一个涉嫌与Binance EIP-7702相关的清扫器的重构字节码,认为该合约是为该交易所的操作量身定制的。

霍斯金森的附带信息没有指出具体的协议缺陷,也没有解释他支持分析的哪一部分。

安全问题

CyberSatoshi的账户将两个安全问题并列在一起:一个是攻击者如何获得对钱包的操作权限,另一个是以太坊的委托功能在攻击者获得权限后允许其做了什么。

根据CyberSatoshi的分析,重构的合约在清扫其本地余额时,钱包中恰好留下了1 ETH。该帖子认为,这防止了Binance的自动热钱包队列因燃料不足而失败,从而引发警报。

代币处理循环

分析描述了一个代币处理循环,通过低级调用检查余额,并在单个操作失败时继续进行。CyberSatoshi表示,这使得清扫器能够继续处理资产,即使某个被列入黑名单或因其他原因无法响应的代币无法转移。

一个自定义执行函数的数据使被攻击的钱包调用一个持有8.23亿美元USDC的外部保险库。在该帖子的解释中,保险库将Binance 14视为其控制者,允许通过该钱包进行的调用访问其即时余额之外的资金。

EIP-7702的规范

以太坊的EIP-7702规范描述了一种交易类型,允许外部拥有账户将执行委托给部署在另一个地址的代码。外部拥有账户通常通过其私钥的签名进行操作。委托使其能够在自己的账户上下文中执行智能合约逻辑,支持将多个操作批量处理为一个交易,并允许另一个账户支付交易费用。

每个授权都标识一个链、一个委托地址和一个随机数(nonce),以及一个加密签名。该协议从该签名中恢复授权账户,并在应用委托之前检查其随机数。

攻击的可能性

CyberSatoshi承认了这一要求,称涉嫌攻击需要原始私钥或对Binance 14安全基础设施的无限制签名访问。该规范并未说明任何Binance签名凭证是如何获得的。其签名要求确立了委托不能仅仅在没有有效授权的情况下分配给任意受害者账户。

CyberSatoshi声称攻击者提交了50个预签名的授权,涵盖连续的随机数,以在Binance 14的交易计数变化时捕获它。该规范按顺序处理授权。当授权未通过检查时,处理将继续进行下一个条目。有效条目设置委托并增加授权账户的随机数。

安全审计的重要性

因此,对于同一账户的连续授权可以随着随机数的增加而变得有效。当存在多个有效条目时,最后一个有效的委托决定使用的代码地址。这比仅能生效一个授权的批处理更为具体。规则允许多个连续条目成功,具体取决于账户的起始随机数和提供的签名。

CyberSatoshi认为,委托将资产转移压缩为单个操作,从而减少了干预的时间。该帖子的另一个主张是,交易所的防御措施本来会在三笔交易后阻止盗窃,这是该帖子的反事实评估。

EIP的作者明确警告,授权代码对账户具有无限制访问权限,必须由钱包进行严格审计。

总结

其安全部分列出了委托合约所需的保护措施,包括重放防护和涵盖交易价值、燃料、目的地和调用数据的签名。实施不当的委托可能使攻击者几乎完全控制签名账户。委托在安装它的交易之外持续存在。该规范进一步指出,执行失败不会回滚已经处理的委托指示。要移除委托,协议允许指向零地址的有效授权,从而清除账户的委托代码。