Euler Finance遭2亿美元闪电贷攻击 DeFi安全再敲警钟

robot
摘要生成中

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

2023年3月13日,Euler Finance项目因其Etoken合约中的donateToReserves函数存在漏洞,遭受了一次大规模闪电贷攻击。攻击者利用多种代币进行了多次操作,最终造成约1.97亿美元的巨额损失。

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,随后再次借出同等数量的eDAI和dDAI。

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

  5. 最后提取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亿美金!

漏洞原因分析

此次攻击的核心问题在于donateToReserves函数缺少必要的流动性检查。与mint函数相比,donateToReserves函数未执行checkLiquidity步骤,导致用户可以绕过正常的流动性检查机制。

正常情况下,checkLiquidity函数会调用RiskManager模块来确保用户的Etoken数量大于Dtoken数量。然而,由于donateToReserves函数跳过了这一步骤,攻击者得以先将自己置于可被清算的状态,然后完成清算操作。

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

安全建议

针对此类漏洞,我们建议DeFi项目方:

  1. 在合约上线前进行全面的安全审计,确保合约的安全性。

  2. 特别关注借贷类项目中的资金偿还、流动性检测和债务清算等关键环节。

  3. 对所有可能影响用户资产状态的函数实施严格的流动性检查。

  4. 定期进行代码review,及时修复潜在的安全隐患。

  5. 考虑引入多重签名机制或时间锁等额外的安全措施。

此次事件再次凸显了智能合约安全的重要性。项目方应当始终将安全放在首位,通过不断完善的安全实践来保护用户资产和项目生态的健康发展。

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

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
MEV之泪vip
· 07-07 18:24
defi躺着数钱很香?
回复0
rekt_but_vibingvip
· 07-06 05:25
又一个项目跑路了
回复0
P2ENotWorkingvip
· 07-06 05:23
又炸了,不意外
回复0
token_therapistvip
· 07-06 05:14
又一个割韭菜盛宴
回复0
炒币老母亲vip
· 07-06 05:10
币圈韭菜又割一茬
回复0
熊市避雷针vip
· 07-06 05:00
项目审计也没用啊
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)