SushiBar重入事件分析

  • Archime
  • 更新于 2022-10-30 10:02
  • 阅读 4643

SushiBar重入事件分析

1、SushiBar重入事件简介

1.png

2、攻击分析

交易:https://phalcon.blocksec.com/tx/eth/0x8037b3dc0bf9d5d396c10506824096afb8125ea96ada011d35faa89fa3893aea

3、获利分析

2.png 每次获利分析: https://etherscan.io/tx/0x8037b3dc0bf9d5d396c10506824096afb8125ea96ada011d35faa89fa3893aea

3.png

4、攻击过程分析

4.png 1、攻击合约先通过ERC1820注册发送代币回调接口keccak256("ERC777TokensSender")=0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895 2、通过SLP 闪电贷获取资金 3、攻击合约调用Xn00d合约的enter函数存入资金 4、因为n00d合约是ERC777合约,在调用transferFrom转移代币时会调用发送者的回调函数tokensToSend ,攻击合约在该函数中又重新调用n00d合约的enter函数再次存入,此时上一次transferFrom 转移代币还未完成 5、攻击合约再次通过回调函数调用enter函数(每轮3次递归调用)

5、漏洞原因

漏洞原因: 1、每次调用 _mint 函数都会增加 _totalSupply的值

5.png 2、漏洞合约先使用 _mint函数先增加了totalSupply的值,再使用transferFrom函数进行转账,而ERC777合约会先调用发送者的tokentosend函数,使得重入发生。而根据公式 uint256 what = _amount.mul(totalShares).div(totalSushi); 使得转给攻击者的代币数量(what)明显增加

6.png

点赞 0
收藏 2
分享

0 条评论

请先 登录 后评论
Archime
Archime
0x96C4...508C
江湖只有他的大名,没有他的介绍。