北京时间2022年8月2日13点,CertiK安全团队监测到Reaper Farm的ReaperVaultV2合约被恶意利用,导致了价值超过160万美元的损失。
攻击者利用ReaperVaultV2合约中的一个漏洞——可以销毁其他用户的vault share并提取代币,以此从多个vault提取了大量的代币。
截至北京时间2022年8月3日8点,160万 DAI、62 ETH以及200 Matic已被存入TornadoCash。
攻击步骤
① 攻击者部署了一个攻击者合约,通过该合约,攻击者可在一次交易中从Reaper vault提取多个用户的资产。
② ReaperVaultV2合约并未检查share owner与message sender之间的关系,因此攻击者可以多次通过攻击者合约提取vault用户的资产。
③ 攻击者将从金库提取的代币换成DAI、ETH和Matic,并将其存入TornadoCash。
漏洞交易
漏洞交易之一:
https://ftmscan.com/tx/0xc929f3b9312ff26be0adb1c3ff832dbdafdcbcaad33d002744effd515e53c9d5
其余漏洞交易:
https://ftmscan.com/address/0x5636e55e4a72299a0f194c001841e2ce75bb527a
漏洞分析
在ReaperVaultV2合约的`withdraw()`函数中,vault share所有者可以是msg.sender以外的账户。同时,所有者与msg.sender之间的关系或是allowance未被选中,意味着人们可以从vault提取其他用户的资产。
写在最后
本次攻击事件本可通过审计发现「缺乏访问控制」这一风险因素。该风险因素将被归类于严重等级的风险。
而除审计外,CertiK安全团队建议新增的代码也需要在上线前及时进行相应测试。