EIP-7702 盗币工具:那份等着被用的签名

10月14日,一个持有 ENS 名称 sven.eth 的钱包丢了 9.12 ETH,约 22,770 美元,外加一小堆 TAPEETH 代币。钱包主人没有发出任何交易。安全公司 ExVul 当天就在 X 上发出警报,并把这件事追溯到主人此前某个时刻做过的一件事:签了一份 EIP-7702 授权。攻击者是怎么拿到这个签名的,并不公开。公开的是他拿到之后做了什么。他把签名留着,等,然后自己把它提交上链,还付了 gas。
整个把戏就是这样。也正因如此,这一类盗币工具和你以前读到过的代币授权骗局不是一回事。
EIP-7702 到底做了什么
自 2025 年 5 月 7 日以太坊 Pectra 升级以来,一个普通钱包可以"借用"某个智能合约的代码。你签一份很短的授权,里面写明一个合约地址;它通过一笔类型 4 的"set code"交易上链;从那以后,只要你的账户被调用,它就会运行那个合约的代码。你的地址不变。你的私钥照常可用。这个功能有正当用途:gas 代付、把几个操作打包成一次点击、账户恢复。MetaMask、Rabby 等钱包把它做成了一个"智能账户"开关。
对安全来说,有三个细节要紧。
授权非常小。链 ID、合约地址、nonce、你的签名。里面没有任何一个字说明这个合约会做什么。
谁都可以提交它。签好的授权可以塞进攻击者发出的交易里,手续费由攻击者付。你的钱包里永远不会出现一笔待确认的交易。等你去看的时候,余额已经没了。
它会留下来。一旦设置,委托就一直挂在你的账户上,直到你替换或清除它。之后落到这个地址的每一枚代币,都会先经过攻击者的代码。
等着下手的清扫合约
Wintermute 的研究团队在 2025 年 5 月查看了 7702 委托上线后的头几周,发现其中超过 97% 指向同一个短小合约的副本。他们给它起了个绰号:CrimeEnjoyor。它的活很枯燥:守在一个地址上,把任何进来的 ETH 转给攻击者。这些早期的清扫合约大多装在私钥早已泄露的钱包上,Wintermute 还指出,攻击者花了大约 2.88 ETH 去授权约 79,000 个地址,几乎没捞回什么。
真正赚钱的是钓鱼版本。2025 年 8 月,有人签了一笔看起来像 Uniswap 兑换的操作,在一次批量执行里丢掉了 154 万美元的 wstETH、cbBTC 和 NFT,据 Scam Sniffer 统计。同月另一起案件损失 100 万美元。Scam Sniffer 的 2025 年报告统计全年钓鱼损失 8,385 万美元,受害者 106,106 人,并把 7702 批量签名列为随 Pectra 一同出现的攻击手法。
2026 年 8 月在 USENIX Security 上发表的一项学术研究把规模记在了案上。来自香港科技大学、南开大学、中山大学和岭南大学的研究者在七条链上整理出 924 个恶意委托合约。他们数据集中超过 63% 的 7702 授权交易与针对普通钱包的攻击有关,被授权次数最多的合约中近一半由攻击者控制。他们统计到超过 230 万美元的已确认损失,以及超过 1,000 万个暴露在风险中的账户。
与此同时,BundleBear 的看板显示,截至 10 月下旬大约有 6,700 万个智能账户,也就是设有委托的地址。其中大多数是正当的。从外面你分不出哪个是哪个。
为什么"以后"才是危险所在
sven.eth 这个案子展示了零售规模下的套路。被委托的代码里写死了一个控制者地址。这个控制者调用了 PodMining 的领取函数,拿走 TAPEETH 奖励,再把 ETH 提走。ExVul 确认协议本身没有漏洞,也没有闪电贷。只有一个签名,在攻击者挑好的时刻被用了出来。截至区块 26,188,153,这个委托仍然有效。
有两件事让这种延迟成为可能。授权里带着你钱包的 nonce,所以只要你自己不发交易,它就一直有效。一个你几周不碰的钱包,恰恰就是那个一直可以被利用的钱包。而清扫合约一旦装上,也不着急。下一笔进来什么,它就拿走什么。
第二个特性还有个残忍的副作用。受害者得知自己的钱包被委托后,常常会先转一点 ETH 进去当修复的手续费。还没等修复交易发出,清扫合约就把这点 ETH 拿走了。
怎样检查你自己的钱包
在 Etherscan 上打开你的地址。普通钱包没有代码。被委托的钱包会显示一个 23 字节的代码字段,以 0xef0100 开头,后面跟着它指向的合约。如果你从来没打开过任何智能账户功能,答案就在这里。
Revoke.cash 有一个 Delegations 标签页,用大白话列出同样的信息。它没法替你移除委托,其他任何网站也不行。大多数钱包都禁止外部应用碰这个设置,这是正确的设计。
移除要在钱包里完成。在 MetaMask 中,它位于账户详情页,是一个智能账户开关,按网络逐个关闭,不过各版本的叫法不一样。Rabby 把它和授权列在一起。在协议层面,修复办法是签一份新的授权,指向零地址。它会清掉代码指针,不过攻击者合约写进存储的内容会留下来。
什么时候清除还不够
如果委托是你自己设的,而且你认得那个合约,留着就好。如果不是,就把这个钱包当作已被攻破,而不是配置错了。一个来历不明的委托意味着你签了不该签的东西,同一套钓鱼工具明天还能再让你签一次。把剩下的资产转到一个新助记词的钱包,把旧地址弃用。不要先往旧地址转 gas。
地址不是你的时候,同样的逻辑反过来用。一个被清扫过的钱包在链上有明显的形状:资金一进来几乎立刻就走,而且总是去同一个地方。如果一个你不认识的人即将付钱给你,或者你即将付钱给对方,在资金动起来之前先把地址查一遍。盗币工具的归集地址是分析公司在受害者举报后最先打上标签的东西之一;一个资金经过这种地址的交易对手,是你宁愿在转账之前就发现、而不是事后才发现的问题。
签名提示没告诉你的事
硬件钱包保护的是私钥。它不会替你判断把账户代码交给陌生人是不是好主意,而请你这么做的那个提示,就是照着普通领取或兑换的样子设计的。凡是提到委托、授权、智能账户或批量执行的请求,都读两遍。陌生网站上任何免费、免 gas 或"代付"的操作,都是关掉标签页的理由。
把你在乎的钱放在一个从未签过 7702 授权、也从不访问 dApp 的钱包里。其余的用另一个热钱包。这是条老规矩,而这是遵守它的最新理由。
sven.eth 的主人因为一个没人记得签过的签名,丢了大约 22,000 美元。本可以抓住它的那次检查,只需三十秒,而且不花一分钱。
参考来源
- 1.EIP-7702: Set Code for EOAs — Ethereum Improvement Proposals
- 2.Prague-Electra (Pectra) upgrade — ethereum.org
- 3.Wintermute's 'CrimeEnjoyor' to flag Ethereum's wallet-draining contracts — Cointelegraph
- 4.Scam Sniffer 2025: Crypto Phishing Losses Fall 83% to $84 Million — Scam Sniffer
- 5.Revealing the Dark Side of Smart Accounts: An Empirical Study of EIP-7702 Incurred Risks in Blockchain Ecosystem — USENIX Security '26
- 6.EIP-7702 Metrics — BundleBear
- 7.Ethereum user loses $22K in EIP-7702 wallet attack — crypto.news
- 8.How to switch to or revert from a smart account in MetaMask — MetaMask Support
本文仅为一般信息,不构成法律、税务、财务或投资建议。加密货币存在风险——请自行核实并在采取行动前咨询专业人士。Constatum 不保证其准确性或完整性,也不对据此作出的决定承担责任。
本文由 AI 翻译,可能存在不准确之处。以英文原文为准。


