
慢雾:XCarnival NFT借贷协议漏洞分析
原文作者:九九,慢雾安全团队
2022 年 6 月 27 日,据慢雾区消息,XCarnival 项目被曝出严重漏洞遭黑客攻击并盗走 3,087 个 ETH(约 380 万美元)。XCarnival 是一个 ETH 链上的 NFT 借贷项目,目前项目团队正在修复漏洞并承诺会对受影响的用户提供解决方案。慢雾安全团队第一时间介入分析,并将结果分享如下:
相关信息
核心合约地址
P2Controller:
0x34ca24ddcdaf00105a3bf10ba5aae67953178b85
XNFT:
0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909
xToken:
0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663
攻击者 EOA 地址
0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a
攻击合约地址
0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d
0x234e4B5FeC50646D1D4868331F29368fa9286238
0x7B5A2F7cd1cc4eEf1a75d473e1210509C55265d8
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 提走之后再利用之前生成的订单来借款而无需还款,以此来获利。针对此类漏洞,慢雾安全团队建议在进行借款操作时应做好订单状态中是否已经提走抵押品的判断,避免再次出现此类问题。
比推快讯
更多 >>- 数据:过去 24 小时全网爆仓 2.08 亿美元,多单爆仓 1.05 亿美元,空单爆仓 1.03 亿美元
- Bedrock 预告新一轮 BR 交易活动,奖金池高达 10 万美元
- CME“美联储观察”:美联储 7 月维持利率不变的概率为 79.8%
- Solana 生态顾问 Nikita Bier 加入 X 担任产品主管
- Circle 在美申请设立国家信托银行
- 美民主党参议员提出修正案:拟禁止官员通过推广加密货币获利
- 马斯克呼吁在美成立新政党,继续抨击“大而美”法案
- 黄金创2007年以来最大半年涨幅
- 欧盟将接受特朗普提出的统一关税方案,但寻求关键豁免
- 特朗普本周将与贸易团队会面,以确定国家关税税率
- 特朗普:利率应降至1%,鲍威尔及其委员会都难辞其咎
- 高盛将美联储降息预期时间提前至9月
- Robinhood(HOOD)涨幅扩大至 9.39%,续创历史新高
- Robinhood 计划到年底前将支持的代币化美股种类扩展至“数千种”
- Robinhood 正向欧洲用户赠送 OpenAI 和 SpaceX 代币
- Robinhood 旗下 Layer 2 暂定名为 Robinhood Chain
- 市场消息:REX-OSPREY SOL 现货 ETF 将于周三开始交易
- 消息人士:白宫拟推动将 Cynthia Lummis 提出的条款纳入《美丽大法案》
- Robinhood:ETH 和 SOL 质押服务已面向美国客户开放
- 当前主流 CEX、DEX 资金费率显示市场仍处于看跌态势
- “内幕哥”40 倍比特币和 25 倍以太坊空单目前整体浮盈 19.7 万美元
- 两家韩国今日机构已申请韩元稳定币商标
- 美联储博斯蒂克:没必要通过加息来应对通胀
- 比特币早期布道者 Lou Kerner 加盟播客平台 PodcastOne 担任加密顾问
- WLFI:稳定币 USD1 的 24 小时交易量超越 USDC,达 33.7 亿美元续创新高
- WeWork 联创拟重启区块链碳信用平台 Flowcarbon 的代币发行计划
- Origin Protocol:拟用协议收入回购 OGN 代币
- 白宫经委会主任哈塞特:美联储可能会降低利率
- 美联储博斯蒂克:预计明年将有三次降息
- 某新建地址从 Coinbase 提币 2.46 万枚 SOL 并进行质押
- Metaplanet CEO:今年二季度比特币收益率达到 129.4%
- Robinhood(HOOD)上涨 6.72%再创历史新高,11 时将公布加密相关重要公告
- 彭博 ETF 分析师:支持质押的 SOL 现货 ETF 或将于本周上线
- CertiK 安全报告:钓鱼攻击造成近 4 亿美元损失,成 2025 Q2 最大威胁
- 日本加密交易所运营商 BACKSEAT 完成种子轮融资,累计融资达约 969 万美元
- 1inch 宣布钱包新增支持 Solana
- 美财长:稳定币立法或将于 7 月中旬完成
- 比特币挖矿难度下调 7.48%至 116.96 T
- 美国财长贝森特:关税可能回退至 4 月 2 日水平,由特朗普决定
- 美财长:7 月 9 日前一周将出现一波贸易协议的密集签署
- 美国财长贝森特:即将寻找美联储主席鲍威尔的继任者
- 美国财长贝森特:可能会看到利率下降,通胀非常温和
- 美财长贝森特:特朗普预计将在 7 月 4 日前签署税收法案
- 美股加密货币股普涨,Circle(CRCL) 涨 3.74%
- 最高法院驳回保护 Coinbase 用户数据免受美国国税局审查的请求
- 不丹王国政府地址 20 分钟前将 137 枚 BTC 存入 Binance
- Amber International 签署总额为 2550 万美元的私募认购协议
- 德国储蓄银行拟向私人客户开放加密货币交易服务
- Aptos Labs CEO Avery Ching 被任命为美国 CFTC 数字资产小组委员
- Greeks.live:多数交易者认为空头清算密集可能推动 BTC 价格至 11.3 万美元甚至创新高
比推专栏
更多 >>观点
比推热门文章
- 【比推每日新闻精选】路透社:Circle 申请美国银行牌照,拟托管 USDC 储备;Robinhood 推出代币化股票和质押服务,将构建基于 Arbitrum 的 Layer 2 区块链;黄金创2007年以来最大半年涨幅;REX Shares 宣布首只 Solana 质押 ETF 将在美国上市交易
- Circle 在美申请设立国家信托银行
- 预存超2.5亿美元,Katana 主网开跑,今年最吸金L2?
- 美民主党参议员提出修正案:拟禁止官员通过推广加密货币获利
- Space 精华回顾 | IPO狂潮、资本变局与RWA新叙事
- 15年前戛纳翻汉堡,如今他掌舵 Robinhood 全球加密扩张
- 马斯克呼吁在美成立新政党,继续抨击“大而美”法案
- 黄金创2007年以来最大半年涨幅
- 比特币周线大阳反攻!本周关键压力位$109K能否突破?
- 对话 Robinhood 联创:如何通过”金融桥梁”通吃TradFi与DeFi