2023年3月13日,EulerFinance资金池遭遇闪电贷攻击,预计损失总计约1.95亿美元。这一数字也是2023年迄今为止Web3领域所有其他安全事件资产损失总额的两倍以上。
根据EulerFinance对自己描述,该平台是“以太坊上的一个允许用户借出和借入几乎任何加密货币资产的非托管协议”。
造成该攻击的
原因主要是EulerPool合约中的`donateToReserve`存在漏洞。由于该功能缺乏对调用者仓位健康度的检查,用户可以通过自主放弃一部分杠杆存款,使自身仓位失衡,从而使用Euler特色的清算规则清算自己的仓位而获利。
攻击者利用闪电贷借来的资产,首先通过Euler借贷协议中独特的`mint'功能以及Euler资金池合约中易受攻击的'donateToReserves'功能创建了一个高杠杆且资不抵债的状况。随后攻击者在同一笔交易以清算者的身份清算自己创建的资不抵债的仓位“免费”获得大量衍生eToken。最后通过提款耗尽资金池,并在多个EulerPools反复实施攻击,以耗尽所有资金池。
在所有流入交易所的代币中,很少有人锁定了任何明显的利润或损失:金色财经报道,glassnode发推表示,在所有流入交易所的代币中,很少有人锁定了任何明显的利润或损失。大多数送到交易所的代币是以非常接近当前现货价格的价格获得的,而且鉴于短期持有者的主导地位,很可能是最近获得的。这说明了一定程度的信心(投资者总体上没有被新闻所动摇),但也有冷漠(目前的价格范围没有足够的动机去消费)。[2023/6/16 21:41:46]
下面是对某一资金池的攻击流程,还有其他四个具有相同漏洞的资金池也被攻击了。
攻击流程
①攻击者从AAVE闪电贷到3000万DAI。
②攻击者通过eDAI合约向Euler存入2000万DAI,并收到2000万eDAI。在攻击者存入2000万DAI之前,Euler池中的DAI余额为890万。
BTC相对未实现损失达到4个月低点:金色财经报道,Glassnode数据显示,BTC相对未实现损失(7日移动平均)刚刚达到0.010的4个月低点。[2021/10/10 20:17:27]
③调用`eDAI.mint()`。该特定的`mint`功能是EuleFinancer独有的,可允许用户反复借款和还款。这是一种创建借贷循环的方法,其结果是带杠杆的借贷仓位。
④调用`mint`后,收到2亿dDAI和1.95.6亿eDAI。(注:dTokens代表债务代币,eTokens代表抵押股权)。
⑤调用"repay",将eDAI池中的1000万DAI偿还给Euler,这就将1000万dDAI销毁了。随后再次调用"mint",为攻击合约创造另一个2亿dDAI和1.956亿eDAI形式的借贷仓位。此时攻击者的仓位为:3.9亿dDAI和4亿eDAI。
报告:Uniswap和其他自动化做市商的无常损失是永久性的:法国奥尔良大学研究员Alexis Direr发表论文指出,Uniswap和其他自动化做市商的无常损失是永久性的。论文称,AMM依赖于流动性提供者将其资金投入流动性池以促进交易和降低滑点的个人和实体。作为回报,流动性提供者获得用户支付的交易费用。但流动性提供者需要承担“无常”损失。当价格朝一个方向大幅波动时,流动性提供者最终拿到的资金可能会比最初投入的少。研究人员解释说,这种现象是由于套利交易者的存在而导致的。这种损失通常被称为“无常”损失。通过研究,Uniswap不断地在流动性池的增加或减少时对其进行重新平衡,这样流动性提供者就可以拥有更少上涨的资产,相对而言拥有更多下跌的资产。损失永远是永久性的,但在乐观的情况下,它只是减少了同等策略所能获得的收益。(Cointelegraph)[2020/9/30]
⑥调用`donateToReserves`,将1亿eDAI转给Euler。由于没有对这一行为的抵押状况进行适当的检查,"donate"后的攻击者成为了"违规者",其风险调整后负债远超过了的抵押品价值,因此可以对其进行清算。此时攻击者的仓位为:3.9亿dDAI和3亿eDAI。
火币李林:如果是火币平台责任造成的损失,火币将全额赔付:火币李林公开回应了某媒体“多名投资者赴火币总部维权”的相关传闻。李林在朋友圈说:“看到朋友给我转的新闻,才知道公司最近竟然摊上了‘这么大的事’。统一回复,按照火币的原则及传统,确实是火币平台的责任导致的非不可抗力事故,火币将会全额赔付。这次也不会例外。而对于用户正常的投资判断失误带来的损失,平台不会承担任何赔付责任。
感谢媒体的监督,而对于其中严重夸大其词甚至失实的报道,在这个行业已经司空见惯。其中提到的5亿,实在是没有基本的数据常识,也没有做好功课。另外提到的四年前的一个事故火币做了赔付,其实当年是在事故发生几个小时内做出的决策,当时根本没有现在这么繁荣的区块链媒体,决策时媒体还没有来得及报道更没有所谓的“迫于舆论压力”。不过这次确实是“迫于舆论压力”,发了这个朋友圈澄清一下。
另外说句题外话。建议媒体在监督行业的同时先做好自我监督,须知你今天对别人所做的一切,改天别人可能同样会如此对你。己所不欲,勿施于人。。。”[2018/5/15]
⑦攻击者部署的清算人合约开始清算“违规者”。EulerFinance清算逻辑中一个特色功能是当被清算人的借贷仓位极其不健康时,清算人员可以在此过程中获得最高20%的“折扣”。
⑧通过清算,清算人获得了2.59亿dDAI的“债务”,获得3.1eDAI的“资产”。清算过程中转让的债务总额比资产低得多。清算人获得了价值近4500万的eDAI资产。
⑨清算人通过获得的eDAI从协议中取走了所有的3890万DAI的抵押品,然后偿还了闪电贷款,获利800万美元。
攻击者目前在地址一持有价值1350万美元的ETH,在地址二持有1.48亿美元的ETH以及4300万DAI。
地址一:https://etherscan.io/address/0xB2698C2D99aD2c302a95A8DB26B08D17a77cedd4
地址二:https://etherscan.io/address/0xb66cd966670d962C227B3EABA30a872DbFb995db
神奇的是,第一次攻击交易竟被MEV机器人无意拦截了。该机器人获得了879万美元的DAI。可惜攻击者合约里把提款地址写死了,MEV机器人在试图归还资金的过程中只能把截拦到的资金发到攻击者的地址。
第二到第五笔攻击使黑客获得了价值1.77亿美元的资产。
MEV机器人的所有者在链上留言并解释他们无法归还这些钱,并对受影响的用户感到抱歉和遗憾。
写在最后
目前,该事件是2023年Web3领域最大的一次黑客攻击。EulerFinance在推文中承认了这一事件的真实性,并表示他们目前正在与安全专家和执法部门进行合作。
EulerFinance团队的整体安全水平和意识在行业内处于相对较高的水准,目前也已与很多安全公司进行了合作。项目进行过审计,也有bugbounty漏洞赏金计划加持,不过项目还是未能逃过黑客的磨爪。
因此CertiK安全专家再次提醒,新添加的功能,务必也要进行审计。由于上述合约漏洞是https://forum.euler.finance/t/eip-14-contract-upgrades/305引进的,才造成了如此严重的后果。
所以审计并不是一劳永逸的,合约在添加新功能时,务必要重新对新添加功能进行审计,否则即便已审计过“千里之堤”,也可能溃于未审计的“蚁穴”。
作为区块链安全领域的领军者,CertiK致力于提高Web3.0的安全和透明等级。迄今为止,CertiK已获得了4000家企业客户的认可,保护了超过3600亿美元的数字资产免受损失。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。