SCO:bHOME 重入攻击事件分析_sdc币交易

//前言

北京时间3月5日,知道创宇区块链安全实验室监测到BaconProtocol遭受黑客攻击损失约958,166美元,本次攻击利用重入漏洞,并凭借闪电贷扩大收益额。目前攻击者地址还没有被加入USDC的黑名单中。

//分析

攻击事件如下图所示,该次攻击事件的问题点在于lend()函数,攻击者利用该函数进行重入攻击。

2.1基础信息

攻击合约:0x580cac65c2620d194371ef29eb887a7d8dcc91bf

攻击者地址:0x7c42f2a7d9ad01294ecef9be1e38272c84607593

攻击tx:0x7d2296bcb936aa5e2397ddf8ccba59f54a178c3901666b49291d880369dbcf31

BHEX Chain发布智能合约回购所有流通的ERC20-HBC:据官方消息,由于BHEX的业务清退,为了保障所有HBC持有者的利益,BHEX Chain团队发布了用于ERC20-HBC 回购的智能合约用于回购用户持有的全部HBC。BHEX Chain团队已经在该智能合约里存入了9,354,000 USDT,合约代码规定,这些USDT永远无法被回购合约创建人直接提现取出,只能用于回购当前市场上全部流通的3,118,000 HBC,用户可以随时通过DAPP页面参与回购。回购合约在收到用户转入的HBC后,会自动按照3 USDT/HBC 的价格,按收到的HBC数量计算回购可兑换USDT金额,并将对应价值的USDT直接转账到用户操作HBC转账的钱包地址,同时合约收到的HBC将会被自动销毁。

BHEX Chain主链代HBC代币的持有者,可以通过Metamask钱包连接BHEX Chain或者通过BHEX Chain的跨链钱包,跨链提取ERC20-HBC到以太坊网络参与回购。注:请不要直接从钱包或者交易所向合约转账,否则用户无法接收到USDT。更多详情见原文链接。[2021/12/29 8:11:32]

漏洞合约:0x781ad73f140815763d9A4D4752DAf9203361D07D

宝莱坞明星Amitabh Bachchan的NFT系列拍卖价超过7千万卢比,创下纪录:11月6日消息,在Beyondlife.Club组织的拍卖会上,宝莱坞明星Amitabh Bachchan的NFT收藏品“Madhushala”、亲笔签名海报和收藏品已收到9,66,000美元(约合 7.18千万卢比)拍卖款。拍卖中最成功的是“Madhushala”NFT系列,是Amitabh Bachchan父亲的诗,用Amitabh Bachchan自己的声音录制,整个系列的总出价超过了7,56,000美元(约5.5千万卢比),该NFT的最高出价者将参加Amitabh Bachchan的见面会。拍卖的另一个亮点是The Loot Box NFT,盒子的每个买家都收到了NFT收藏的艺术品。

拍卖于11月1日开始并于11月4日结束,由BeyondLife.Club主办,由Guardian Link提供支持。(news18)[2021/11/6 6:35:55]

2.2流程

BHEX 第三期BobCat HNT矿机预售已售罄:据BHEX官方消息,于今日14:00开启的第三期BobCat HNT矿机预售已圆满结束,2,500台认购总额已全部售出。

Bobcat Miner 300矿机是Bobcat与Easylinkin合作开发的,专门为Helium用户获取HNT而设计的热点矿机。BHEX为Helium东南亚战略合作伙伴,以及Bobcat Miner 300矿机大中华区独家合作平台。

Helium是一个为低能耗物联网设备能与互联网连接互通所建立的点对点无线网络。利用Hotspots以及其他物联网设备的数据传输器,网络维护者可以通过Proof of Coverage Challenges来证明他们对网络的贡献并获得HNT代币奖励。

BHEX(前霍比特HBTC)是币核科技旗下100%持币者共享的交易平台,可为全球用户提供币币、合约、杠杆、Staking等多项数字资产业务。推出100%资产准备金证明和交易数据可信机制,致力于为用户提供安全、便捷、高效的数字资产交易环境。币核科技旗下业务还包含B端币核云BlueHelix Cloud交易所系统服务以及优质项目投资机构-HBTC Labs。[2021/4/29 21:10:46]

1.攻击者通过UniswapV2闪电贷借出6,360,000USDC。

网友爆料:BHCN将在5月份升级的新版本中删除CPFP功能:微博用户\"BCH爱好者BruceLee\"发布微博,根据BCHN核心开发者透露,BHCN将在5月份升级的新版本中删除CPFP功能。带来的好处: BCH的0确认交易的次数限制将从目前的50次上涨到“自然上限”,很多应用将因此大受裨益。[2021/3/7 18:22:13]

2.用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行2次重入攻击调用了3次lend()函数铸造共8,465,943.180104bHOME。

3.将刚才重入获得的bHOME拿去销毁赎回获得7,336,924.998USDC。

今日BHD最高涨幅30.3%:据火币全球站显示,今日比特硬币BHD最高涨幅30.3%,当前报价58.25/枚,24小时成价额2.06亿人民币。BHD是新一代基于POC容量证明挖矿的加密货币,致力于改变加密货币生产方式,使普通人能够更好的参与加密货币挖矿。[2020/5/27]

4、归还闪电贷借出的6,360,000USDC,并支付19,716的手续费,最后将剩余的957,208.998USDC转入自己的账户。

2.3细节

该次攻击事件重点在于lend()函数,由于合约https://etherscan.io/address/0x781ad73f140815763d9a4d4752daf9203361d07d#code并未验证开源,所以我们只能从交易的Debugger中寻找线索。

1、攻击者通过UniswapV2闪电贷借出6,360,000USDC。

2.3细节

该次攻击事件重点在于lend()函数,由于合约https://etherscan.io/address/0x781ad73f140815763d9a4d4752daf9203361d07d#code并未验证开源,所以我们只能从交易的Debugger中寻找线索。

分析Debugger可以看到下图是第一次调用函数,接着进行了2次重入。

从重入攻击中可以找到INPUT中调用函数的字节码为0xa6aa57ce。

通过字节签名可以知道重入攻击调用的是lend()函数。

从Debugger中我们可以发现攻击合约的地址0x781ad73f140815763d9a4d4752daf9203361d07d。

通过反编译合约0x781ad73f140815763d9a4d4752daf9203361d07d得到合约伪代码内容,可以找到lend()函数。

我们在反编译的代码中可以看到该合约使用的ERC777协议,会查询recipient的回调合约并回调tokensReceived()函数用以重入攻击。

通过分析可以发现_index就是传入的USDC数量。

totalSupply和balanceOf的增量都和_index是正比关系,和stor104是反比关系,并且这两个变量的更新发生在重入攻击之前,每次都会更新。

stor104记录的是用户存入的USDC总量,该变量的更新发生在重入之后,那么在重入的过程中stor104的值是不变的,而上面的totalSupply是在变大,所以最后return的值也会相应的增大,从而使得攻击者通过重入攻击铸造得到比正常逻辑更多的bHOME代币。

除了该次攻击事件,BlockSecTeam还阻断了后面发生的攻击并将金额返还给了项目方。交易hash:0xf3bd801f5a75ec8177af654374f2901b5ad928abcc0a99432fb5a20981e7bbd1

3.总结

此次攻击事件是由于项目方使用了ERC777协议但没有对回调合约的安全性进行考虑从而导致了重入攻击的发生,当项目合约有涉及资产的转移时,建议使用「检查-生效-交互」模式来保证逻辑代码的安全,当然我们也可以使用OpenZeppelin官方提供的ReentrancyGuard修饰器来防止重入攻击的发生。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-7:802ms