bHOME重入攻击事件分析-ODAILY_LAYER:BHO

1、前言

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

2、分析

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

2.1基础信息

攻击合约:0x580cac65c2620d194371ef29eb887a7d8dcc91bf

攻击者地址:0x7c42f2a7d9ad01294ecef9be1e38272c84607593

攻击tx:0x7d2296bcb936aa5e2397ddf8ccba59f54a178c3901666b49291d880369dbcf31

印度巨星Amitabh Bachchan在税务部门通知后已支付约13.6万美元的NFT销售税款:3月23日消息,印度商品和服务税务情报总局(DGGI)发出通知后,印度巨星Amitabh Bachchan已就其在NFT市场Beyondlife club的NFT销售向税务部门支付了大约1亿卢比(约13.6万美元)的税款。(CoinDesk)[2022/3/23 14:13:09]

漏洞合约:0x781ad73f140815763d9A4D4752DAf9203361D07D

2.2流程

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

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

交易所BHEX将于10月16日永久关闭平台服务:9月25日,交易所BHEX发布《关于永久关闭平台服务及清退流程公示的公告》,据该公告显示,BHEX为响应全球各地监管要求,符合各地加密货币法律法规的营运要求,BHEX平台将于即刻起逐步关闭平台服务,10月9日后仅提供提现服务,并于2021年10月16日永久全面关闭,平台关闭后用户无法使用网站和APP端的所有交易功能。[2021/9/25 17:06:28]

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

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

BHEX将于5月14日上线FLY(Franklin):据BHEX官方公告,BHEX将于5月14日18:00(UTC+8)正式上线FLY(Franklin),并开通FLY/USDT交易对。充值现已开启。同时,BHEX还将开启“充值FLY,瓜分35,000个FLY”、“交易FLY,瓜分100,000个FLY”和“幸运锦鲤瓜分10,000个FLY”三大活动。

FLY(Franklin)是VRM的生态币,并且也是 Blackocean 的原生代币,可以直接扣除系统内的交易费用。[2021/5/13 21:57:02]

2.3细节

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

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

公告 | BHEX推出白标云交易所:今日,BHEX交易平台宣布:针对目前的市场竞争变化,将基于知名SaaS交易所平台币核云,推出BHEX白标云交易所产品,全面支持币币、OTC、合约等交易业务。通过白标云交易所产品,BHEX可以免费为想要布局交易所赛道的创业者提供顶级交易平台技术支持,快速实现交易平台业务冷启动。

现有使用币核云交易系统的客户,都可以依托币核云平台,零成本推出白标云交易所业务。

币核云是新加坡技术公司币核科技的主要产品,目前为全球数百家交易平台提供了技术服务。币核科技由火币网、OKEX等多家优质顶级机构共同投资,创始人巨建华曾担任火币网CTO、上市公司X Financial技术副总裁,在金融交易、数字资产于区块链技术等领域具备丰富经验。详情请点击查看原文。[2020/2/20]

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

动态 | Bitcoin GroupSE投资Sineus Financial Services GmbH获得联邦金融监管局批准:据dgap.de报道,Bitcoin GroupSE投资Sineus Financial Services GmbH获得联邦金融监管局(BaFin)批准,这项投资使Bitcoin Group SE能够在数字货币框架内提供额外的服务。Bitcoin Group SE是德国受监管的加密货币交易平台,并在杜塞尔多夫证券交易所和法兰克福证券交易所上市。[2018/10/4]

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

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

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-3:761ms