事件概述
北京时间 2022 年 7 月 24 日,Web3 音乐流媒体服务平台 Audius 的社区金库遭到黑客攻击,被盗 18,500,000 枚 AUDIO 代币。黑客地址为 0xa0c7BD318D69424603CBf91e9969870F21B8ab4c,随后将代币通过 Uniswap 兑换为 ETH 并经由混币器洗白。
攻击手法
Audius 采用可升级代理合约,但
initialize()函数未被正确锁定。攻击者利用存储槽冲突,将自己设置为合约的
owner。以 owner 身份发起恶意治理提案,提案内容为从社区金库划转 1850 万 AUDIO 至攻击者地址。
通过自有质押权重通过提案并执行,完成资产转移。
漏洞根因
代理合约升级模式下,未使用 initializer 修饰符保护关键初始化函数,同时存储布局发生偏移,使攻击者得以重置核心权限变量。资金流向
经零时科技链上追踪:被盗 AUDIO 部分通过 Uniswap V2 池兑换为约 705 ETH,剩余代币仍滞留在攻击者地址,后续已部分通过 Tornado Cash 进行混币。
安全建议
OpenZeppelin 可升级合约必须使用
initializer/reinitializer修饰符。升级前需对新旧合约的存储槽布局进行严格校验。
DAO 治理合约应引入时间锁 Timelock,为异常提案留出响应窗口。
部署链上治理监控,对大额资金提案实施告警。