Euler Finance遭2亿美元闪电贷攻击 合约漏洞成主因

robot
摘要生成中

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

2023年3月13日,Euler Finance项目因合约漏洞遭受闪电贷攻击,导致约1.97亿美元损失。攻击者利用了项目中Etoken的donateToReserves函数缺乏流动性检查这一漏洞,通过多次操作不同币种获取了巨额利润。

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

攻击过程分析

  1. 攻击者首先从某借贷平台闪电贷借入3000万DAI,并部署了两个合约:借贷合约和清算合约。

  2. 随后将2000万DAI质押到Euler Protocol合约中,获得1950万eDAI。

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

  4. 使用剩余1000万DAI偿还部分债务并销毁相应dDAI,然后再次借出同等数量的eDAI和dDAI。

  5. 通过donateToReserves函数捐赠1亿eDAI(为偿还资金的10倍),并立即执行清算操作,获得3.1亿dDAI和2.5亿eDAI。

  6. 最后提取3890万DAI,归还闪电贷的3000万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漏洞分析:如何遭闪电贷攻击,损失1.97亿美金!

漏洞原因

攻击得以成功的关键在于Euler Finance的donateToReserves函数缺少必要的流动性检查。与mint等其他函数不同,donateToReserves未调用checkLiquidity函数来验证用户的资金状况。这使得攻击者能够操纵自身账户进入可被清算的状态,并随后执行清算获利。

正常情况下,checkLiquidity函数会调用RiskManager模块,确保用户的Etoken数量大于Dtoken数量,以维持账户的健康状态。然而,donateToReserves函数跳过了这一关键步骤,为攻击者提供了可乘之机。

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

安全建议

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

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

项目方在合约部署前应进行全面、深入的安全审计,以确保各项功能的安全性和稳定性。同时,持续的安全监控和及时的漏洞修复也是保障项目长期安全运行的必要措施。

EUL3.87%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 7
  • 转发
  • 分享
评论
0/400
Ser_Liquidatedvip
· 07-14 00:49
又要献祭一个项目了tks
回复0
mev_me_maybevip
· 07-14 00:03
又又又被砸盘了
回复0
0xSoullessvip
· 07-13 14:42
韭菜年年割 割完接着割
回复0
Rugpull Survivorvip
· 07-11 02:50
又是大锅!心里没点负罪感?
回复0
GasFeeCriervip
· 07-11 02:46
坐等项目方失联跑路
回复0
GasFee_Crybabyvip
· 07-11 02:39
又双叒叕被盗了 啧啧
回复0
GasWastervip
· 07-11 02:35
rip... 又一次在gas优化上付出了昂贵的教训 smh
查看原文回复0
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)