1.前言
北京时间3月15日晚,知道创宇区块链安全实验室监测到Gnosis链上的借贷类协议HundredFinance与Agave均遭遇了闪电贷袭击,包括AAVE的分支Agave和Compound的分支HundredFinance。协议损失超1100万美元。目前项目方已暂停其数百个市场。
知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
2.分析
BillHunters计划推出DeFi合约交易产品和NFT社交平台:5月3日消息,专注于去中心化市场的NFT产品聚合平台BillHunters Group将于今年5月推出新的合约交易产品。
BillHunters宣布在底层开放DeFi协议,集成MakerDAO和Compound等主流平台,使用户可以获得市场上高收益率的DeFi产品。BillHunters将聚合的资金投入到各大DeFi平台,并通过复利、杠杆和调仓等方式获取收益。
该公司还计划在未来推出DeFi-Exchange平台,这是面向所有创作者的NFT社交平台,包括艺术家、音乐家、影响者、游戏玩家和运动员。(Globenewswire)[2022/5/3 2:46:08]
2.1攻击者相关信息
百金融被攻击tx:
多链NFT游戏Blockchain Monster Hunt推出GEM MINING 2.0:4月28日消息,据官方文章,多链NFT游戏Blockchain Monster Hunt(BCMH)宣布推出GEM MINING(宝石挖矿)2.0,将提供更多样化的游戏物品和代币随机奖励。Chain Mascots将作为成功挖出BNB宝石和MATIC宝石的奖励。
据此前报道,Blockchain Monster Hunt宣布于UTC时间4月5日4时推出“GEM MINING(宝石挖矿)”活动。据悉,每个玩家可以根据想要挖的特定宝石拥有多个挖矿位置。此外,玩家可以同时挖多个区块。一共有三种具备不同挖矿规则的宝石,分别是BCMC宝石、BNB宝石和MATIC宝石。[2022/4/28 2:36:35]
0x534b84f657883ddc1b66a314e8b392feb35024afdec61dfe8e7c510cfac1a098
知名NFT藏家888以97ETH购买Crypto Phunk#5822:12月9日消息,知名NFT藏家888以97ETH购买Crypto Phunk#5822号作品,并在个人社交媒体发布推文表示对LarvaLabs过度中心化的抗议与不满。[2021/12/9 13:01:53]
攻击合约:0xdbf225e3d626ec31f502d435b0f72d82b08e1bdd
攻击地址:0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
攻击后跨链匿名化:https://etherscan.io/txs?a=0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
龙舌兰被攻击tx:
Eric Balchunas:本月美国比特币ETF获得批准的可能性为75%:金色财经报道,彭博社高级分析师Eric Balchunas表示,随着美国证券交易委员会 (SEC) 对传统比特币 ETF 的“挑战”,比特币期货等价物正在为可能的批准做准备。比特币 (?BTC?) 交易所交易基金 (ETF) 本月以某种形式获得批准的可能性为 75%。
Balchunas 提到了 SEC 主席 Garry Gensler,他上周暗示了对这些工具的宽容立场。随后,我们开始看到根据《投资公司法》提交的关于寻求投资 CME 交易的比特币期货的交易所交易基金 (ETF) 的文件,当与其他联邦证券法结合时,40 法案为共同基金和 ETF 提供了重要的投资者保护。(cointelegraph)[2021/10/4 17:22:55]
0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e
动态 | ThunderCore合伙人Elaine 离开团队,投资者质疑团队隐瞒消息砸盘:8月5日上午,ThunderCore英文社群电报群和中文微信群管理员发布消息称ThunderCore联合创始人、技术核心 ElaineShi 博士在结束了2年的合约后,不再继续签约。有投资者在社群内表示项目团队早已知道这一事情并且进行了隐瞒,并认为项目方「偷偷砸盘」。(区块律动)[2019/8/5]
攻击合约:0xF98169301B06e906AF7f9b719204AA10D1F160d6
攻击地址:0x0a16a85be44627c10cee75db06b169c7bc76de2c
攻击后跨链匿名化:https://etherscan.io/txs?a=0x0a16a85be44627c10cee75db06b169c7bc76de2c
2.2攻击流程
由于百金融与龙舌兰攻击流程与手法类似,因此我们使用百金融进行分析。
百金融攻击调用流程
1、攻击者利用合约在三个池子中利用闪电贷借出WXDAI和USDC
2、在WETH池子质押借出的部分USDC
3、利用重入利用一笔质押,超额借出池子中资金
4、重复质押-重入借出步骤,将其他两个池子资产超额借出
5、归还闪电贷
6、获利转移
2.3漏洞细节
导致本次问题的根本原因是由于在Gnosis链上的官方桥接代币xDAI合约中实现了一个对于to地址的回调
合约实现地址:
https://blockscout.com/xdai/mainnet/address/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9/contracts
该回调将直接导致重入漏洞的产生,同时由于在HundredFinance团队fork的Compound版本中没有严格遵循检查-生效-交互,进而导致了总借贷量更新晚于重入实现。最终攻击者得以超额借贷。
类似的,对于Agave项目方,攻击者利用liquidateCall函数内部调用会调用xDAI的callAfterTransfer方法进行回调,最终导致攻击者能再次进行借贷。
在百金融攻击中攻击者重入的调用路径如下:
在Agave攻击中攻击者回调路径如下:
3.总结
此次遭受攻击的两个借贷项目由于错误的引入了存在重入的token,同时项目方的fork的代码没有采用检查-生效-交互模式导致了问题的发生。
我们强调:对于一个优秀的项目的引用必须建立在足够的理解和严谨的开发上,尤其是存在差异化的部分,切忌顾此失彼最终因为一个小的差错导致项目全部的损失。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。