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

robot
摘要生成中

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

3月13日,Euler Finance项目因合约漏洞遭受闪电贷攻击,导致约1.97亿美元资金损失。攻击者利用了项目中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,随即调用liquidate函数进行清算,获得3.1亿dDAI和2.5亿eDAI。

  6. 最后提取3890万DAI,归还3000万闪电贷,净利润约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亿美金!

漏洞原因分析

攻击得以成功的主要原因在于donateToReserves函数缺少必要的流动性检查。与mint等其他关键函数相比,donateToReserves函数未调用checkLiquidity进行用户流动性验证。这导致攻击者能够通过特定操作使自身账户处于可被清算状态,随后完成清算获利。

正常情况下,checkLiquidity函数会调用RiskManager模块,确保用户的Etoken数量始终大于Dtoken数量。然而,donateToReserves函数跳过了这一关键步骤,为攻击创造了可乘之机。

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

安全建议

此次事件再次凸显了智能合约安全审计的重要性。项目方在上线前应当进行全面细致的安全检查,尤其是针对借贷类项目,更需要重点关注以下几个方面:

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

只有确保这些关键环节的安全,才能有效防范类似攻击的发生。随着Web3生态的不断发展,智能合约的安全将持续成为业界关注的焦点。

EUL-2.85%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 转发
  • 分享
评论
0/400
长线梦想家vip
· 21小时前
三年后再看 又是一个价值逆回归的故事 懂得都懂
回复0
Gas Banditvip
· 21小时前
又是智能合约的锅?审计咋审的啊?
回复0
RektCoastervip
· 21小时前
又一个炸弹 又是一地鸡毛
回复0
空投收割机vip
· 21小时前
没想到Euler也翻车了...啧啧
回复0
just_here_for_vibesvip
· 21小时前
又炸了? 致敬跑路人
回复0
铁头矿工vip
· 21小时前
又一韭菜收割机翻车了...
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)