# Euler Finance 遭遇闪电贷攻击,损失近2亿美元2023年3月13日,Euler Finance 项目因智能合约漏洞遭受闪电贷攻击,造成约1.97亿美元损失。攻击者利用了合约中 donateToReserves 函数缺乏流动性检查的漏洞,通过多次操作获取了巨额利润。## 攻击过程分析1. 攻击者首先从某借贷平台闪电贷借入3000万 DAI,并部署了两个合约:借贷合约和清算合约。2. 将借来的 DAI 中的2000万质押到 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万 DAI,净赚约887万 DAI。## 漏洞原因攻击得以成功的主要原因是 donateToReserves 函数缺少必要的流动性检查。与其他关键函数(如 mint)相比,donateToReserves 未调用 checkLiquidity 函数来验证用户的流动性状态。这使得攻击者能够操纵自身账户进入可被清算的状态,并从中获利。正常情况下,checkLiquidity 函数会调用 RiskManager 模块来确保用户的 Etoken 数量大于 Dtoken 数量,以维持账户的健康状态。然而,donateToReserves 函数跳过了这一关键步骤,为攻击创造了可乘之机。## 教训与建议这次事件再次凸显了智能合约安全审计的重要性。对于借贷类项目,尤其需要重点关注以下几个方面:1. 资金偿还机制的完整性2. 流动性检测的全面性3. 债务清算流程的安全性项目方在合约上线前,应当进行全面而严格的安全审计,以确保合约的安全性和稳定性。同时,持续的安全监控和及时的漏洞修复也是不可或缺的。随着去中心化金融的快速发展,类似的安全事件可能会不断出现。开发者和项目方需要保持警惕,不断学习和改进,以构建更加安全、可靠的区块链生态系统。
Euler Finance遭2亿美元闪电贷攻击 智能合约漏洞成祸因
Euler Finance 遭遇闪电贷攻击,损失近2亿美元
2023年3月13日,Euler Finance 项目因智能合约漏洞遭受闪电贷攻击,造成约1.97亿美元损失。攻击者利用了合约中 donateToReserves 函数缺乏流动性检查的漏洞,通过多次操作获取了巨额利润。
攻击过程分析
攻击者首先从某借贷平台闪电贷借入3000万 DAI,并部署了两个合约:借贷合约和清算合约。
将借来的 DAI 中的2000万质押到 Euler Protocol 合约,获得约1950万 eDAI。
利用 Euler Protocol 的10倍杠杆功能,借出1.956亿 eDAI 和2亿 dDAI。
使用剩余1000万 DAI 偿还部分债务并销毁相应 dDAI,随后再次借出同样数量的 eDAI 和 dDAI。
调用 donateToReserves 函数捐赠1亿 eDAI,然后通过 liquidate 函数进行清算,获得3.1亿 dDAI 和2.5亿 eDAI。
最后提取3890万 DAI,归还闪电贷的3000万 DAI,净赚约887万 DAI。
漏洞原因
攻击得以成功的主要原因是 donateToReserves 函数缺少必要的流动性检查。与其他关键函数(如 mint)相比,donateToReserves 未调用 checkLiquidity 函数来验证用户的流动性状态。这使得攻击者能够操纵自身账户进入可被清算的状态,并从中获利。
正常情况下,checkLiquidity 函数会调用 RiskManager 模块来确保用户的 Etoken 数量大于 Dtoken 数量,以维持账户的健康状态。然而,donateToReserves 函数跳过了这一关键步骤,为攻击创造了可乘之机。
教训与建议
这次事件再次凸显了智能合约安全审计的重要性。对于借贷类项目,尤其需要重点关注以下几个方面:
项目方在合约上线前,应当进行全面而严格的安全审计,以确保合约的安全性和稳定性。同时,持续的安全监控和及时的漏洞修复也是不可或缺的。
随着去中心化金融的快速发展,类似的安全事件可能会不断出现。开发者和项目方需要保持警惕,不断学习和改进,以构建更加安全、可靠的区块链生态系统。