区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > SAND > 正文

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

作者:

时间:

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

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

核心合约地址

P2Controller:

0x34ca24ddcdaf00105a3bf10ba5aae67953178b85

XNFT:

0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909

xToken:

0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663

攻击者 EOA 地址

0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a

攻击合约地址

0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d

0x234e4B5FeC50646D1D4868331F29368fa9286238

0x7B5A2F7cd1cc4eEf1a75d473e1210509C55265d8

现货黄金向下触及1800美元/盎司,为7月28日以来首次:行情显示,现货黄金向下触及1800美元/盎司,为7月28日以来首次,日内跌超0.6%。[2021/8/5 1:37:21]

0xc45876C90530cF0EE936c93FDc8991534F8A6962

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

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

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

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

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

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

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

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

0x61a6a8936afab47a3f2750e1ea40ac63430a01dd4f53a933e1c25e737dd32b2f

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

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

正式攻击交易:

0x51cbfd46f21afb44da4fa971f220bd28a14530e1d5da5009cfbdfee012e57e35

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

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

标签:NFTKENTOKEXTOKENBeNFT SolutionsMustangTokenIRISTOKEN币XTOKEN价格

SAND热门资讯
Bankless:如何分析各类 NFT 基本面?

随着 NFT 概念的快速发展并逐渐走向成熟,目前我们已经看到了很多不同的 NFT 形式,包括但不限于艺术、PFP、收藏品、元宇宙虚拟资产、游戏道具、工具、音乐、数字土地等等。 当分析一个特定的 NFT 时,重要的是要注意其类别。每个类别都有独特的问题,你必须找到对应问题的答案,才能有效地判断其价值。

华尔街围剿 USDT 没那么简单

真是风又飘飘,雨又潇潇。 我在《狂风暴雨清杠杆,BTC梦回2017》说:现在币圈去杠杆危机要清理干净,还需要几个月的时间,如果碰上一线 CEX 或者 USDT 暴雷,极有可能出现一个想象不到的好价格。 结果没过多久,市面上就传出了 USDT 的暴雷危机。

公链的乐高进击之路

比特币网络的诞生为区块链的发展拉开了序幕,受限于区块链的不可能三角,比特币以牺牲可扩展性为代价实现更高的安全性和去中心化程度。比特币网络让人诟病的性能激发公链开发者寻求更好的区块链解决方案,区块链的不可能三角成为公链进化和发展不可逾越的鸿沟。

金色早报 | 俄罗斯媒体监管机构封锁了主要的加密新闻网站

头条 ▌俄罗斯媒体监管机构封锁了主要的加密新闻网站 金色财经消息,俄罗斯电信和大众媒体监管机构“Roskomnadzor”封锁了主要的加密新闻网站。目前已无法通过大多数俄罗斯互联网提供商访问被封锁的网站。有人表示打算对这项措施提出异议。

深度解析L1和L2的思维模式差异

原文作者:Patrick McCorry 加密货币正在引领一场数据库技术的范式转移 加密货币的基石就是数据库。它记录着所有用户账户的余额、智能合约的代码和状态。 任何的用户操作最终都会通过执行交易与更新数据库的形式反映出来。 “Web2”数据库技术的问题都在于使它得以运作的信任上。它依赖于一个可信第三方来维护和保护数据库。

以太坊在合并后将面临哪些潜在的中心化风险?

作者:TJ Keel(The Tie) 以太坊合并将给以太坊带来新的中心化问题,这一问题主要体现在三个方面。