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

robot
摘要生成中

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

2023年3月13日,Euler Finance项目遭受了一次重大闪电贷攻击,导致约1.97亿美元的损失。这次攻击涉及6种不同的代币,是近期DeFi领域最大规模的安全事件之一。

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,然后触发清算,获得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亿美金!

安全建议

对于DeFi项目,特别是涉及借贷功能的平台,需要格外注意以下几点:

  1. 确保所有关键函数都包含必要的安全检查,尤其是流动性验证。

  2. 在合约上线前进行全面的安全审计,重点关注资金偿还、流动性检测和债务清算等核心环节。

  3. 定期进行代码review和漏洞扫描,及时发现和修复潜在风险。

  4. 建立健全的风险管理机制,设置合理的借贷限额和清算阈值。

  5. 考虑引入多重签名或时间锁等额外安全措施,以防止大规模资金快速流失。

此次事件再次凸显了DeFi安全的重要性。项目方应当持续加强安全意识,采取多层次的防护措施,以确保用户资产的安全。同时,用户在参与DeFi项目时也需保持警惕,了解潜在风险。

EUL4.93%
DEFI2.67%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 转发
  • 分享
评论
0/400
DAOdreamervip
· 07-26 01:35
维护安全先行,审计真滴重要啊
回复0
PoS养老院院长vip
· 07-25 22:05
又一个项目被薅走了 溜了溜了
回复0
GasWasterrvip
· 07-23 02:23
歹毒的黑客又出没了
回复0
Meme币研究员vip
· 07-23 02:19
进行情感分析... 啊,它消失了
查看原文回复0
ForkThisDAOvip
· 07-23 02:14
又一个没做安检就上线的
回复0
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)