SushiBar重入事件分析

SushiBar重入事件分析

1、SushiBar重入事件简介

2、攻击分析

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

3、获利分析

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

4、攻击过程分析

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的值

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

本文参与区块链技术网 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2022-10-30 10:02
  • 阅读 ( 2877 )
  • 学分 ( 4 )
  • 分类:安全

评论