1、前言
北京时间3月5日,知道创宇区块链安全实验室监测到BaconProtocol遭受黑客攻击损失约958,166美元,本次攻击利用重入漏洞,并凭借闪电贷扩大收益额。目前攻击者地址还没有被加入USDC的黑名单中。
2、分析
攻击事件如下图所示,该次攻击事件的问题点在于lend()函数,攻击者利用该函数进行重入攻击。
2.1基础信息
攻击合约:0x580cac65c2620d194371ef29eb887a7d8dcc91bf
攻击者地址:0x7c42f2a7d9ad01294ecef9be1e38272c84607593
攻击tx:0x7d2296bcb936aa5e2397ddf8ccba59f54a178c3901666b49291d880369dbcf31
OpenSea官网BUG修复,CryptoPunks 24小时交易量已正常显示:1月7日消息,OpenSea 官网“Collection stats”页面数据 BUG 已修复,CryptoPunks 系列 NFT 24 小时交易量已正常显示为 604 ETH。[2023/1/7 11:00:04]
漏洞合约:0x781ad73f140815763d9A4D4752DAf9203361D07D
2.2流程
1.攻击者通过UniswapV2闪电贷借出6,360,000USDC。
2.用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行2次重入攻击调用了3次lend()函数铸造共8,465,943.180104bHOME。
Crypto.com的EVM兼容链Cronos主网发布日期推迟至11月8日:10月15日消息,Crypto.com首席执行官Kris Marszalek近日发推称,Crypto.com的EVM兼容链Cronos在Cassini激励测试网期间,Cronos团队发现几个与Cosmos跨链桥Gravity Bridge和以太坊go-ethereum客户端(Geth)相关的问题,为确保安全启动,主网发布日期改至11月8日。Cronos团队将删除某些Gravity Bridge元素并应用适当的go-ethereum修复错误,并将准备一个新的测试网。[2021/10/15 20:32:04]
3.将刚才重入获得的bHOME拿去销毁赎回获得7,336,924.998USDC。
4、归还闪电贷借出的6,360,000USDC,并支付19,716的手续费,最后将剩余的957,208.998USDC转入自己的账户。
Reddit宣布推出CryptoSnoo NFT,并于OpenSea上进行拍卖:官方消息,6月24日,Reddit宣布推出建立在以太坊区块链上的CryptoSnooNFT,并于OpenSea上进行拍卖。据悉,用户购买CryptoSnooNFT并将其链接到Reddit帐户时,CryptoSnoo图像将成为Reddit头像,并且一张可收藏的NFT卡会出现在个人资料中。此外,评论时还会有动画效果。与CryptoSnoosNFT相关的所有文件都使用星际文件系统(IPFS)进行托管。CryptoSnooNFT可分为三个等级,分别为传说(Legendary)、史诗(Epic)和稀有(Rare)。目前,官方已推出3款NFT,在接下来的几周内,将宣布更多CryptoSnoo收藏品并将其拍卖。[2021/6/24 0:02:55]
2.3细节
该次攻击事件重点在于lend()函数,由于合约https://etherscan.io/address/0x781ad73f140815763d9a4d4752daf9203361d07d#code并未验证开源,所以我们只能从交易的Debugger中寻找线索。
Enjin与CryptoGames合作,将于4月12日发布VTuber NFT:区块链游戏开发平台Enjin发推称,将与CryptoGames合作创建VTuber NFT,首批NFT为Riot Music的芦澤サキ与長瀬有花,将于4月12日发布。
此前消息,Enjin通过私募完成1890万美元融资,用于建立基于Polkadot下一代NFT区块链Efinity。该轮融资由Crypto.com Capital、DFG Group和Hashed领投,Hypersphere、BlockTower、Blockchain.com Ventures、Fenbushi、LD Capital、Iconium、HashKey、Arrington XRP Capital、DeFi Alliance等参投。[2021/4/10 20:05:50]
1、攻击者通过UniswapV2闪电贷借出6,360,000USDC。
Cryptograph已通过拍卖V神等人的数字艺术品筹集超过5万美元:金色财经报道,Cryptograph平台已启动了数字艺术品的第一轮拍卖,到目前为止筹集了超过5万美元,拍卖还将持续两天时间。到目前为止,拍卖收入最高的包括以太坊创始人V神(其艺术品以40 ETH出售)、以太坊基金会研究员Vlad Zamfir(10 ETH)和Tezos联合创始人Kathleen Breitman(5 ETH)。据悉,这些数字艺术品作为不可替换代币(NFT)被存储在以太坊上。[2020/7/15]
2、用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行重入攻击2次调用lend()函数铸造共8,465,943.180104bHOME。
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修饰器来防止重入攻击的发生。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。