1、前言
北京时间3月5日,知道创宇区块链安全实验室监测到BaconProtocol遭受黑客攻击损失约958,166美元,本次攻击利用重入漏洞,并凭借闪电贷扩大收益额。目前攻击者地址还没有被加入USDC的黑名单中。
2、分析
攻击事件如下图所示,该次攻击事件的问题点在于lend()函数,攻击者利用该函数进行重入攻击。
2.1基础信息
攻击合约:0x580cac65c2620d194371ef29eb887a7d8dcc91bf
攻击者地址:0x7c42f2a7d9ad01294ecef9be1e38272c84607593
攻击tx:0x7d2296bcb936aa5e2397ddf8ccba59f54a178c3901666b49291d880369dbcf31
794万枚MAV通过3个刚创建地址同时从币安提出:金色财经报道,据余烬监测,1 小时前,794万枚MAV (价值约合227万美元) 通过3个刚创建地址同时从币安提出。[2023/8/8 21:31:56]
漏洞合约:0x781ad73f140815763d9A4D4752DAf9203361D07D
2.2流程
1.攻击者通过UniswapV2闪电贷借出6,360,000USDC。
2.用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行2次重入攻击调用了3次lend()函数铸造共8,465,943.180104bHOME。
3.将刚才重入获得的bHOME拿去销毁赎回获得7,336,924.998USDC。
数据:美联储上周实现缩表逾532亿美元:11月19日消息,数据显示,上周美联储实现缩表532.66亿美元,为本年度缩债力度最大的一周。截止发稿,其资产负债总额已降至约8.625万亿美元。[2022/11/19 22:06:59]
4、归还闪电贷借出的6,360,000USDC,并支付19,716的手续费,最后将剩余的957,208.998USDC转入自己的账户。
2.3细节
该次攻击事件重点在于lend()函数,由于合约https://etherscan.io/address/0x781ad73f140815763d9a4d4752daf9203361d07d#code并未验证开源,所以我们只能从交易的Debugger中寻找线索。
土耳其央行计划在2023年推出CBDC:10月26日消息,土耳其总统战略和预算局周一提交了2023年总统年度计划,其中包括对央行数字货币(CBDC)的讨论。
该计划的国际收支部分在“政策和措施”的子标题下指出,2023年“将实施基于区块链的央行数字货币”,负责机构是土耳其央行,与当地财政部和科技研究机构合作;数字土耳其里拉系统将与数字身份和FAST(土耳其央行运营的支付系统)集成;土耳其央行将与其他银行合作,开展CBDC的研发和测试工作。(CoinDesk)[2022/10/26 16:38:58]
1、攻击者通过UniswapV2闪电贷借出6,360,000USDC。
2、用闪电贷借出的6,360,000USDC分成3份,去bHOME中进行重入攻击2次调用lend()函数铸造共8,465,943.180104bHOME。
火币矿池正式开放BitcoinHD(BHD)锁仓挖矿功能:据火币矿池消息,新加坡时间4月22日18:00,火币矿池正式开启BitcoinHD(BHD)锁仓挖矿功能,最小锁仓数量为25个。火币矿池可以实现一键双挖获得双重收益,在火币矿池锁仓BitcoinHD(BHD)享受双重收益。详情见原文链接。[2020/4/22]
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中寻找线索。
印度比特币交易所Zebpay联合创始人Saurabh Agarwal:交易所新增用户量每月超20万:印度知名比特币交易所Zebpay联合创始人Saurabh Agarwal表示,印度数字货币交易所每月新增用户量超过20万,预估交易金额约为200亿印度卢比(3.15亿美元),许多客户正在像对待黄金那样对待数字货币。[2018/1/20]
分析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修饰器来防止重入攻击的发生。
相关文章: Rust智能合约养成日记合约状态数据定义与方法实现Rust智能合约养成日记编写Rust智能合约单元测试Rust智能合约养成日记Rust智能合约部署.
Polkadot生态研究院出品,必属精品波卡一周观察,是我们针对波卡整个生态在上一周所发生的事情的一个梳理,同时也会以白话的形式分享一些我们对这些事件的观察.
3月大量ETH从Bitfinex转出根据WhaleAlert数据显示,24小时内有大量的以太坊从Bitfinex交易所转出.
北京时间2022年4月13日凌晨0点49分,CertiK审计团队监测到ElephantMoney被攻击,导致27,416.46枚BNB遭受损失.
l飞艇正在为撒哈拉以南非洲的两个岛屿提供互联网覆盖。l空中信号与地面Wi-Fi连接,以提高带宽速度。l该系统可以推广到其他偏远社区,帮助缩小高收入国家和低收入国家之间的数字鸿沟.
RSI是什么? RSI是RelativeStrengthIndex的缩写,中文常译作相对强弱指数,是应用最为广泛之一的一种技术分析指标.