Cointime

扫码下载App
iOS & Android

Euler Finance遭闪电贷攻击,损失1.97亿美金!漏洞分析附PoC

项目方

背景 

根据Numen链上监控显示,Mar-13-2023 08:56:35 AM +UTC,Euler Finance 项目因为Etoken中的donateToReserves函数缺少流动性检查而遭到闪电贷攻击。黑客通过不同币种多次调用完成获利,本次攻击共计损失1.97亿美元,金额巨大,涉及6种代币。当前,资金还存留在黑客的账户中。 

黑客地址:https://etherscan.io/address/0xb66cd966670d962c227b3eaba30a872dbfb995db 

黑客合约:https://etherscan.io/address/0x036cec1a199234fc02f72d29e596a09440825f1c 

攻击交易(其中一笔): https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d 

详细分析 

1.黑客先从Aave闪电贷借了3000W个Dai后部署了两个合约,一个是借贷合约,一个是清算合约。 

2.调用deposit函数将借来的Dai其中的20 M个质押到 Euler Protocol合约中获取了19.5M个eDAI。 

3.Euler Protocol可以调用mint函数借出10倍存款,此时黑客从中借出了195.6M个eDAI 和200M个dDAI。 

4.调用repay函数,用闪电贷剩余的10M个DAI偿还债务并且销毁了10M个dDAI,然后继续调用min函数借出195.6M个eDAI 和200M个dDAI。 

5.调用 donateToReserves函数捐赠10倍的偿还资金,发送了100M的eDAI,并调用 liquidate函数去清算,得到310M的dDAI和250M的eDAI。 

6.调用withdraw函数获取了38.9M的Dai并且去归还了借的闪电贷30M。从中获利8.87M个Dai。 

漏洞成因 

先看一下donateToReserves函数,用户能够被清算是在这一步发生的。 

与下图的mint函数对比我们发现,donateToReserves函数少了一个关键步骤checkLiquidity。 

然后跟进看 checkLiquidity的实现。我们发现了callInternalModule函数,它会调用RiskManager对用户进行检查保证Etoken>Dtoken。 

在每次操作的时候需要对用户的流动性进行检查,调用checkLiquidity完成,而donateToReserves这个函数没有执行此操作,导致用户可以通过该协议的某些函数先使自己处于被清算的状态,然后在完成清算。 

攻击复现 

我们成功复现了此次攻击,详细PoC可查看链接:https://github.com/numencyber/SmartContractHack_PoC/tree/main/EulerfinanceHack 

总结 

Numen实验室提醒项目方,合约在上线前要做好安全审计,保证合约安全性,对于借贷类项目需要特别关注资金偿还,流动性检测,债务清算等问题。Numen实验室专注于为WEB3保驾护航。 

Numen 官网

https://numencyber.com/

GitHub

https://github.com/NumenCyber

Twitter

https://twitter.com/@numencyber

Medium

https://medium.com/@numencyberlabs

LinkedIn

https://www.linkedin.com/company/numencyber/

评论

所有评论

推荐阅读

  • 美国现货比特币ETF昨日净流出2.614亿美元

    10月15日,据Farside Investors监测数据,美国现货比特币ETF昨日净流出2.614亿美元。

  • 美国现货以太坊ETF昨日净流出1.295亿美元

    10月15日,据Farside Investors监测数据,美国现货以太坊ETF昨日净流出1.295亿美元。

  • 过去1小时全网爆仓4.76亿美元,主爆多单

    数据显示,过去1小时全网爆仓4.76亿美元,其中多单爆仓4.57亿美元,空单爆仓1979.45万美元,主爆多单。其中ETH爆仓2.00亿美元,BTC爆仓1.16亿美元。

  • BTC跌破81000美元

    行情显示,BTC跌破81000美元,现报80989.9美元,24小时跌幅达到2.87%,行情波动较大,请做好风险控制。

  • ETH跌破2400美元

    行情显示,ETH跌破2400美元,现报2395.62美元,24小时跌幅达到4.47%,行情波动较大,请做好风险控制。

  • 美国考虑放宽对影子船队的制裁,以降低海运费率

    10月15日,一名美国官员当地时间周三表示,特朗普政府正在考虑放宽针对所谓“影子船队”船只的制裁。这些船只曾运输来自俄罗斯、伊朗和委内瑞拉等国的石油及石油产品。此举旨在降低目前处于历史高位的全球海运费率。此前不久,美国总统特朗普刚刚暂时解除了针对俄罗斯柴油的制裁。这一决定招致了乌克兰总统泽连斯基、欧洲多国政府,以及特朗普所属的共和党内部分参议员的强烈批评。该美国官员透露,目前的讨论重点在于,美国是否允许此前遭制裁的船只运输“合法石油”。这里的“合法石油”是指未受到美国制裁的原油或石油产品,而非受到制裁措施限制的俄罗斯和伊朗石油。该官员表示,此举旨在推动更多成品油和原油从海湾地区运出。(金十)

  • 韩国股指开盘大跌逾5%

    10月15日,韩国KOSPI指数跌破6000点,日内跌5.59%。SK海力士跌超7%,三星电子跌超6%。(金十)

  • 美元指数抹去CPI报告公布以来的所有涨幅

    10月15日,美元指数DXY在亚盘初缓慢下跌,已完全抹去昨日美国9月CPI数据公布以来的所有涨幅(最高累计上涨约70点),现报102.16。英镑兑美元GBP/USD及欧元兑美元EUR/USD涨约0.3%,现分别报1.3231和1.1197。(金十)

  • BTC跌破82000美元

    行情显示,BTC跌破82000美元,现报81984.48美元,24小时跌幅达到2.01%,行情波动较大,请做好风险控制。

  • BTC跌破83000美元

    行情显示,BTC跌破83000美元,现报83015.81美元,24小时跌幅达到0.46%,行情波动较大,请做好风险控制。