北京时间11月14日23点36分, Value DeFi 的 MultiStablesVault 池子遭受黑客攻击,损失将近 740 万美金的 DAI。
区块链安全公司 PeckShied (派盾)安全人员跟进分析初步发现,造成本次攻击事件的根本原因是项目代码在使用基于 AMM 算法的价格预言机上存在漏洞。黑客在偷走代币后还留言“do you really know flashloan?”来挑衅开发团队。
概要:
整体而言:由于 Value DeFi 协议在使用基于AMM 算法的价格预言机(Curve)来计算代币价格时存在漏洞。 攻击者先通过闪电贷操纵 Curve 上代币的价格,然后再用铸造的 pooltokens 成功提取出了远超原先价值的 3crv 代币。之后,攻击者再将这些3crv 代币在 Curve 上赎回 DAI ,从而完成获利。
整个事件中黑客获利740万 DAI,其中的200万返回给了 Value DeFi,直接获利540万美元。
攻击过程详解:
我们基于发起攻击的交易(0x46a03488247425f845e444b9c10b52ba3c14927c687d38287c0faddc7471150a)来进行分析。攻击者的恶意攻击合约为(0x675BD0A0b03096c5ead734cFa00C7620538C7C6F)。
步骤1:通过 Aave 闪电贷获得8万枚 ETH。
步骤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 池子的平衡,进而抬升 USDC 的价格。
步骤6:在 Curve 上将3,100万枚 USDT 换成1,733万枚 USDC,此时可以看到 USDC 兑换价格已经有很大的偏差,完成这一步后,会进一步提升 Curve 上 3pool 池子中 USDC 的价格。
步骤7:在 Value DeFi 上销毁之前铸造的2,490万枚 pooltokens。由于价格的变化,这部分 pooltokens 赎回了3,308万枚 3crv。
步骤8:将1,733万枚 USDC 在 Curve 上换回3,094万枚 USDT。
步骤9:将9,028万枚 USDC 在 Curve 上换回9,092万枚 DAI。
步骤10:销毁 3pool 中的3,308万枚 3crv 来赎回 3,311 万枚 DAI。
剩余步骤:返还 Aave 的闪电贷和 UniswapV2 上步骤2中的代币。
这次攻击之后,黑客返回给 Value DeFi 开发者(0x7Be4D5A99c903C437EC77A20CB6d0688cBB73c7f) 200万枚 DAI,自己则保留了540万枚DAI。
被盗资产情况:
这次攻击中被盗取的资金现在被存放在钱包 0xa773603b139Ae1c52D05b35796DF3Ee76D8a9A2F 中。 PeckShield 旗下数字资产追踪平台 CoinHolmes 正在对该地址做全方位监控,并对其资金流向做进一步的锁定分析和追踪,以便协助项目方挽回被盗资产。
推荐阅读:
PeckShield:硬核技术解析,bZx协议遭黑客漏洞攻击始末
PeckShield:DeFi平台Opyn智能合约漏洞详解——攻击者空手套白狼!
PeckShield:DeFi平台Balancer遭黑客攻击全过程技术拆解
PeckShield:bZx协议再遭黑客“二连击”背后的技术命门
0x协议漏洞原理剖析:恶意挂单可扰乱正常交易秩序
Uniswap和Lendf.Me遭攻击始末:DeFi乐高组合下的“多米诺”式崩塌
AirSwap智能合约漏洞详解:用户资产可被攻击者恶意吃单?