深度还原 7702 钓鱼攻击原理,钱包和用户该如何防范?

2025-06-05 gate交易所

EIP-7702赋予了地址类似智能合约的能力和灵活性,越来越多的7702应用正在不断被创造出来,这对让更多的人进入Web3和提高用户体验至关重要。

然而,7702的灵活性以及大多数用户对7702还不熟悉的现状正在被欺诈团伙利用,近期我们观测到有用户就因为Metamask7702批量执行的能力而导致原本需要授权十几次的交互,被钓鱼团伙#InfernoDrainer合并成一笔交易完成,导致资产被盗。

说明:Metamask本身没有安全问题,Metamask在为用户提供7702相关能力时是把用户安全放在第一位的,并且做了很多安全措施。用户需要对7702的能力和相关风险了解更多,以防止此类安全事件再次发生。

一、Metamask7702Delagator签名授权原理与安全设计1.技术分析

由用户授权已部署的DelegatorContract,将用户账户的code字段指向该合约。当前MetaMask官方DelegatorContract地址:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B

授权结构:(chainId,delegatorAddress,nonce,signature)写入authorization_list

签名方式:Metamask底层对EIP-7702相关的授权交易采用统一的签名逻辑,即signEIP7702Authorization方法,对授权数据digest7702=keccak256(0x05‖RLP(chainId,delegator,nonce))进行ECDSA签名,生成(v,r,s)签名结构,并附加到随后的Type-4交易中,实现账户的授权与升级,具体实现见:https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-eip7702-authorization.ts

验证方式:共识层通过ecrecover(digest7702,sig)==tx.from完成验证。

安全设计:网页端无法诱导用户对任意的Delegator进行授权,因为signEIP7702Authorization方法仅在MetaMask钱包内部实现,不通过window.ethereum对网页端开放调用**。**网页可访问的签名方法如eth_signTypedData_v4并不适用于EIP-7702授权签名,其签名格式如下:

而EIP-7702规范要求的签名格式为:

由于eth_signTypedData_v4固定包含0x1901前缀,且计算过程与7702完全不同,因此即使构造巧妙的domainSeparator、primaryType和message,也几乎不可能使得digest712==digest7702。

因此,网页端无法通过该方法伪造合法的7702授权签名。此外,MetaMask还对Delegator地址实行白名单机制,默认且仅允许授权官方Delegator(0x63c0...32B),禁止DApp自行注入地址,进一步防止用户被诱导签名恶意Delegator授权数据。

2.使用方法

当前在Metamask中,将现有EOA升级为7702智能账户(SmartAccount)的方式主要分为两类:主动升级与被动升级。

主动升级是指用户在钱包界面主动点击“切换”按钮,授权特定的DelegatorContract。

被动升级则发生在用户与某些支持7702的DApp交互时,Metamask检测到相关操作后会自动弹出提示,建议用户完成升级。

2.1主动升级:

交易内容:仅包括升级改账户的动作,即授权特定的DelegatorContract。

升级流程:进入钱包的账户详情界面,点击下图中的切换按钮,即可将用户在EthereumMainnet升级为智能账户。点击切换之后,出现用户签名当前升级交易窗口:

授权记录:确认后,等待交易上链,上链成功意味着用户成功升级为智能账户,可以从etherscan上当前钱包地址的页面中的**Authorizations(EIP-7702)**查看具体的授权交易信息。

2.2被动升级

交易内容:包括升级账户的动作以及与链上合约交互的批量动作。

升级流程:在用户与链上某些DApp交互时,Metamask会主动提示用户当前交易可以通过升级成智能账户使用批量发送的方式来完成.例如在Uniswap上进行某些token的swap,点击Usesmartaccount按钮,升级成智能账户,之后代币授权和Swap将在一笔交易中批量完成。

2.3切换回普通EOA

无论采用主动升级还是被动升级的方式将当前账户转换为智能账户,其绑定的DelegatorContract地址都会永久存储在链上,作为账户当前的执行逻辑。

若用户希望将账户恢复为普通EOA,需要手动发起一次“切换回EOA”的操作。该操作的本质是:通过一次EIP-7702授权,将address(0)作为新的Delegator合约地址提交。当该交易成功上链后,账户的code字段将被清空,执行逻辑恢复为默认的空代码,账户即回退为普通EOA状态。

进入钱包的账户详情界面,点击切换按钮,即可将用户在EthereumMainnet切换回普通EOA账户。

点击确认后,等待交易上链,上链成功意味着用户已经从智能账户切换回了普通的EOA账户,具体的交易信息同样可以在etherscan上当前钱包地址页面中找到。

二、7702钓鱼攻击实例

5月24日,#InfernoDrainer钓鱼团伙利用Metamask7702-Delagator合约的批量执行功能批量骗取了用户(0xc6D2…06DC)的代币授权,并实施了钓鱼攻击,损失超14.6万美元的$HashAI$HUMANS$ParallelAI$NeuralAI$DSync$Zero1$NodeAI$Sensay$Virtual.

欺诈地址

0x0000db5c8B030ae20308ac975898E09741e700000x00008C22F9F6f3101533f520e229BbB54Be900000xa85d90B8Febc092E11E75Bf8F93a7090E2ed04DE0xC83De81A2aa92640D8d68ddf3Fc6b4B853D773590x33dAD2bbb03Dca73a3d92FC2413A1F8D09c34181

钓鱼交易示例

https://etherscan.io/tx/0x09c264618e93983510aaeb7aa2c91c8254a8b2ec66167438f3f6c28b866b6eba

被钓鱼原因

用户(0xc6D2…06DC)执行了恶意批量授权交易:

EthereumTransactionHash:0x1ddc8cecbc...|EtherscanCall0xe9ae5c53MethodBy0xc6D289d5...0d2E606DCon0xc6D289d5...0d2E606DC|Success|May-23-202502:31:35PM(UTC)

etherscan.io

#InfernoDrainer和#PinkDrainer正在实验更隐蔽、影响更大的利用7702的钓鱼黑色产业链。

根据我们的研究,目前钓鱼黑产团伙#InfernoDrainer和#PinkDrainer都正在研究并实验更隐蔽、影响更大的利用7702的钓鱼黑色产业链,相关地址如下,我们也将在后续公布更详细的报告:

InfernoDrainer:

0x0000db5c8B030ae20308ac975898E09741e70000

PinkDrainer:

0xe49e04F40C272F405eCB9a668a73EEAD4b3B5624

三、安全建议

钱包提供商:

参考Metamask对于7702Delegator的实现和安全管理,禁止用户对任意的Delegator授权,并且只允许应用内操作。提醒用户任何通过网页让用户进行签名授权的行为都是钓鱼攻击。

检查链是否与当前网络匹配,并提醒用户使用chainID为0签名时存在重放风险。

在用户签名授权时显示目标合约,在用户通过Delegator进行批量执行时显示具体的函数调用内容,降低网络钓鱼攻击的风险。

用户:

私钥保护始终是最重要的。Notyourkeys,notyourcoins.

不要根据任何独立的网页进行Delegator授权,安全的授权通常只会像Metamask一样在应用内进行。

在使用任何钱包进行签名时,请仔细看清签名内容,避免盲签或误签。

风险提示

登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。

本站为您提供gate交易所的注册地址、加密货币及区块链的科普文章以及行业资讯等内容.