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

robot
摘要生成中

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

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

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

攻击过程分析

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

  2. 攻击者将借来的2000万DAI质押到Euler Protocol合约中,获得19.5万个eDAI。

  3. 利用Euler Protocol的10倍杠杆功能,攻击者借出了195.6万个eDAI和200万个dDAI。

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

  5. 关键步骤:攻击者调用donateToReserves函数,捐赠了100万eDAI,随后通过liquidate函数清算,获得310万dDAI和250万eDAI。

  6. 最后,攻击者提取了38.9万DAI,归还了30万DAI的闪电贷,最终获利8.87万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. 确保所有可能影响用户资产状态的函数都包含必要的安全检查,如流动性检查。

  4. 定期进行代码审查和更新,及时修复发现的漏洞。

  5. 建立应急响应机制,以便在发生安全事件时能够迅速反应和处理。

通过采取这些措施,项目方可以大大降低遭受类似攻击的风险,提高合约的整体安全性。

EUL5.56%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 转发
  • 分享
评论
0/400
鲸鱼观察员vip
· 08-11 16:40
又一个当韭菜的进场了
回复0
Lonely_Validatorvip
· 08-10 08:22
区块链安全现在这么差?无语了
回复0
StakeWhisperervip
· 08-10 08:10
又一个吃币套餐
回复0
Gwei_Watchervip
· 08-10 07:58
又是不查合约就上线?
回复0
半佛薅羊毛vip
· 08-10 07:54
又一个归零的项目…狗带
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)