事件背景
零时科技区块链安全情报平台监控到消息,北京时间2022年10月12日,TempleDAO 项目遭受黑客攻击。损失超237万美元,零时科技安全团队及时对此安全事件进行分析。
攻击信息
攻击者地址:
0x9c9Fb3100A2a521985F0c47DE3B4598dafD25B01
0xd3127a793dAF3AA9424525E893B494D17e798d39
攻击者合约地址:
0x2Df9c154fe24D081cfE568645Fb4075d725431e0
被攻击地址:
0xd2869042e12a3506100af1d192b5b04d65137941
攻击交易:
0x8c3f442fc6d640a6ff3ea0b12be64f1d4609ea94edd2966f42c01cd9bdcf04b5
攻击步骤
1. 攻击者创建攻击合约和oldStaking合约
2. 调用migrateStake()函数,将传入参数设置为攻击者控制的合约地址,将质押金额同步至新合约
3. 调用withdrawAll函数将资金全部取出
4. 将获得的321,154 StaxLP 代币兑换为 1,830 ETH
漏洞核心
在migrateStake()函数中传递的旧的质押地址是由用户自己传入的,在函数中没有对于传入地址的判断,因此攻击者将oldStaking的地址设置为自己控制的合约地址,调用自己合约中的migrateWithdraw()函数,绕过对于质押资金判断,之后执行withdrawall操作成功取出所有资金。
由传入参数可知地址oldStaking确实是由攻击者创建的
资金来源及流向
初始资金由Binance交易所转入用作手续费
攻击者将获利资金转移至地址 0x2B63d4A3b2DB8AcBb2671ea7B16993077F1DB5A0 后目前资金未移动
总结及建议
此次攻击核心主要是新合约在与旧合约同步时没有对于传入的合约地址进行判断。使得攻击者能够传入自己控制的地址进而绕过旧合约中对于质押的判断,直接在新的合约中获得想要的质押数量,之后将质押取出获利。
安全建议
- 建议对方法传参地址进行严格判断
- 建议项目方上线前进行多次审计,避免出现审计步骤缺失