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

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

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

相关信息

核心合约地址

P2Controller:

0x34ca24ddcdaf00105a3bf10ba5aae67953178b85

XNFT:

0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909

xToken:

0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663

攻击者EOA地址

0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a

Vitalik Buterin 阐述加密货币美好愿景的扩展定义:包括改善扩容、隐私、UX 和加密社交等:12月31日消息,以太坊创始人 Vitalik Buterin 针对 Paradigm 联合创始人 Matt Huang 提问的“关于加密货币美好愿景的扩展定义是什么”回复称,改善扩容、改善隐私、改善 UX、对于普通用户而言更安全的用户账户(非中心化服务)、“支付 +SoV+DeFi”为更多的人提供价值、加密社交起飞、身份和 SIWE(Sign-In with Ethereum)成功、DAO 新组织范式得到更广泛的采用等。[2022/12/31 22:18:16]

攻击合约地址

0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d

0x234e4B5FeC50646D1D4868331F29368fa9286238

0x7B5A2F7cd1cc4eEf1a75d473e1210509C55265d8

英特尔锐炫独显A380确认暂不支持挖矿:7月21日消息,英特尔锐炫Arc独立显卡A380已开始在国内上架销售,该卡暂不支持挖矿。YouTube主播DJ Mines通过在尝试了 NiceHashMining、trex miner、lolminer、teamreeminer之后确认,目前似乎还没有任何以太坊挖矿程序支持英特尔锐炫独显。据悉,目前英特尔锐炫桌面显卡包括 A770、A750、A580、A380和A310。目前只有A380一款进行了售卖。(IT之家)[2022/7/21 2:28:43]

0xc45876C90530cF0EE936c93FDc8991534F8A6962

漏洞核心点分析

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

OKX CEO:Uppsala此前针对Terra调查涉及钱包地址“terra13s”系OKX热钱包:7月3日消息,OKX CEO Jay Hao发推表示,CoinDesk近期发布的关于区块链分析公司Uppsala Security对Terra崩盘期间链上数据调查涉及的“terra13s”系OKX的热钱包,人们所看到的交易应该是交易员在不同的交易所转移资金。这个地址持有客户资产,不是一个节点地址,也不参与任何DAO投票。因此Uppsala认为“terra13s”等钱包地址由一个实体管理的结论并不成立。CoinDesk也就此进行了更正。[2022/7/3 1:47:30]

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

Etherscan关注列表新增ERC-721和ERC-1155代币转移邮件提示选项:6月25日消息,区块链浏览器Etherscan关注列表(Watch List)新增ERC-721和ERC-1155代币转移邮件提示选项。当NFT从用户关注列表中的地址转入或转出时,可选择接收邮件提示。[2022/6/26 1:31:38]

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

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

过去一周 NFT 销售额跌幅超54%:金色财经报道,由于加密货币市场急剧下跌,过去一周 NFT 的销售额暴跌了 54% 以上。根据NonFungible的数据,过去一周,NFT 销售额达到 2500 万美元,较前一周下降 54.6% 。同样,NFT 销售数量、NFT 均值和二级销售均出现大幅下滑,分别下降 22.2%、41.8% 和 56.7%。

根据 CryptoSlam 的数据, Yuga Labs的Otherdeed NFT、Bored Ape Yacht Club (BAYC)、Azuki和Mutant Ape Yacht Club (MAYC) 的销售额在过去一周都下降了 50% 以上。在较受欢迎的蓝筹系列中,Azuki NFT 受到的打击最大。过去一周,该系列的销售额下降了约 77%,新买家数量下降了 74%。(cryptonews)[2022/5/21 3:32:42]

在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-1:12ms