目前分析经过:
Lemonadeccc钱包在web3实习计划时候注册了新助记词的metamask用来开发。在休闲黑客松活动中,代码文件中的.env文件的私钥字段在8.22凌晨左右在团队成员的commit中被上传,由于代码仓库是开源的,期间黑客已经通过开源的github repo中扫描到了私钥。于8.22凌晨三点左右使用私钥授予权限并测试交易,可以在受害者地址中看见transfer上带了星号,具体这个携带的Input并不明确是什么意思,可能是黑客用于攻击之前的试探,未来需要更专业的人士去分析。而后于8.29日在检测到奖金打入后执行资产转移。偷盗者地址相关交易里面混杂了很多地址交易,大家还是要警惕起来。
猜测造成泄露原因:
1.选择手动管理私钥,在代码中暴露私钥信息
2.env文件在gitignore未被忽略,测试钱包私钥上传公共github repo
3.已经得知泄露的开发测试钱包用于接收获得的奖金
以下为EIP7702的简易资料:
EIP7702具备在协议层将EOA赋予临时执行智能合约代码的能力。实现原理是通过在交易中设置授权字段允许≥1个账户签名授权,可以将账户代码临时设置独一个指定合约地址,然后在交易中生效委托,实现批量交易及gas费代付等操作。这个协议本意旨在即使私钥泄漏后临时执行安全策略合约保障资金安全,目前多用于盗币团伙。以下为目前EIP7702相关统计数据,截止目前为止还有超过一半的7702协议委托还是用于黑客盗币。
用户防范方法:
- 自查自己交易中看看是否有委托地址
- 保护私钥及助记词!!!
- 仔细审查签名
- 防范授权(各种不明网站授权)操作
- 前些天还在X上看到有人在JD买的冷钱包丢了一个多比特币 ><
开发者防范方法:
开发dapp时在前端与钱包交互不需要在代码中硬编码私钥!不需要硬编码私钥!不需要硬编码私钥!
可以通过钱包链接库来进行连接
- 如果你选择手动管理私钥,那么切记!!勿将.env内私钥上传至github repo!
- 确保钱包在初始化期间执行权限检查
- 遵循 ERC-7201 中提出的命名空间公式,以缓解存储冲突、不要假设 Tx.Origin 始终是外部拥有账户(EOA),使用 Msg.Sender == Tx.Origin 作为防御重入攻击的手段将不再有效
- 确保用户委托的目标合约实现了必要的回调函数,以确保与主流代币兼容
PS:在项目设计阶段自己博客里写了防范AI APIKEY被打野,想着ai apikey就有限余额没管,结果钱包的KEY被泄露了,属于回旋镖镖到自己了,大预言家啊TT。
