1.前言
北京时间2022年3月15日,知道创宇区块链安全实验室监测到DeusFinance遭到黑客攻击,损失约300万美元。本文,知道创宇区块链安全实验室对本次事件进行了全面分析。
2.基础信息
攻击者地址:0x1ed5112b32486840071b7cdd2584ded2c66198dd
攻击合约:0xb8f5c9e18abbb21dfa4329586ee74f1e2b685009
DeiLenderSolidex合约:0xeC1Fc57249CEa005fC16b2980470504806fcA20d
甲骨文合约:0x5CEB2b0308a7f21CcC0915DB29fa5095bEAdb48D
交易哈希:0xe374495036fac18aa5b1a497a17e70f256c4d3d416dd1408c026f3f5c70a3a9c
3.漏洞分析
此次事件,漏洞关键在于协议通过StableV1AMM-USDC/DEI交易对在获取价格时被攻击者操控,导致普通用户资产被清算,最终获利。
DeiLenderSolidex合约的清算函数liquidate中,会通过isSolvent函数来判断用户是否应该被清算,而isSolvent调用Oracle.getPrice来问价判断抵押物的价格,因而产生了漏洞
由函数getPrice可知,代币价格算法:+)x10^18/
DEI的代币价格是通过DEI和USDC在池子中的余额进行判断的的,因此攻击者利用闪电贷发起此次攻击,控制了DEI代币的价格。
4.攻击流程
攻击者从SPIRIT-LP_USDC_DEI中闪电贷借出约970万DEI代币,之后再次使用闪电贷从sAMM-USDC/DEI中获取了2477万DEI代币用于操纵价格预言机
随后清算价格操纵后的破产用户
之后偿还闪电贷到sAMM-USDC/DEI中
烧毁流动性代币获取521万USDC和524万DEI
使用521万USDC换取517万DEI
归还从SPIRIT-LP_USDC_DEI中借的970万DEI
最后攻击者将获取的DEI全部换成USDC,总获利约300万美元。
5.总结
本次攻击事件核心是由于价格预言机对代币价格的实现存在问题,使得能够人为的通过池子中代币的余额来对代币价格进行控制,导致了此次事件的发生,建议官方在使用预言机时能够严格控制价格的逻辑实现。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。