非托管 · 只读

EIP-7702 攻击详解

以太坊的 Pectra 升级让一个普通钱包能够临时像智能合约一样运作。盗刷者立刻把它变成了一种旧有授权检测看不见的、全新的一签漏洞利用。

免费扫描你的钱包 在 Telegram 上 24/7 全天候守护

仅需公开地址。无需连接钱包。无需任何签名。

EIP-7702 究竟做了什么

EIP-7702 允许一个普通钱包(一个 EOA)签署一份“授权(authorization)”,把它的执行委托给存放在另一个地址上的代码,从而在委托生效期间把它变成一个类似智能合约的账户。它本意是用于合法的账户抽象升级、批量交易、代付 gas,而无需迁移到一个新地址。

盗刷者如何滥用这份授权

一个钓鱼页面会把同样的这份签名伪装成一次领取、升级或“账户验证”步骤。一旦你签下它,你钱包的执行权现在就被委托给了攻击者的合约。这里没有需要逐个代币签署的单独授权,被委托的代码可以充当你的账户,转走它所持有的一切。

为什么旧有防御会漏掉它

授权扫描器盯的是那些触及代币额度存储的 approve() 和 Permit 调用。一份 7702 授权两者都不做,所以事后撤销授权毫无作用。一份用 chainId 0 签署的委托会同时在每一条公链上有效,这正是一份为大规模盗刷(而非某个单一合法应用)而构造的委托的典型特征。

Guardian 如何在你签名之前拦下它

Veriql 的 Guardian 会解码某个待处理请求中的任何 authorizationList,把 chainId 为 0(全链通用)的委托标记为盗刷者的典型特征,并在你签名之前弹出全屏 STOP 警示,无论目标合约的代码做什么。自 Pectra 上线以来,在已知应用之外观测到的 7702 委托绝大多数都是恶意的,所以请把任何意料之外的委托提示都当作一个停止信号。

常见问题

撤销我的代币授权能撤回一份恶意的 7702 委托吗?

不能。委托并不触及额度存储,所以那里没有什么可撤销的。要撤回它,意味着从同一个钱包签署一份新的授权,让委托重新指向空,如果钱包已被完全入侵,这未必总是可行,这也正是把剩余资产转移到一个全新钱包才是更安全默认做法的原因。

EIP-7702 本身危险吗?

不危险:它是以太坊的一次合法升级。风险与其他每一种盗刷手法完全相同:被诱骗为别人的合约签下某样东西。只不过这种签名更新,所以起初盯着它的工具更少。

相关内容