前言
北京时间2022年03月03日,知道创宇区块链安全实验室监测到Arbitrum上TreasureDAO的NFT交易市场出现多次异常交易,黑客通过漏洞免费获取交易市场中部分NFT。知道创宇区块链安全实验室将对本次事件深入跟踪并进行分析。
事件分析
基础信息
攻击交易哈希:0x57dc8e6a28efa28ac4a3ef50105b73f45d56615d4a6c142463b6372741db2a2b
工程元宇宙初创公司Trezi完成超200万美元新一轮融资:1月11日消息,元宇宙初创公司 Trezi 宣布完成一笔超 200 万美元的新一轮融资,World V、YourNest Venture Capital、以及 Auxano Capital 和 She Capital 领投。Trezi 的元宇宙平台主要利用沉浸式技术帮助基础建设行业用户进行交流和协作,用户可以上传建筑模型进行实时查看、编辑和远程合作,该公司计划利用新资金加速元宇宙平台开发并拓展其他潜力市场。[2023/1/11 11:06:13]
TreasureMarketplace:0x2E3b85F85628301a0Bce300Dee3A6B04195A15Ee
Trezor开发公司首席财务官:各国政府不太可能禁止非托管钱包:4月21日消息,Trezor硬件钱包开发公司SatoshiLabs的首席财务官Stepan Uherik相信,各国政府不太可能设法禁止非托管钱包的使用。
Uherik称:“所有国家都禁止非托管钱包,或比特币点对点网络的任何其他方面,这是非常不可能的。”
Uherik表示,禁止非托管钱包的潜在努力可能类似于某些国家过去禁止加密或种子下载的做法:“对这些技术的采用有增无减。从某种意义上说,政府试图禁止某些技术是对这些技术的良好营销。”(Cointelegraph)[2022/4/21 14:39:27]
TreasureMarketplaceBuyer:0x812cdA2181ed7c45a35a691E0C85E231D218E273
Streamflow 在种子轮融资中筹集 310 万美元:金色财经报道,Streamflow 宣布获得 310 万美元种子轮融资,由 Jump Capital 领投,参与方包括 Solana Ventures、GBV、Hypersphere、IVC、Genblock Capital、AngelDAO、Paribus Ventures、T3E、AmberGroup、Solidity Ventures、Ratio Finance、Huobi Ventures 和 MEXc Labs。本轮筹集的资金将用于发展团队,为 Solana 上的团队和国库构建强大的实时代币分发套件。(cryptonews)[2022/3/5 13:38:26]
攻击流程
Blockstream CEO抨击XRP为“亲和性局”:Blockstream首席执行官Adam Back最近将Sushi比作XRP,声称后者是“一个预先开采的亲和性局,在零售市场上大肆宣扬和倾销”。据悉,Uniswap的竞争对手SushiSwap被指是一个退出局,因为其创始人Chef Nomi将其持有的Sushi全部套现。(UToday)[2020/9/6]
攻击者调用TreasureMarketplaceBuyer合约的buyItem函数进行购买NFT的操作,但是我们从InputData中可以看出攻击者传入的_quantity参数为0。虽然传入的购买NFT数量为0,但是攻击者依然成功的获得了一枚编号为的NFT,且TokensTranferred中并未进行代币转移。
攻击核心
根据上述分析,问题核心可能出现在TreasureMarketplaceBuyer合约的buyItem函数。跟进分析后发现,用户调用该函数后合约首先计算出用户购买此NFT的价格,根据购买数量计算出总的价格并将所需支付的代币转入合约;然后调用TreasureMarketplace的buyItem将用户需要购买的NFT从Marketplace购买到TreasureMarketplaceBuyer最后将NFT发送到用户账户。观察合约43-46行发现对ERC-721标准的NFT转移并未对其进行数量判断,若此时的_quantity为0,用户依然会收到NFT。
跟进TreasureMarketplace的buyItem函数发现,合约从市场回购NFT时只需完成listedItem.quantity>=_quantity的限制条件后便开始转移NFT到TreasureMarketplaceBuyer合约,若此时的_quantity为0,依然会转移NFT到TreasureMarketplaceBuyer中。
根据上述分析后发现,当攻击者调用TreasureMarketplaceBuyer合约的buyItem函数进行购买NFT时,若参数_quantity值为0,由于合约并没有对NFT转移数量的判断,且计算价格totalPrice=_pricePerItem*_quantity结果为0,最后导致攻击者能够免费获取该交易市场中ERC-721标准的NFT。
总结
这次攻击产生的主要原因是项目方对NFT转移数量并未做足够的判断,且并未考虑到购买数量为0的恶意购买行为。知道创宇区块链安全实验室在此提醒,任何有关代币转移的操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
参考链接:
knownseclab.com
knownseclab.com/hacked-archive
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。