ETH:NFT 借贷平台 XCarnival 被盗3000 ETH 事件分析

NFT借贷平台@XCarnival_Lab大约7个小时之前被黑了,至少有3000个$ETH (约380万美元)被盗。下面是该事件的简要分析:

该NFT借贷平台的合约有个bug:作为抵押品的NFT在取出后,其orderID仍然可用,可以此申请贷款。

?xNFT, NFT管理器. https://etherscan.io/address/0xb14b3b9682990ccc16f52eb04146c3ceab01169……?

雅诗兰黛将在Decentraland元宇宙时装周期间奖励NFT:3月22日消息,美国化妆品品牌雅诗兰黛将作为Decentraland元宇宙时装周(Metaverse Fashion Week)的独家美妆品牌合作伙伴,在3月24日至28日免费奖励受其主打产品启发的1万个NFT。(《WWD》)[2022/3/22 14:11:25]

?P2Controller, 很多借贷限制条件的验证者.

Cosmos Theta升级拟于Q1进行,将启用NFT模块、跨链账户等功能:1月5日消息,Messari分析师Mason Nystrom发推表示,Cosmos Theta升级(定于2022年Q1进行)将会带来巨大变更。具体而言,Cosmos Theta升级将潜在启用:

1. 元交易;

2. NFT模块;

3. 跨链账户;

4. Liquid质押;

5. Hub上的CosmWASM实例;

6. Gravity Bridge升级。[2022/1/5 8:27:11]

黑客 https://etherscan.io/address/0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a… 从Tornado中拿出了干坏事的启动资金. 然后在OpenSea上购买了 #BAYC 5110。

SumSwap将为会员用户发放NFT作品:据官方消息,数学创新型去中心化协议SumSwap为会员定制了3000个NFT作品,每个NFT代表一幅数学符号图、数学公式图、化学元素图等,每一个NFT独一无二,不可分割。

从1790个会员开始,每成功认购50个会员发放一批NFT,每批发放100枚。具体发放规则为:新认购的50个会员每人发放一枚NFT,剩余50枚从第一个认购会员的用户到第50个会员,每人发放一枚,以此类推。会员认购结束后,还未发放NFT的会员用户将统一为其发放剩余的NFT。作品未来可在NFT市场自由交易。[2021/6/25 0:06:48]

他部署了一个总控合约 0xf706…ca8d https://etherscan.io/address/0xf70f691d30ce23786cfb3a1522cfd76d159aca8d……, 该合约生成了很多用来当女巫用同一个NFT进行借贷的马仔合约,比如0x5338…3714 https://etherscan.io/address/0x53386a82e55202a74c6d83c7eede7a80ba553714…….

首先,总控将BAYC转给某个马仔(以0x5338为例)。马仔然后调用xNFT中的pledgeAndBorrow()函数(抵押并贷款),抵押品为BAYC,但什么也没贷(贷款为一个总控部署的假xToken合约,数量为0)。本步骤生成了一个orderID(43)。

本Tx中可以看到这些过程,不过只有internal transaction。如果想详细解读得自己深挖调用栈。马仔5338然后取出刚才抵押的NFT,并还给总控。总控再把NFT给别的马仔。如此左手倒右手循环,黑客搞出了几十个orderID,之后可作为借款凭证。而有bug的xNFT并没有在取出抵押物后撤销凭证orderID。

下一步,总控让所有马仔依次从xETH合约里借钱。攻击完成。黑客用空气借走了真金白银(NFT抵押品早就取出了)。这是其中一个tx。

上面的是大概过程。再来看下细节。在xNFT合约中,withdrawNFT()并咩有在取出后消除orderID。当P2controller调用getOrderDetail()时还是能取到这个ID。

在xETH中,borrow()会调用borrowInternal()然后调用controller.borrowAllowed() 来验证orderID是否有效。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:31ms0-0:958ms