Cream Finance重入漏洞事件分析

本文约453字,阅读全文需要约1分钟
8 月 30 日,以太坊上的 DeFi 协议 Cream Finance 遭遇重入漏洞袭击,损失超 1800 万美元。

前言

8 月 30 日,知道创宇区块链安全实验室 监测到以太坊上的 DeFi 协议 Cream Finance 遭遇重入漏洞袭击,损失超 1800 万美元。实验室第一时间跟踪本次事件并分析。

Cream Finance重入漏洞事件分析

涉及对象

攻击涉及合约地址:

0x38c40427efbaae566407e4cde2a91947df0bd22b

0x0ec306d7634314d35139d1df4a630d829475a125

受害涉及合约地址:

CErc20Delegator:0x2db6c82ce72c8d7d770ba1b5f5ed0b6e075066d6

CEther:0xd06527d5e56a3495252a528c4987003b712860ee

Amp:0xff20817765cb7f73d4bde2e66e067e58d11095c2

简述攻击流程

(1)首先黑客通过 合约 0x38c4 进行闪电贷借出启动资金 500 ETH

Cream Finance重入漏洞事件分析

(2)抵押 ETH 获得凭证

Cream Finance重入漏洞事件分析

(3)通过 合约 0x38c4 调用 CErc20Delegator 合约 借出 19,480,000 AMP

Cream Finance重入漏洞事件分析

(4)通过重入漏洞继续调用 CEther 合约 借出  355  ETH

Cream Finance重入漏洞事件分析

(5)使用 合约 0x0ec3 对 合约 0x38c4 进行超额借贷清算

Cream Finance重入漏洞事件分析

(6)合约 0x38c4 转移凭证给 合约 0x0ec3 赎回约 187 ETH

Cream Finance重入漏洞事件分析

(7)归还闪电贷

Cream Finance重入漏洞事件分析

漏洞成因分析

获利条件

borrowFresh 函数在发生借贷时是先通过 doTransferOut 函数转账,再记录最新变化

Cream Finance重入漏洞事件分析

攻击条件

doTransferOut 函数 包含的 transfer 函数会使用_callPostTransferHooks 函数会回调调用合约的 tokensReceived 函数

Cream Finance重入漏洞事件分析

总结

本次闪电贷安全事件主要是项目方在设计代币时没考虑到协议之间的兼容性引发的重入危机,其实在前段时间已经爆出拥有类似回调功能的 ERC777 代币存在重入漏洞,如果项目方及时发现跟进,应该能减少甚至避免损失。

知道创宇区块链安全实验室 再次提醒近期各链上频频爆发攻击事件,合约安全愈发需要得到迫切重视,合约审计、风控措施、应急计划等都有必要切实落实。

本文来自投稿,不代表Odaily立场。如若转载请注明出处。

ODAILY提醒,请广大读者树立正确的货币观念和投资理念,理性看待区块链,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。

推荐阅读
星球精选