Cream Finance 重入漏洞事件分析

创宇区块链安全实验室
创宇区块链安全实验室 机构得得号

2021年08月31日 专注构建区块链安全生态,致力于让人类进入安全的区块链世界。

摘要: 8 月 30 日,知道创宇区块链安全实验室 监测到以太坊上的 DeFi 协议 Cream Finance 遭遇重入漏洞袭击,损失超 1800 万美元。

前言

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

涉及对象

攻击涉及合约地址:

0x38c40427efbaae566407e4cde2a91947df0bd22b

0x0ec306d7634314d35139d1df4a630d829475a125

受害涉及合约地址:

CErc20Delegator:0x2db6c82ce72c8d7d770ba1b5f5ed0b6e075066d6

CEther:0xd06527d5e56a3495252a528c4987003b712860ee

Amp:0xff20817765cb7f73d4bde2e66e067e58d11095c2

简述攻击流程

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

(2)抵押 ETH 获得凭证

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

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

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

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

(7)归还闪电贷

 

漏洞成因分析

获利条件

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

攻击条件

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

 

总结

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

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

作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 创宇区块链安全实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信