根据您提供的信息,以下是关于慢雾安全团队提出的账户抽象钱包(基于EIP4337标准)安全审计检查项的详细解读和总结:
-
兼容性检查:
- 审计人员需确保账户抽象钱包合约兼容所有EVM兼容链。由于Ethereum主网在上海升级后增加了
PUSH0
字节码,审计人员应检查合约编译使用的Solidity版本,或确认编译后的文件是否包含PUSH0
字节码。建议使用小于0.8.20版本的编译器,或指定编译版本为paris
。
- 审计人员需确保账户抽象钱包合约兼容所有EVM兼容链。由于Ethereum主网在上海升级后增加了
-
接口实现与返回值检查:
- 审计人员需确认钱包合约实现了EIP4337规定的核心接口,并且
validateUserOp
函数的返回值validationData
包含三个必要的值:authorizer、validUntil和validAfter。 - 同样,代付合约Paymaster也需实现相应的接口,并且返回值也应包含这三个值。
- 签名验证失败时,authorizer应返回
SIG_VALIDATION_FAILED
(即1值),验证成功时返回SIG_VALIDATION_SUCCESS
(即0值)。
- 审计人员需确认钱包合约实现了EIP4337规定的核心接口,并且
-
调用者可信性检查:
- 审计人员需确保钱包合约中的关键函数,如
validateUserOp
、executeUserOp
、validatePaymasterUserOp
、postOp
等,只允许可信的EntryPoint调用,以防止未授权的使用。
- 审计人员需确保钱包合约中的关键函数,如
-
手续费支付功能检查:
- 审计人员需检查钱包合约中的
validateUserOp
函数是否实现了向EntryPoint合约转账所需的原生代币金额的逻辑。
- 审计人员需检查钱包合约中的
-
钱包创建方式检查:
- 审计人员需确认钱包创建过程中使用了
CREATE2
,以确保创建地址不受创建顺序的影响。
- 审计人员需确认钱包创建过程中使用了
-
重复创建钱包的返回值检查:
- 审计人员需确保对于已经创建的钱包,如果传入相同的数据,应返回同一地址,以简化客户端查询地址的过程。
-
钱包接管风险检查:
- 审计人员需检查在钱包创建前,是否存在可能导致钱包被接管的漏洞或机制。
这些检查项旨在帮助审计人员全面评估基于EIP4337标准的账户抽象钱包的安全性,确保钱包在多方面都符合安全标准,从而保护用户的资产安全。在进行安全审计时,审计人员应结合具体的技术细节和业务逻辑,细致地进行每一项检查。
Views: 0