TreasureDAO攻击事件分析-ODAILY

前言

北京时间2022年03月03日,知道创宇区块链安全实验室监测到Arbitrum上TreasureDAO的NFT交易市场出现多次异常交易,黑客通过漏洞免费获取交易市场中部分NFT。知道创宇区块链安全实验室将对本次事件深入跟踪并进行分析。

Injective与Trezor集成,新增对所有以太坊应用程序的EIP-712支持:Injective宣布帮助Trezor完成对EIP-712签名标准的支持,这将允许Trezor的用户能够访问更多基于以太坊的应用程序,并参与到蓬勃发展的Layer-2生态系统以及NFT热潮中。[2021/4/16 20:28:21]

事件分析

基础信息

攻击交易哈希:0x57dc8e6a28efa28ac4a3ef50105b73f45d56615d4a6c142463b6372741db2a2b

TreasureMarketplace:0x2E3b85F85628301a0Bce300Dee3A6B04195A15Ee

USDC Treasury销毁2100万枚USDC:Whale Alert数据显示,北京时间8月10日02:56,USDC Treasury在以太坊网络上销毁2100万枚USDC。交易哈希为9ce14f6319d5aa57135ec42a0215c45ef831086e24c749da137e47d1b577d8b8。[2020/8/11]

TreasureMarketplaceBuyer:0x812cdA2181ed7c45a35a691E0C85E231D218E273

攻击流程

攻击者调用TreasureMarketplaceBuyer合约的buyItem函数进行购买NFT的操作,但是我们从InputData中可以看出攻击者传入的_quantity参数为0。虽然传入的购买NFT数量为0,但是攻击者依然成功的获得了一枚编号为的NFT,且TokensTranferred中并未进行代币转移。

Bittrex Global高级副总裁:Bittrex将会推出平台币,并打造开发者生态系统:Bittrex Global高级副总裁Chris Sinkey在节目中表示,加密货币领域有很多有意思的事情在发生,Bittrex将会推出平台币,这是对一直以来积极参与到Bittrex生态系统的忠诚用户的一种奖励。未来12个月Bittrex还有一个计划,会打造开发者生态系统,开发者利用Bittrex的基础架构,开发各种不同领域的应用。(Cointelegraph)[2020/6/28]

Blockstream CEO将比特币分层解决方案比作水的三种状态:5月25日消息,Blockstream的首席执行官Adam Back和首席策略官Samson Mow详细介绍了分层解决方案对比特币的影响,以及在交易所之间的结算中Liquid Network的作用。Adam Back指出,在闪电网络的情况下,在提高可伸缩性的同时,不可避免地会对安全性做出妥协。然而,Back认为,有了Liquid,当你从托管公司转移到另一家托管公司时,安全问题可能不会严重恶化。Mow还对这些第二层解决方案如何改变比特币进行了有趣的类比。Mow将比特币比作水的三种状态,他表示:“我认为对大多数人来说,理解比特币的功能最简单的方法就是它是另一种形式的比特币。如果你把比特币想象成水,有三种状态。链上主网比特币是冰。它的移动速度慢,成本也高,Liquid就是水,移动速度更快,更容易移动,Lightning可能是气态的,速度更快。”(AMBcrypto)[2020/5/25]

攻击核心

根据上述分析,问题核心可能出现在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

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

银河链

[0:0ms0-1:662ms