# Euler Finance遭受闪电贷攻击,损失高达1.97亿美元2023年3月13日,Euler Finance项目因其智能合约中的一个漏洞遭受了大规模闪电贷攻击。攻击者利用Etoken中donateToReserves函数缺少流动性检查的漏洞,通过多次调用不同币种的操作获取了巨额利润。此次攻击造成的总损失高达1.97亿美元,涉及6种不同的代币。## 攻击过程分析攻击者的操作步骤如下:1. 从某借贷平台闪电贷借入3000万DAI。2. 部署两个合约:一个用于借贷,另一个用于清算。3. 将2000万DAI质押到Euler Protocol合约中,获得19.5万eDAI。4. 利用Euler Protocol的10倍杠杆借贷功能,借出195.6万eDAI和200万dDAI。5. 使用剩余的1000万DAI偿还部分债务,并销毁相应的dDAI。6. 再次借出195.6万eDAI和200万dDAI。7. 调用donateToReserves函数,捐赠10倍于偿还资金的金额(100万eDAI)。8. 触发清算函数,获得310万dDAI和250万eDAI。9. 提取38.9万DAI,归还30万闪电贷,最终获利8.87万DAI。## 漏洞分析攻击得以成功的关键在于Euler Finance的donateToReserves函数缺少必要的流动性检查。与其他关键函数(如mint)相比,donateToReserves函数未执行checkLiquidity步骤。这个疏忽导致用户可以操纵自己的账户状态,使其符合被清算的条件,然后通过清算获利。正常情况下,checkLiquidity函数会调用RiskManager模块,确保用户的Etoken始终大于Dtoken,以维持系统的健康状态。然而,由于donateToReserves函数缺少这一关键检查,攻击者得以绕过系统的安全机制。## 安全建议针对此类攻击,我们提出以下安全建议:1. 智能合约上线前必须进行全面的安全审计。2. 借贷类项目应特别关注资金偿还、流动性检测和债务清算等关键环节。3. 确保所有可能影响用户资产状态的函数都包含必要的安全检查。4. 定期进行代码review,确保新增功能不会引入潜在漏洞。5. 建立应急响应机制,以便在发生安全事件时快速反应。此次事件再次凸显了智能合约安全的重要性。项目方应当始终将安全置于首位,通过持续的安全实践和审计来保护用户资产的安全。
Euler Finance遭1.97亿美元闪电贷攻击 智能合约漏洞引发巨额损失
Euler Finance遭受闪电贷攻击,损失高达1.97亿美元
2023年3月13日,Euler Finance项目因其智能合约中的一个漏洞遭受了大规模闪电贷攻击。攻击者利用Etoken中donateToReserves函数缺少流动性检查的漏洞,通过多次调用不同币种的操作获取了巨额利润。此次攻击造成的总损失高达1.97亿美元,涉及6种不同的代币。
攻击过程分析
攻击者的操作步骤如下:
漏洞分析
攻击得以成功的关键在于Euler Finance的donateToReserves函数缺少必要的流动性检查。与其他关键函数(如mint)相比,donateToReserves函数未执行checkLiquidity步骤。这个疏忽导致用户可以操纵自己的账户状态,使其符合被清算的条件,然后通过清算获利。
正常情况下,checkLiquidity函数会调用RiskManager模块,确保用户的Etoken始终大于Dtoken,以维持系统的健康状态。然而,由于donateToReserves函数缺少这一关键检查,攻击者得以绕过系统的安全机制。
安全建议
针对此类攻击,我们提出以下安全建议:
此次事件再次凸显了智能合约安全的重要性。项目方应当始终将安全置于首位,通过持续的安全实践和审计来保护用户资产的安全。