5

详细了解Cream.Finance的ERC777重入攻击

 2 years ago
source link: https://www.theblockbeats.com/news/26270
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
详细了解Cream.Finance的ERC777重入攻击 - 律动BlockBeats

原文标题:《经典再现|详解Cream.Finance的ERC777重入攻击》

原文作者:

PeckShield

20f5f053f4f2107b6ce5cd860e4306508949eb23.png

8 月 30 日,Cream.Finance 遭到重入攻击,PeckShield「派盾」第一时间预警并定位。

由于 AMP 支持类似 ERC-777 的代币标准,而它的特性与某些协议不相兼容,此次 Cream.Finance 的重入攻击正是操纵了此漏洞。

攻击者总共发起来 17 笔攻击交易,PeckShield「派盾」简述其中一笔交易的攻击过程:

b96551b8d76b0af0657b113b3eb4fc0039da9c96.png

首先,攻击者创建攻击合约 A,从 UniSwap V2 中借出闪电贷 500 WETH;

第二步,攻击者将所借 500 WETH 质押到到 Cream.Finance,获得 24,172.2 crETH;

第三步,攻击合约 A 利用第二步所获得的质押物,通过函数 CErc20Delegator.borrow() 借出 1,948 万 AMP。同时,利用重入漏洞,在用户的信息未更新前,又借出 crETH 代币,获得 355 ETH。

213a3045d95c2ce960969ed388d1d6f26277350e.png

第四步,攻击者创建攻击合约 B,并将 974 万 AMP 代币从攻击合约 A 转入攻击合约 B 中。因为第三步的重入攻击,使得攻击合约 A 已经资不抵债。所以攻击者利用攻击合约 B 中的 974 万 AMP,清算了攻击合约 A,并获得 9,068.6 crETH。

第五步,攻击合约 B 赎回 9,068.6 crETH,获得 187.58 ETH;此时,合约 B 的 balanceof() 为 187.58 WETH;

第六步,合约 B 将 187.58 WETH 转给合约 A,并调用函数 selfdestruct();合约 A 的余额为 542.58 ETH;

最终,攻击者归还闪电贷,获利 1,880 万美元。

在进行代币交换的时候,先扣除用户的代币,再将 ETH 发送给用户。

多个合约进行交互的时候需要考虑 DeFi 业务组合可能存在的系统性风险问题,平台方不仅要确保在产品上线前有过硬的代码审计和漏洞排查,还要在不同产品做业务组合时考虑因各自不同业务逻辑而潜在的系统性风控问题。

原文链接

律动 BlockBeats 提醒,根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK