NFT借贷平台@XCarnival_Lab大约7个小时之前被黑了,至少有3000个$ETH被盗。下面是该事件的简要分析:
该NFT借贷平台的合约有个bug:作为抵押品的NFT在取出后,其orderID仍然可用,可以此申请贷款。
有三个相关合约:xETH,钱在这里main.https://etherscan.io/address/0xb38707e31c813f832ef71c70731ed80b45b85b2d……?
?xNFT,NFT管理器.https://etherscan.io/address/0xb14b3b9682990ccc16f52eb04146c3ceab01169……?
CryptoNinja Partners系列NFT近24小时交易额增幅超200%:金色财经报道,OpenSea数据显示,CryptoNinja Partners系列NFT近24小时交易额为113 ETH,24小时交易额增幅达263%,24小时交易额排名位列OpenSea第14。[2022/10/16 14:29:21]
?P2Controller,很多借贷限制条件的验证者.
黑客https://etherscan.io/address/0xb7cbb4d43f1e08327a90b32a8417688c9d0b800a…从Tornado中拿出了干坏事的启动资金.然后在OpenSea上购买了#BAYC5110。
以太坊侧链SKALE发布Calypso NFT Hub:5月11日消息,以太坊侧链SKALE发布Calypso NFT Hub,它允许创作者和消费者快速、轻松地铸造、购买和销售NFT,而无需支付任何Gas费,整个过程都与Europa中心相关联。此外来自SKALE VERSE的DApp的NFT将能够无缝地移动到NFTHub并将其用户连接到市场。参与Calypso NFT Hub的创世纪成员包括Afen、Curate,My Lilius和NFTrade。[2022/5/11 3:06:55]
他部署了一个总控合约0xf706…ca8dhttps://etherscan.io/address/0xf70f691d30ce23786cfb3a1522cfd76d159aca8d……,该合约生成了很多用来当女巫用同一个NFT进行借贷的马仔合约,比如0x5338…3714https://etherscan.io/address/0x53386a82e55202a74c6d83c7eede7a80ba553714…….
Solana链上NFT市场Magic Eden计划宣布完成2700万美元融资,红杉资本等参投:3月14日消息,Solana链上NFT市场Magic Eden计划宣布完成2700万美元融资,红杉资本(Sequoia Capital)、Paradigm、Greylock等参投,估值未知。
红杉资本合伙人Shaun Maguire表示,OpenSea有一个弱点,主要依赖于效率较低的以太坊区块链。押注Magic Eden会快速行动,并且会在OpenSea能够进入Solana之前抓住这一优势。
根据科技博主Jane Manchun Wong对该OpenSea代码的分析,OpenSea已经对Solana区块链进行了测试。OpenSea拒绝置评是否或何时采用Solana。(彭博社)[2022/3/14 13:55:46]
首先,总控将BAYC转给某个马仔。马仔然后调用xNFT中的pledgeAndBorrow()函数,抵押品为BAYC,但什么也没贷。本步骤生成了一个orderID(43)。
IOST推出首个支持NFT跨链转移的游戏资产交易平台:今日,IOST链上首个支持NFT跨链转移的游戏资产交易平台——掠宝网正式上线,该平台由XPET团队开发,成立于2020年1月,为游戏开发商提供游戏资产发行及上架售卖服务,为游戏用户提供一站式游戏资产购买、售卖、抵押、租赁等功能。掠宝网(LOOT)游戏资产发行交易平台具有兼容多种游戏类型、支持多种加密资产协议 、支持区块链游戏资产跨链转移等三大特点。作为综合型的游戏资产发行交易平台,掠宝网旨在促进传统游戏与区块链游戏的大融合,发挥区块链技术在“游戏资产确权”及“高效流通”的价值,实现同一游戏资产在多个独立游戏之间的映射与复用。详情点击原文链接。[2020/4/13]
本Tx中可以看到这些过程,不过只有internaltransaction。如果想详细解读得自己深挖调用栈。马仔5338然后取出刚才抵押的NFT,并还给总控。总控再把NFT给别的马仔。如此左手倒右手循环,黑客搞出了几十个orderID,之后可作为借款凭证。而有bug的xNFT并没有在取出抵押物后撤销凭证orderID。
下一步,总控让所有马仔依次从xETH合约里借钱。攻击完成。黑客用空气借走了真金白银。这是其中一个tx。
上面的是大概过程。再来看下细节。在xNFT合约中,withdrawNFT()并咩有在取出后消除orderID。当P2controller调用getOrderDetail()时还是能取到这个ID。
在xETH中,borrow()会调用borrowInternal()然后调用controller.borrowAllowed()来验证orderID是否有效。
这个是P2controller的borrowAllowed()函数。首先会问xNFT.getOrderDetail(),这个肯定过。还有其他各种限制,但没有一个好使,我在代码评论中有分析。注:黑客之所以要多个马仔合约是因为这里最下面有一个对单个orderID的借贷数量的限制。
总结:抵押物在取出后还有效,这是一个非常简单粗暴肤浅的合约bug。下面这张图是这些错综复杂的内部调用的清晰的调用栈。想不借助工具裸眼分析如果看麻了可以参考下图。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。