火星链 火星链
Ctrl+D收藏火星链
首页 > 火必APP > 正文

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

作者:

时间:1900/1/1 0:00:00

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

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

相关信息

核心合约地址

P2Controller:

0x34ca24ddcdaf00105a3bf10ba5aae67953178b85

慢雾:Poly Network再次遭遇黑客攻击,黑客已获利价值超439万美元的主流资产:金色财经报道,据慢雾区情报,Poly Network再次遭遇黑客攻击。分析发现,主要黑客获利地址为0xe0af…a599。根据MistTrack团队追踪溯源分析,ETH链第一笔手续费为Tornado Cash: 1 ETH,BSC链手续费来源为Kucoin和ChangeNOW,Polygon链手续费来源为FixedFloat。黑客的使用平台痕迹有Kucoin、FixedFloat、ChangeNOW、Tornado Cash、Uniswap、PancakeSwap、OpenOcean、Wing等。

截止目前,部分被盗Token (sUSD、RFuel、COOK等)被黑客通过Uniswap和PancakeSwap兑换成价值122万美元的主流资产,剩余被盗资金被分散到多条链60多个地址中,暂未进一步转移,全部黑客地址已被录入慢雾AML恶意地址库。[2023/7/2 22:13:22]

XNFT:

慢雾:Equalizer Finance被黑主要在于FlashLoanProvider合约与Vault合约不兼容:据慢雾区消息,6 月 7 日,Equalizer Finance 遭受闪电贷攻击。慢雾安全团队以简讯形式将攻击原理分享如下:

1. Equalizer Finance 存在 FlashLoanProvider 与 Vault 合约,FlashLoanProvider 合约提供闪电贷服务,用户通过调用 flashLoan 函数即可通过 FlashLoanProvider 合约从 Vault 合约中借取资金,Vault 合约的资金来源于用户提供的流动性。

2. 用户可以通过 Vault 合约的 provideLiquidity/removeLiquidity 函数进行流动性提供/移除,流动性提供获得的凭证与流动性移除获得的资金都受 Vault 合约中的流动性余额与流动性凭证总供应量的比值影响。

3. 以 WBNB Vault 为例攻击者首先从 PancekeSwap 闪电贷借出 WBNB

4. 通过 FlashLoanProvider 合约进行二次 WBNB 闪电贷操作,FlashLoanProvider 会先将 WBNB Vault 合约中 WBNB 流动性转给攻击者,随后进行闪电贷回调。

5. 攻击者在二次闪电贷回调中,向 WBNB Vault 提供流动性,由于此时 WBNB Vault 中的流动性已经借出一部分给攻击者,因此流动性余额少于预期,则攻击者所能获取的流动性凭证将多于预期。

6. 攻击者先归还二次闪电贷,然后从 WBNB Vault 中移除流动性,此时由于 WBNB Vault 中的流动性已恢复正常,因此攻击者使用添加流动性获得凭证所取出的流动性数量将多于预期。

7. 攻击者通过以上方式攻击了在各个链上的 Vault 合约,耗尽了 Equalizer Finance 的流动性。

此次攻击的主要原因在于 Equalizer Finance 协议的 FlashLoanProvider 合约与 Vault 合约不兼容。慢雾安全团队建议协议在进行实际实现时应充分考虑各个模块间的兼容性。[2022/6/8 4:09:22]

0x39360AC1239a0b98Cb8076d4135d0F72B7fd9909

慢雾:Spartan Protocol被黑简析:据慢雾区情报,币安智能链项目 Spartan Protocol 被黑,损失金额约 3000 万美元,慢雾安全团队第一时间介入分析,并以简讯的形式分享给大家参考:

1. 攻击者通过闪电贷先从 PancakeSwap 中借出 WBNB;

2. 在 WBNB-SPT1 的池子中,先使用借来的一部分 WBNB 不断的通过 swap 兑换成 SPT1,导致兑换池中产生巨大滑点;

3. 攻击者将持有的 WBNB 与 SPT1 向 WBNB-SPT1 池子添加流动性获得 LP 凭证,但是在添加流动性的时候存在一个滑点修正机制,在添加流动性时将对池的滑点进行修正,但没有限制最高可修正的滑点大小,此时添加流动性,由于滑点修正机制,获得的 LP 数量并不是一个正常的值;

4. 随后继续进行 swap 操作将 WBNB 兑换成 SPT1,此时池子中的 WBNB 增多 SPT1 减少;

5. swap 之后攻击者将持有的 WBNB 和 SPT1 都转移给 WBNB-SPT1 池子,然后进行移除流动性操作;

6. 在移除流动性时会通过池子中实时的代币数量来计算用户的 LP 可获得多少对应的代币,由于步骤 5,此时会获得比添加流动性时更多的代币;

7. 在移除流动性之后会更新池子中的 baseAmount 与 tokenAmount,由于移除流动性时没有和添加流动性一样存在滑点修正机制,移除流动性后两种代币的数量和合约记录的代币数量会存在一定的差值;

8. 因此在与实际有差值的情况下还能再次添加流动性获得 LP,此后攻击者只要再次移除流动性就能再次获得对应的两种代币;

9. 之后攻击者只需再将 SPT1 代币兑换成 WBNB,最后即可获得更多的 WBNB。详情见原文链接。[2021/5/2 21:17:59]

xToken:

声音 | 慢雾:使用中心化数字货币交易所及钱包的用户注意撞库攻击:据慢雾消息,近日,注意到撞库攻击导致用户数字货币被盗的情况,具体原因在于用户重复使用了已泄露的密码或密码通过撞库攻击的“密码生成基本算法”可以被轻易猜测,同时用户在这些中心化服务里并未开启双因素认证。分析认为,被盗用户之所以没开启双因素认证是以为设置了独立的资金密码就很安全,但实际上依赖密码的认证体系本身就不是个足够靠谱的安全体系,且各大中心化数字货币交易所及钱包在用户账号风控体系的策略不一定都一致,这种不一致可能导致用户由于“惯性思维”而出现安全问题。[2019/3/10]

0x5417da20aC8157Dd5c07230Cfc2b226fDCFc5663

攻击者EOA地址

0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a

攻击合约地址

0xf70F691D30ce23786cfb3a1522CFD76D159AcA8d

0x234e4B5FeC50646D1D4868331F29368fa9286238

0x7B5A2F7cd1cc4eEf1a75d473e1210509C55265d8

0xc45876C90530cF0EE936c93FDc8991534F8A6962

在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提走之后再利用之前生成的订单来借款而无需还款,以此来获利。针对此类漏洞,慢雾安全团队建议在进行借款操作时应做好订单状态中是否已经提走抵押品的判断,避免再次出现此类问题。

标签:WBNBBNBNFTVAULTwbnb和bnb区别bnb什么意思的缩写RINGER Vault (NFTX)GLYPH Vault (NFTX)

火必APP热门资讯
UST:Web3的确有实际用例,但做得还不够完美

作者|PackyMcCormick几周前,当我与FlatironHealth的联合创始人?ZachWeinberg一同做客播客节目时,我们因加密资产是否有实际用例而发生了争论.

1900/1/1 0:00:00
GAME:最近频频被提到的GHC和GameFi2.0究竟是什么

2021年的中旬是MEME币的天下,继Shib和Babydoge的疯狂后,整个市场再次被NFT+GameFi所占领.

1900/1/1 0:00:00
CoinW将于6/27 20:00在ETF专区上线NEAR、ZIL、AAVE、AE、BAT ETF产品

亲爱的CoinW用户:CoinW将于2022/6/2720:00(UTC8)在ETF专区上线NEAR6L/USDT、NEAR6S/USDT、ZIL6L/USDT、ZIL6S/USDT、AAVE6.

1900/1/1 0:00:00
KEX:BKEX 关于ETP专区LINK3L、RNDR3S、KSM3L等12种标的进行份额合并的公告

尊敬的用户:??由于ETP专区部分标的触发了BKEXETP产品份额合并机制。BKEX将在2022年6月30日15:00对ETP专区部分标的进行合并操作,详情如下:合并后新份额的名称、简称、交易对.

1900/1/1 0:00:00
区块链:调查:加密货币在千禧一代中比共同基金更受欢迎

6月28日消息,投资公司Alto发布的一份报告调查了美国成年人的投资偏好。结果显示,与投资共同基金的同龄人相比,25岁至40岁的千禧一代投资加密货币的人数更多.

1900/1/1 0:00:00
TEC:ZT創新板即將上線SAG

親愛的ZT用戶:ZT創新板即將上線SAG,並開啟SAG/USDT交易對。具體上線時間如下:充值:已開啟;交易:2022年6月30日13:14(UTC8);SAG項目簡介:綠卡是基於「魔獸世界」的.

1900/1/1 0:00:00