Value攻击解析:为套740万美元 黑客贷了1.5亿美元
北京时间11月14日23:36,黑客对Value DeFi协议进行闪电贷攻击,损失将近 740 万美金的 DAI。黑客在偷走代币后还留言“do you really know flashloan?”来挑衅开发团队。
1个小时后,Value DeFi官方发推确认:MultiStables vault遭到了一次复杂的攻击,净损失达600万美元。目前正在进行事后分析,并正在探索如何减轻对用户的影响。
CoinGecko行情显示,其VALUE代币自零时开始下跌,最低触及1.87美元,最高跌幅达31.75%,此后稍有回升,现报价2美元。Value DeFi当前锁仓总额3280万美元。
coingecko.com
本次事件与此前的Harvest攻击事件逻辑相似,PeckShield派盾对该事件进行分析认为,本次攻击得逞的原因在于,项目代码在使用基于 AMM 算法的价格预言机上存在漏洞。
我们基于发起攻击的交易(0x46a03488247425f845e444b9c10b52ba3c14927c687d38287c0faddc7471150a)来进行分析。攻击者的恶意攻击合约为(0x675BD0A0b03096c5ead734cFa00C7620538C7C6F)。
步骤1:通过 Aave 闪电贷获得8万个ETH(以460美元计约合3680万美金)。
步骤2:在UniswapV2 闪电贷获得 1.16亿枚 DAI(空手套白狼)。接下来,0x675B 恶意合约会执行如下内容。
步骤3: 将步骤1获得的8万枚 ETH 在 UniswapV2 上换成3,100万枚 USDT。
步骤4: 在 Vault DeFi 上存入2,500万枚 DAI 并获得池子铸造的2,490万 pooltokens。此时 Vault DeFi 协议会铸造出2,495.6万枚新 3crv 代币。
步骤5:在 Curve 上将9,000万枚 DAI 换成9,028万枚 USDC。这一步会影响 Curve上 3pool (也即DAI/USDC/USDT)池子的平衡,进而抬升 USDC 的价格。
步骤6:在 Curve 上将3,100万枚 USDT 换成1,733万枚 USDC,此时可以看到 USDC 兑换价格已经有很大的偏差,完成这一步后,会进一步提升 Curve 上 3pool 池子中 USDC 的价格。
步骤7:在 Value DeFi 上销毁之前铸造的2,490万枚 pooltokens,这部分 pooltokens 又赎回了3,308万枚 3crv(算算可以知道比起铸造多了812.4万枚,这是由于DAI便宜了,所以赎回的3crv变多了)。
接下来,黑客在Curve再度反向操作,大约赚得86万DAI:
步骤8:将1,733万枚 USDC 在 Curve 上换回3,094万枚 USDT。
步骤9:将9,028万枚 USDC 在 Curve 上换回9,092万枚 DAI。
步骤10:销毁 3pool 中的3,308万枚 3crv 来赎回 3,311 万枚 DAI,相比于存款时的代币数量,整整多了815.4万DAI。
最后是剩余步骤:返还 Aave 的闪电贷和 UniswapV2 上步骤2中的代币。
这次攻击之后,黑客返回给 Value DeFi 开发者(0x7Be4D5A99c903C437EC77A20CB6d0688cBB73c7f) 200万枚 DAI,自己则保留了540万枚DAI。
根据PeckShield监测,这次攻击中被盗取的资金现在被存放在钱包 0xa773603b139Ae1c52D05b35796DF3Ee76D8a9A2F 中。Odaily星球日报将继续跟进事态发展。