2023 年 3 月 13 日,据区块链安全审计公司 Beosin 旗下 Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,DeFi 借贷协议 Euler Finance 遭到攻击,损失约 1.97 亿美元。
我们已于昨晚将简析分享出来:1.97 亿美元大劫案如何发生?Beosin 关于 Euler Finance 事件的简析
今天,我们再次将事件复盘,带大家了解本次事件的来龙去脉。
首先我们需要知道本次事件的“受害者”Euler Finance 是谁?
根据相关资料,早在 2020 年 6 月,Euler 便荣获了由 Encode Club 举办的 Spark 高校黑客马拉松在线竞赛的第一名。
Euler 最初是一个建立于 Aave、Compound 等借贷协议基础之上的协议,它允许用户为任何 ERC-20 Token 创建自己的借贷市场,同时还提供 Reactive 利率模型以减少治理干预。
据了解,其能够实现为长尾市场资产提供借贷功能的最主要原因是,Euler 引入了时间加权平均价格这一被 Uniswap V3 所使用的构建块。
2021 年 8 月,Euler 获得由 Paradigm 领投 800 万美元的 A 轮融资,其他参投方包含 Lemniscap 及来自区块链知名项目的个人投资者。
在官网上,Euler 也展示着他们拥有 6 家安全公司审计,均未发现关键漏洞,那他们这次是如何被本次这位攻击者打穿防线的呢?
接下来,我们看一下黑客是如何操作的,以其中一笔交易为例:
项目地址:
0x27182842e098f60e3d576794a5bffb0777e025d3
攻击交易:
https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d
https://etherscan.io/tx/0x47ac3527d02e6b9631c77fad1cdee7bfa77a8a7bfd4880dccbda5146ace4088f
https://etherscan.io/tx/0x71a908be0bef6174bccc3d493becdfd28395d78898e355d451cb52f7bac38617
https://etherscan.io/tx/0x62bd3d31a7b75c098ccf28bc4d4af8c4a191b4b9e451fab4232258079e8b18c4
https://etherscan.io/tx/0x465a6780145f1efe3ab52f94c006065575712d2003d83d85481f3d110ed131d9
https://etherscan.io/tx/0x3097830e9921e4063d334acb82f6a79374f76f0b1a8f857e89b89bc58df1f311
攻击者地址:
0x5f259d0b76665c337c6104145894f4d1d2758b8c
0xb2698c2d99ad2c302a95a8db26b08d17a77cedd4
1.攻击者利用闪电贷借出了 3000 万 DAI,并创建了两个攻击合约。其中,0x583 是借贷合约,0xA03 是清算合约。攻击者将 3000 万 DAI 转入借贷合约。
图 1
2.攻击者质押了 2000 万 DAI,获得了 19,568,124 个 eDAI 的抵押。
图 2
3.攻击者接着调用 mint 函数利用这 19,568,124 个 eDAI 借贷 195,681,243 个 eDAI(抵押资产)和 200,000,000 个 dDAI( 债务资产 )。
图 3
4.攻击者接着将剩余的 1000 万 DAI 使用 repay 函数进行了质押,再次利用 mint 函数借贷了 195,681,243 个 eDAI 和 200,000,000 个 dDAI。
图 4
5.攻击者后续进行了 donateToReserves 操作,将一亿个 eDAI 进行了销毁,使得 eDAI 小于了 dDAI,满足了清算条件。
图 5
6.清算合约对借贷合约进行了清算。
图 6
7.攻击者将 Euler 合约中的 3890 万 DAI 提取出来,并将 3000 万个 DAI 归还给了 AAVE。最终获利约 890 万 DAI。
图 7
在本次攻击中,Etoken 合约的 donateToReserves 函数未对用户实际持有的代币数量和捐赠之后用户的账本的健康状态进行检查,导致攻击者可以捐赠 1 亿个 eDAI(通过杠杆获得,用户实际只质押了 3000 万个 DAI)。捐赠之后,用户的账本健康状态符合清算条件,导致借贷合约被清算。借贷合约会将 eDAI 和 dDAI 转移到清算合约,然后进行清算。由于坏账额度异常巨大,清算合约会应用最大折扣进行清算,导致清算合约清算后之后有 310.93M 个 eDAI 和 259.31M 个 dDAI。此时,用户已恢复健康,可以提取资金,可提取的金额是 eDAI 和 dDAI 的差值。但由于池子中仅有 3890 万 DAI,因此只有该金额可以被提取。总体而言,攻击的根本原因在于 Etoken 合约未对用户实际持有的代币数量和捐赠之后用户的账本的健康状态进行正确的检查,这为攻击者提供了机会。
图 8
截至发稿前,8080.98 个 ETH 存放在 0xb2698c2d99ad2c302a95a8db26b08d17a77cedd4 地址中。
图 9
我们继续用Beosin KYT 虚拟资产反洗钱合规和分析平台发现,88,651.70 个 ETH 和 43063733.27 个 DAI 存放在 0xb66cd966670d962C227B3EABA30a872DbFb995db 地址中。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。