北京时间2022年4月28日10:40:14 ,CertiK审计团队监测到DEUS Finance的合约被恶意攻击,造成了约1570万美元(折合人民币约1.03亿)的损失。
攻击者恶意操纵DEI的价格,从DeiLenderSolidex合约中通过提供少量的抵押品提取了大量的DEI。
漏洞交易
https://ftmscan.com/tx/0x39825ff84b44d9c9983b4cff464d4746d1ae5432977b9a65a92ab47edac9c9b5
攻击步骤
①攻击者部署攻击合约并向借贷池DeiLenderSolidex合约提供抵押。
②随后攻击者利用攻击合约获得了超过143,200,000 USDC用以发起攻击。
③攻击合约将这143,200,000 个借得的USDC在USDC/DEI交易对池0x5821573中换为9,547,716个DEI,此举导致DEI的价格被大幅提高。
④由于DeiLenderSolidex合约是用预言机来确定用户抵押品的价值,而预言机合约使用被恶意操纵的交易对池的价格作为价格来源。因此通过提高的价格和之前提供的抵押,攻击者可从借贷池(DeiLenderSolidex)中总计借贷到17,246,885 DEI,这一数额远大于之前攻击者提供抵押的金额。
⑤攻击者用9,547,716个 DEI交换到的143,184,725 USDC来偿还闪电贷款,最终获取差价离场。
漏洞分析
通过闪电贷,攻击者能够操纵交易对的状态,并进一步操纵DEUS的预言机价格,以此利用不对等的价值借贷DEI。
资产去向
截至撰稿时,黑客已将攻击所得转到以太坊上并换成ETH,随后将5,446个ETH(总价值约1570万美元)存入Tornado Cash。
https://debank.com/profile/0x701428525cbac59dae7af833f19d9c3aaa2a37cb/history
写在最后
预言机合约不应该直接使用交易对池中的价格作为价格来源,而安全审计可以有效地避免这一风险。
CertiK安全专家建议:如果只有代币合约被审计,这种情况在审计过程中将会指出第三方依赖风险。项目应该避免直接从交易对池中获取价格。建议根据项目的逻辑,使用更值得信任的预言机:
1. 使用多个可靠的链上价格预言机来源,例如Chainlink和Band协议。
2. 使用时间加权平均价格(TWAP)。TWAP代表了一个代币在特定时间范围内的平均价格。因此如果攻击者仅操纵一个区块的价格并不会对平均价格产生太大的影响。
3. 如果合约模式允许,将函数调用者限制在一个非合约/EOA地址。
4. 闪电贷款只允许用户在一次交易中进行借贷。如果合约用例允许,可强制关键交易至少跨越两个区块。