Euler Finance遭闪电贷攻击 损失近2亿美元

robot
摘要生成中

Euler Finance项目遭受闪电贷攻击,损失近2亿美元

3月13日,Euler Finance项目因智能合约漏洞遭受闪电贷攻击,损失高达1.97亿美元。攻击者利用了项目中Etoken合约的donateToReserves函数缺乏流动性检查这一漏洞,通过多种加密货币进行了多次攻击操作。

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

攻击过程分析

攻击者首先从某借贷平台获取了3000万DAI的闪电贷,随后部署了借贷和清算两个合约。攻击过程大致如下:

  1. 将2000万DAI质押到Euler Protocol合约,获得1950万eDAI。

  2. 利用Euler Protocol的10倍杠杆功能,借出1.956亿eDAI和2亿dDAI。

  3. 使用剩余1000万DAI偿还部分债务,销毁相应dDAI。

  4. 再次借出同等数量的eDAI和dDAI。

  5. 通过donateToReserves函数捐赠1亿eDAI,然后调用liquidate函数进行清算,获得3.1亿dDAI和2.5亿eDAI。

  6. 最后提取3890万DAI,偿还闪电贷后获利887万DAI。

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

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

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

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

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

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

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

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

漏洞原因分析

此次攻击的核心在于Euler Finance项目的donateToReserves函数缺少必要的流动性检查。与mint等其他关键函数相比,donateToReserves函数未调用checkLiquidity进行用户流动性验证。这使得攻击者能够操纵自身账户状态,使其符合清算条件,从而实现不当获利。

正常情况下,checkLiquidity函数会调用RiskManager模块,确保用户的Etoken数量始终大于Dtoken数量。然而,由于donateToReserves函数跳过了这一步骤,攻击者得以绕过安全机制。

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

安全建议

此事件再次凸显了智能合约安全审计的重要性。对于借贷类项目,尤其需要重点关注以下几个方面:

  1. 资金偿还机制的完整性
  2. 流动性检测的全面性
  3. 债务清算过程的安全性

项目方在合约部署前,应当进行全面细致的安全审计,以防范类似漏洞的出现。同时,持续的安全监控和及时的漏洞修复也是保障项目长期安全运行的关键。

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

EUL0.74%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 2
  • 分享
评论
0/400
狗庄的小兵vip
· 07-25 11:58
搞事的又来了
回复0
DeFi工程师Jackvip
· 07-25 11:45
*sigh* 智能合约设计的业余时光... 认证给我看看,不然就滚蛋
查看原文回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)