零时科技 | Audius 金库 1850 万枚 AUDIO 被盗事件分析

零时科技2022-07-26 17:00




0x1 事件背景

零时科技区块链安全情报平台监控消息,北京时间 2022 年 7 月 24 日,Web3 音乐流媒体服务平台 Audius 社区金库被黑客攻击,损失 1850 万枚 AUDIO Token,黑客地址 0xa0c7BD318D69424603CBf91e9969870F21B8ab4c。零时科技安全团队及时对此安全事件进行分析。



0x2 攻击信息

  • 攻击者地址

0xa0c7BD318D69424603CBf91e9969870F21B8ab4c

  • 攻击交易

0xfefd829e246002a8fd061eede7501bccb6e244a9aacea0ebceaecef5d877a984

0x3c09c6306b67737227edc24c663462d870e7c2bf39e9ab66877a980c900dd5d5

0x4227bca8ed4b8915c7eec0e14ad3748a88c4371d4176e716e8007249b9980dc9

  • 攻击合约

0xa62c3ced6906b188a4d4a3c981b79f2aabf2107f

0xbdbb5945f252bc3466a319cdcc3ee8056bf2e569

  • 被攻击合约 Governance

0x35dd16dfa4ea1522c29ddd087e8f076cad0ae5e8



0x3 攻击步骤

1. 攻击者部署攻击合约

2. 攻击者通过 evaluateProposalOutcome 方法评估目前 84 提案是否通过(84 提案由攻击者发起,但缺少提案通过的条件)

发起新的提案 85,提案内容是通过 transfer 方法转移给 0xbdbb5945f252bc3466a319cdcc3ee8056bf2e569 转移大量资金。

4. 调用 Staking.initialize 初始化方法将攻击者合约地址设置为管理员地址(重点:攻击者为什么能调用初始化方法)

5. 调用 DelegateManagerV2.initialize 初始化方法更新管理员地址

6. 调用 DelegateManager.setServiceProviderFactoryAddress 方法更新 serviceProviderFactoryAddress 地址

7. 调用 delegateStake 方法给攻击者合约地址委托大量投票

8. 攻击者调用 submitVote 方法进行投票

9. 攻击者调用 evaluateProposalOutcome 方法评估 85 提案通过并成功完成转账。



0x4 攻击核心

初始化 Initializable contract

initializer() 修饰符判断中的三个条件:

initializing:初始为 false,方法执行结束后也是 false。

isConstructor():初始部署合约时,代码在运行构造函数时仍未部署,对其代码大小的任何检查都会产生零。

!initialized:初始为 true,满足条件,方法执行结束后修改为 false,不能进行二次调用。

正常调用初始化合约,经过 initializer 修饰的方法只能调用一次,这里攻击者在多个合约中都进行了调用,什么情况?

Audius 平台存在代理合约, Governance 合约由代理合约进行调用,部署时 Governance 合约会调用初始化合约中的修饰符。

初始化的结果是确定了 governanceAddress 地址,该地址存在第一个卡槽,并且此次初始化的修饰符条件中,变量的布尔值也存储在第一个卡槽,由此发生了存储冲突,之后的结果是 initializing 变量恒为 true。initializer() 修饰可多次调用。



0x5 资金来源及流向

5.1 资金来源

攻击者资金来源于 Binance 链上 Tornado.Cash 混币平台

5.2 资金流向

目前攻击者已将获利资金转移至 Tornado.Cash 混币平台


0x6 总结及建议

通过此次攻击来看,虽然 openzeppelin 官方的代理模式中声明了多种存储冲突的模式,但当多种逻辑组合在一起时,也会发生意外的存储冲突。目前 Audius 官方已在初始化修饰中增加了判断条件,防止二次利用,并在初始化合约中增加了存储参数。

安全建议

  • 建议存在代理的合约在上线前对存储冲突问题进行专项审查

  • 建议项目方上线前进行多次审计,避免出现审计步骤缺失



出品 | 零时科技安全团队

往期内容回顾


区块链安全 100 问 | 第一篇:区块链安全是什么

【喜报】零时科技参与编制的《区块链关键服务安全技术要求》标准成功发布

零时科技 | Fortress 攻击事件分析

Beanstalk Farms 攻击事件分析 | 零时科技

为什么黑客如此“钟爱”跨链桥

零时科技 | Agave Finance 攻击事件分析

Hundred Finance 攻击事件分析 | 零时科技

零时科技 | 被盗 6.1 亿美金,Poly Network 被攻击复盘分析

喜讯|零时科技完成天使轮 800 万元融资,持续深化区块链生态安全布局

Popsicle 攻击事件复盘分析 | 零时科技

黑客大揭秘!扫码转账即可控制你的数字钱包

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

来源链接

相关Wiki

相关标签