1、前言
北京时间3月5日,知道创宇区块链安全实验室监测到BaconProtocol遭受黑客攻击损失约958,166美元,本次攻击利用重入漏洞,并凭借闪电贷扩大收益额。目前攻击者地址还没有被加入USDC的黑名单中。
2、分析
攻击事件如下图所示,该次攻击事件的问题点在于lend()函数,攻击者利用该函数进行重入攻击。
2.1基础信息
攻击合约:0x580cac65c2620d194371ef29eb887a7d8dcc91bf
攻击者地址:0x7c42f2a7d9ad01294ecef9be1e38272c84607593
攻击tx:0x7d2296bcb936aa5e2397ddf8ccba59f54a178c3901666b49291d880369dbcf31
BHEX将于6月2日16:00 (UTC+8) 上线NFT:据官方公告,BHEX将于6月2日16:00 (UTC+8) 上线NFT(APENFT),并开通NFT/USDT交易对,充值现已开启。
同时,BHEX还将于6月2日-9日举行“充值NFT,瓜分3,000 U”、“交易NFT,瓜分6,000 U”和“幸运锦鲤瓜分1,000 U”三大活动。
APENFT基金是以知名公链以太坊Ethereum及波场TRON底层技术为支持,结合最大的分布式数据存储系统BitTorrent,开发的致力于将顶级艺术品NFT化与区块链化的基金。[2021/6/2 23:04:27]
漏洞合约:0x781ad73f140815763d9A4D4752DAf9203361D07D
2.2流程
1.攻击者通过UniswapV2闪电贷借出6,360,000USDC。
BHEX币长老:美元贬值将利好加密货币和大宗商品:金色财经报道,在5月28日举办的《金色百家谈 | 美元大幅贬值 稳定币突破千亿 解读美元贬值对加密后市的影响》直播节目中,BHEX高级研究员、国家黄金分析师币长老认为,美元贬值对大宗商品是绝对的利好,大宗商品市场在5月前保持了非常强的上涨趋势,本月由于多种原因出现了大幅调整。加密货币从本质上来说,也是一种特殊的商品,在美元泛滥和通胀回归的时候,大概率会表现的非常强势。
而对于美元稳定币市值突破1000亿,这说明场外资金还在快速的流入加密市场。虽然近期比特币价格出现了大幅下跌,但从前100持币地址的变化趋势来看,持币量从5月初的13.2%上升到了13.69%,头部地址的持币数量还在小幅增加。目前是519暴跌之后的弱势寻底阶段,可能去测试27000等位置,但是长期看,还是非常看好后期走势的。[2021/5/28 22:53:01]
2.用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行2次重入攻击调用了3次lend()函数铸造共8,465,943.180104bHOME。
BHD Community活动总监刘友建:做共识机制的龙头币:据悉,2020年8月1日,由LBank、金色财经联合承办的“LBank和他的朋友们-2020百城计划”在郑州举行。BHD Community活动总监刘友建就“BHD 如何在 POC 领域引领新潮流”话题进行精彩分享:BHD是POC共识机制的龙头币,对于POC存在的意义我们知道是解决了比特币算力中心化、矿机中心化和耗能巨大的现实问题,接下去三年内必将是区块链行业内的趋势。[2020/8/1]
3.将刚才重入获得的bHOME拿去销毁赎回获得7,336,924.998USDC。
4、归还闪电贷借出的6,360,000USDC,并支付19,716的手续费,最后将剩余的957,208.998USDC转入自己的账户。
今日BHD最高涨幅29.3%:据火币全球站数据显示,比特硬币BHD今日最高涨幅29.3%,现报价11.3USDT/枚, 24小时成交额6.38亿人民币,BHD连续两日持续上涨,累计最高涨幅超57%。[2020/5/2]
2.3细节
该次攻击事件重点在于lend()函数,由于合约https://etherscan.io/address/0x781ad73f140815763d9a4d4752daf9203361d07d#code并未验证开源,所以我们只能从交易的Debugger中寻找线索。
1、攻击者通过UniswapV2闪电贷借出6,360,000USDC。
2、用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行重入攻击2次调用lend()函数铸造共8,465,943.180104bHOME。
BHD持续上涨,当前涨幅22.3%:据火币全球站数据显示,比特硬币BHD当前涨幅20.37%,现报价9.13美金/枚, 24小时成交额3.21亿人民币。BHD自4月13日以来持续上涨,涨幅累计超过100%。[2020/5/1]
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修饰器来防止重入攻击的发生。
NovaBattles是一款基于区块链技术的团队MOBA手游,该公司早在2019年就开始构思区块链游戏的前景,之后在设计、系统和合作伙伴方面进行了两年的试验.
1900/1/1 0:00:00据官方消息,为保护整个区块链行业和加密市场,波场联合储备继续大力度增持储备金。5月12日,波联储官方宣布,已先后买入1000枚BTC、1,467,612,695枚TRX及100,000,000枚.
1900/1/1 0:00:00据官方消息,PoloniexExchange已成为波场联合储备的第三个成员和白名单机构,获得铸造USDD的权利.
1900/1/1 0:00:00本周摘要:-LUNA崩塌背后原因是什么?惨剧发生后,它还有什么机会?-稳定币市场也受到了冲击。USDT经历“惊魂一跳”,它将如何脱锚?会像UST一样脆弱吗?-JZL正在与多个世界级公司合作,即将.
1900/1/1 0:00:00推荐理由:虽然以太坊区块链的信息都是开源的,但是要找到其中有价值的信息却很难。比如想知道DEX每日成交量,或者某个项目的用户数量,有时可能需要自己编译脚本查遍完整的节点和所有区块,解析和提取数据.
1900/1/1 0:00:00GameFi目前是加密行业最受关注的赛道之一,Newszoo资料显示,2021年加密圈整个游戏行业贡献了1803亿美元的收益,较2020年同比增长近1.4%.
1900/1/1 0:00:00