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

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

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

相关信息

核心合约地址

P2Controller:

0x34ca24ddcdaf00105a3bf10ba5aae67953178b85

XNFT:

0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909

xToken:

0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663

慢雾:Distrust发现严重漏洞,影响使用Libbitcoin Explorer3.x版本的加密钱包:金色财经报道,据慢雾区消息,Distrust 发现了一个严重的漏洞,影响了使用 Libbitcoin Explorer 3.x 版本的加密货币钱包。该漏洞允许攻击者通过破解 Mersenne Twister 伪随机数生成器(PRNG)来访问钱包的私钥,目前已在现实世界中造成了实际影响。

漏洞详情:该漏洞源于 Libbitcoin Explorer 3.x 版本中的伪随机数生成器(PRNG)实现。该实现使用了 Mersenne Twister 算法,并且仅使用了 32 位的系统时间作为种子。这种实现方式使得攻击者可以通过暴力破解方法在几天内找到用户的私钥。

影响范围:该漏洞影响了所有使用 Libbitcoin Explorer 3.x 版本生成钱包的用户,以及使用 libbitcoin-system 3.6 开发库的应用。

已知受影响的加密货币包括 Bitcoin、Ethereum、Ripple、Dogecoin、Solana、Litecoin、Bitcoin Cash 和 Zcash 等。

风险评估:由于该漏洞的存在,攻击者可以访问并控制用户的钱包,从而窃取其中的资金。截至 2023 年 8 月,已有超过 $900,000 美元的加密货币资产被盗。

解决方案:我们强烈建议所有使用 Libbitcoin Explorer 3.x 版本的用户立即停止使用受影响的钱包,并将资金转移到安全的钱包中。请务必使用经过验证的、安全的随机数生成方法来生成新的钱包。[2023/8/10 16:18:20]

攻击者EOA地址

慢雾:BXH 第一次被盗资金再次转移,BTC 网络余额超 2700 BTC:金色财经报道,10月8日凌晨(UTC+8),慢雾监控到 BXH 第一次被盗资金再次出现异动,经慢雾 MistTrack 分析,异动详情如下:

黑客地址 0x48c9...7d79 将部分资金(213.77 BTCB,5 BNB 和 1 ETH)转移至新地址 0xc01f...2aef,接着将资金兑换为 renBTC 跨链到 BTC 网络,跨链后地址为 1JwQ...u9oU。1JwQ...u9oU 在此次转移中接收到的总资金为 204.12 BTC。截止目前,BXH 第一次被盗事件在 BTC 网络共有 4 个黑客地址,总计余额为 2701.3 BTC,暂未进一步转移。慢雾 MistTrack 将持续监控被盗资金的转移。[2022/10/8 12:49:28]

0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a

慢雾:PAID Network攻击者直接调用mint函数铸币:慢雾科技发文对于PAID Network遭攻击事件进行分析。文章中指出,在对未开源合约进行在反编译后发现合约的 mint 函数是存在鉴权的,而这个地址,正是攻击者地址(0x187...65be)。由于合约未开源,无法查看更具体的逻辑,只能基于现有的情况分析。慢雾科技分析可能是地址(0x187...65be)私钥被盗,或者是其他原因,导致攻击者直接调用 mint 函数进行任意铸币。

此前报道,PAID Network今天0点左右遭到攻击,增发将近6000万枚PAID代币,按照当时的价格约为1.6亿美元,黑客从中获利2000ETH。[2021/3/6 18:21:08]

攻击合约地址

0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d

动态 | 慢雾:巨鲸被盗2.6亿元资产,或因Blockchain.info安全体系存在缺陷:针对加密巨鲸账户(zhoujianfu)被盗价值2.6亿元的BTC和BCH,慢雾安全团队目前得到的推测如下:该大户私钥自己可以控制,他在Reddit上发了BTC签名,已验证是对的,且猜测是使用了一款很知名的去中心化钱包服务,而且这种去中心化钱包居然还需要SIM卡认证,也就是说有用户系统,可以开启基于SIM卡的短信双因素认证,猜测可能是Blockchain.info,因为它吻合这些特征,且历史上慢雾安全团队就收到几起Blockchain.info用户被盗币的威胁情报,Blockchain.info的安全体系做得并不足够好。目前慢雾正在积极跟进更多细节,包括与该大户直接联系以及尽力提供可能需求的帮助。[2020/2/22]

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状态的判断。因此攻击者可以利用之前生成的订单来调用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:15ms0-3:475ms