慢雾:XCarnival NFT借贷协议漏洞分析

原文作者:九九,慢雾安全团队

2022年6月27日,据慢雾区消息,XCarnival项目被曝出严重漏洞遭黑客攻击并盗走3,087个ETH。XCarnival是一个ETH链上的NFT借贷项目,目前项目团队正在修复漏洞并承诺会对受影响的用户提供解决方案。慢雾安全团队第一时间介入分析,并将结果分享如下:

相关信息

核心合约地址

P2Controller:

0x34ca24ddcdaf00105a3bf10ba5aae67953178b85

XNFT:

0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909

xToken:

0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663

攻击者EOA地址

0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a

Binance迪拜总经理:阿联酋明确的加密货币法规使其具有吸引力:金色财经报道,在美国对加密货币交易所采取了一系列执法行动之后,阿拉伯联合酋长国正在成为Binance的下一个重点。

Binance迪拜总经理Alex Chehade表示,阿联酋是加密货币企业寻求明确发展道路的主要目的地,并指出其对数字资产的友好立场。Binance发现,阿联酋的高级领导层希望将该地区确立为Web3的协调中心。

阿联酋明确的加密货币法规使该地区对Binance等交易所具有吸引力。Binance目前正在与美国的监管机构(包括证券交易委员会和商品期货交易委员会)的法律纠纷作斗争。[2023/6/26 22:01:06]

攻击合约地址

0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d

0x234e4B5FeC50646D1D4868331F29368fa9286238

0x7B5A2F7cd1cc4eEf1a75d473e1210509C55265d8

报告:比特币矿企总共欠下超40亿美元债务,仅排名前十矿企债务累计超过26亿美元:12月24日消息,据Hashrate Index的比特币挖矿数据分析显示,比特币矿企总共欠下超40亿美元债务,仅排名前10位的比特币矿企债务累计超过26亿美元。据悉,比特币挖矿社区在2021年牛市期间获得了大量贷款,在随后的熊市期间对他们的利润产生了负面影响。[2022/12/24 22:05:34]

0xc45876C90530cF0EE936c93FDc8991534F8A6962

漏洞核心点分析

1.攻击者通过XNFT合约中的pledgeAndBorrow函数来进行抵押NFT并借出xToken。

BlockFi起诉SBF并要求没收其在Robinhood价值5.75亿美元的股份:11月29日消息,据外媒报道,在申请第11章破产保护仅几个小时后,加密货币贷款机构BlockFi就在美国新泽西州法院起诉了FTX前首席执行官Sam Bankman-Fried(SBF),要求没收他在股票和交易应用程序Robinhood中价值5.75亿美元的股份。据称SBF在本月早些时候以其旗下Emergent Fidelity Technologies公司的名义将Robinhood股票作为抵押品,为一名未具名借款人的支付义务提供担保。

此前5月份消息,SBF购入Robinhood 7.6%的股份,成为Robinhood第三大股东。昨日消息,BlockFi正式申请破产,债权人超10万,资产和负债均在10亿至100亿美元区间。(英国《金融时报》)[2022/11/29 21:08:46]

在pledgeInternal函数中转入NFT并生成订单:

Blockchain Capital任命新的平台负责人和首席研究工程师:金色财经报道,Blockchain Capital,LLC宣布任命Alan Curtis为平台负责人,Caleb Tebbe为首席研究工程师。Alan将负责在投资后支持创始人和投资组合公司,Caleb将负责支持投资组合公司的工程团队、研究和技术尽职调查。

Caleb从Core Scientific加入Blockchain Capital,担任产品和工程高级副总裁。Caleb是RADAR的联合创始人和首席技术官。在此之前,他是Coinbase的早期数据科学工程师。

Blockchain Capital, LLC Blockchain Capital总部位于旧金山,是第一家专门投资于区块链技术领域的专业风险投资公司。(prnewswire)[2022/10/20 16:31:54]

2.接着调用withdrawNFT函数提取出质押的NFT,其中首先判断该订单是否被清算状态,如果不是则判断该订单的状态是否为NFT还未被提取且借款金额为0,如果通过即可提取抵押的NFT。

Cardano创始人将于美国众议员发表加密主题演讲:6月17日消息,Cardano创始人Charles Hoskinson发推表示,将于美国众议院就区块链和加密货币主题发表演讲。[2022/6/17 4:34:30]

3.以上为攻击前生成订单的准备操作,接着攻击者开始利用生成的订单直接调用xToken合约中的borrow函数进行借款。

在borrowInternal函数中,会外部调用controller合约中的borrowAllowed函数来判断是否可以借款。

可以看到在borrowAllowed函数会调用orderAllowed函数进行订单相关信息的判断,但是在这两个函数中均没有进行_order.isWithdraw状态的判断。因此攻击者可以利用之前生成的订单来调用XToken的borrow函数来借款,而因为抵押的NFT在之前已经被提出,故攻击者可以不用还款来实现获利。

攻击交易分析

此处仅展示其中一笔攻击交易的细节,其余攻击交易的手法均一致,不再赘述。

攻击前准备——生成订单的交易:

0x61a6a8936afab47a3f2750e1ea40ac63430a01dd4f53a933e1c25e737dd32b2f

1.首先攻击者将NFT转入攻击合约并进行授权,接着调用xNFT合约中的pledgeAndBorrow函数在进行抵押NFT生成订单并借款的操作,此处需要注意一点是该函数可以控制传入的xToken,攻击者传入了自己构造的xToken合约地址,并且让借款数量为0,目的是为了满足后续能成功提出NFT时的不被清算且负债为0的条件。

2.攻击者紧接着调用withdrawNFT函数来进行提取抵押的NFT:

正式攻击交易:

0x51cbfd46f21afb44da4fa971f220bd28a14530e1d5da5009cfbdfee012e57e35

攻击者调用xToken合约的borrow函数,传入之前生成的订单的orderID,重复了该操作22次,而因为NFT在准备阶段已经提走,估计无需还款以此来获利。

总结

本次漏洞的核心在于借款的时候,没有进行订单中NFT是否被提走的状态的判断,导致攻击者可以在把NFT提走之后再利用之前生成的订单来借款而无需还款,以此来获利。针对此类漏洞,慢雾安全团队建议在进行借款操作时应做好订单状态中是否已经提走抵押品的判断,避免再次出现此类问题。

来源:金色财经

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:31ms0-2:512ms