{"content":{"title":"零时科技 || Euler Finance 1.95亿美元黑客事件分析","body":"![image](https://image.3001.net/images/20230403/1680508363_642a85cbeaea26b0590bd.jpg!small)\r\n# 事件背景\r\n\r\n零时科技区块链安全情报平台监控到消息，北京时间2023年3月14日，ETH链上Euler Finance受到黑客攻击，攻击者获利约1.97亿美元，攻击者地址为0xb66cd966670d962c227b3eaba30a872dbfb995db，被盗资金100ETH转移至混币平台Tornado.Cash,其余资金仍在攻击者地址暂未移动。零时科技安全团队及时对此安全事件进行分析。\r\n\r\n# 漏洞及核心\r\n\r\n合约中有关代币余额修改的函数中存在检查清算的功能，在执行代币转移后检查抵押资产与借出资金，要求抵押资产大于借出资金。\r\n![image](https://image.3001.net/images/20230403/1680508488_642a864831a72afd463bf.png!small)\r\n![image](https://image.3001.net/images/20230403/1680508499_642a8653cc1cbd8eff4d1.png!small)\r\n由于函数donateToReserves中缺少检查清算逻辑，攻击者可以通过此函数将借款调整为清算状态。\r\n![image](https://image.3001.net/images/20230403/1680508570_642a869a1dcb2c69b2677.png!small)\r\n攻击者构造出两个攻击合约，其中一个合约执行借款操作，另一个合约执行清算操作。\r\n\r\n借款合约通过闪电贷借出30,000,000 DAI，之后将20,000,000 DAI存入Euler中获得19,568,124 eDAI，之后调用mint函数借出200,000,000 dDAI和195,681,243eDAI，将资产放大10倍。\r\n![image](https://image.3001.net/images/20230403/1680508610_642a86c289510f3e345ef.png!small)\r\n之后攻击者调用repay函数继续进行质押，将剩余10,000,000 DAI进行质押并销毁10,000,000 eDAI，之后继续调用mint函数借出200,000,000 dDAI和195,681,243eDAI，此时攻击者共有400,000,000 dDAI和400,930,610 eDAI。\r\n\r\n攻击者调用合约中donateToReserves函数进行转账，将100,000,000 eDAI转移至0地址。\r\n![image](https://image.3001.net/images/20230403/1680508633_642a86d9cf77763818ad7.png!small)\r\n此时攻击者地址共有400,000,000 dDAI和300,930,610 eDAI，已经达到清算条件，由于此函数中缺少清算判断，未能执行清算。\r\n\r\n清算合约调用清算函数执行清算操作，共获得310,930,612 eDAI 和 254,234,370dDAI\r\n![image](https://image.3001.net/images/20230403/1680508669_642a86fddc7c9fccdc042.png!small)\r\n![image](https://image.3001.net/images/20230403/1680508682_642a870ad60ef4f41d92e.png!small)\r\n之后攻击者调用withdraw函数将池子中DAI全部取出。\r\n![image](https://image.3001.net/images/20230403/1680508696_642a87186ca276ff86b6d.png!small)\r\n此笔交易中攻击者共获利8,877,507 DAI\r\n\r\n# 总结及建议\r\n\r\n此次攻击是由于EToken合约中donateToReserves函数缺失清算检查逻辑，攻击者能够恶意将借贷的资金处于清算状态下而不触发清算，使得攻击者能够无需向合约转移清算资金而触发清算从而获利。\r\n\r\n## 安全建议\r\n\r\n建议对合约中相关函数添加清算检查操作\r\n\r\n建议项目方上线前进行多次审计，避免出现审计步骤缺失"},"author":{"user":"https://learnblockchain.cn/people/52","address":null},"history":null,"timestamp":1680508865,"version":1}