“零元购” TreasureDAO NFT 交易市场漏洞分析_NFT:BETH

2022年03月03日,据慢雾区消息,TreasureDAO的NFT交易市场被曝出严重漏洞,TreasureDAO是一个基于Arbitrum上的NFT项目。目前项目团队正在修复漏洞并承诺会对受影响的用户提供解决方案。慢雾安全团队第一时间介入分析,并将结果分享如下:

相关信息

合约地址

TreasureMarketplaceBuyer:

0x812cda2181ed7c45a35a691e0c85e231d218e273

TreasureMarketplace:

Frax Finance 的创始人:稳定币生态增长不是“零和游戏”,各项目需要合作增加流动性:7月25日消息,Frax Finance的创始人Sam Kazemian表示,只要稳定币通过共享流动性池和抵押计划“流动性相互成比例地增长”,稳定币之间就永远不会存在真正的竞争。Kazemian解释说,稳定币生态系统的增长并不是一场“零和游戏”,因为每个代币都越来越相互交织并依赖于彼此的表现。

Kazemian认为USDC在整个行业以及其储备的更高透明度应该使其成为生态系统内合作最有价值的稳定币。 他称USDC是一个“低风险和低创新的项目”,并承认它是其他稳定币进一步创新的基础层。尽管FRAX稳定币在算法上是部分稳定的,但Kazemian表示纯算法稳定币“根本行不通”。(Cointelegraph)[2022/7/25 2:35:50]

0x2e3b85f85628301a0bce300dee3a6b04195a15ee

火币BETH昨日质押量增速达10% BETH/ETH价格几乎“零价差”:据火币全球站数据,截至12月24日15:30,火币BETH价格为570USDT,BETH/ETH交易对价格为0.9958(1BETH=0.9958ETH)。火币BETH24小时交易量超过2648个BETH,折合约150万USDT。

分析人士认为,ETH与BETH是1:1的单向不可逆兑换,因此理论上BETH价格长期低于ETH约1-20%。而火币BETH/ETH交易对价格为0.9958,仅相差0.5%,说明火币在BETH的交易量、价格等均有优势。[2020/12/24 16:23:23]

漏洞细节分析

声音 | 前Coinbase首席技术官:比特币和山寨币不是“零和游戏”:据ambcrypto报道,前Coinbase首席技术官Balaji Srinivasan表示,比特币和山寨币之间存在分歧,如果将BTC视为数字黄金,那就有山寨币的空间。我真的不想和那些认为这是“零和游戏”的人争辩。有零和游戏,但我不认为BTC和山寨币是“零和游戏”。我们的理念是“BTC和”而不是“BTC或”。在coinbase,无论我是在隐私币还是智能合约等社区,每个人都知道,尊重并持有比特币。[2020/1/19]

1.用户通过TreasureMarketplaceBuyer合约中的buyItem函数去购买NFT,该函数会先计算总共需要购买的价格并把支付所需的代币打入合约中,接着调用TreasureMarketplace合约中的buyItem从市场购买NFT到?TreasureMarketplaceBuyer?合约,接着在从TreasureMarketplaceBuyer合约中把NFT转给用户。

金色财经现场报道 EosStore市场负责人罗斌:组建EOS社区的“零一二三”:金色财经现场报道,在EosStore竞选超级节点暨“柚子资本发布会”上,EosStore市场负责人罗斌在演讲中指出:“组建EOS社区将秉持“车库咖啡的精神+投资孵化的功能+公平、开放的社区”的模式,做到‘零一二三’。零:社群的零门槛;一:一条主线,即‘一切以商业落地为核心’;二:投资和孵化的功能,投资者社区与开发者社区形成互动链接;三:组建三个职能环,投研团队、资源匹配团队、市场活动部门,我们会基于以上的几点,提供力所能及的服务。”[2018/5/13]

2.在TreasureMarketplace?合约中:

可以发现若传入的_quantity参数为0,则可以直接通过require(listedItem.quantity>=_quantity,"notenoughquantity");检查并进入下面的转移NFT流程,而其中没有再次对ERC-721标准的NFT转移进行数量判断,使得虽然传入的_quantity参数虽然为0,但仍然可以转移ERC-721标准的NFT。而计算购买NFT的价格的计算公式为totalPrice=_pricePerItem*_quantity,因此购买NFT的价格被计算为0,导致了在市场上的所有ERC-721标准的NFT均可被免费购买。

攻击交易分析

此处仅展示一个攻击交易的细节,其余攻击交易的手法都一致,不再赘述。

攻击交易:

https://arbiscan.io/tx/0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02

攻击者:

0x4642d9d9a434134cb005222ea1422e1820508d7b

攻击细节:

可以从下图中看到,攻击者调用了TreasureMarketplaceBuyer合约中的buyItem函数,并使传入的_quantity参数为0。

可以看到代币转移均为0,攻击者并没有付出任何成本就成功购买了tokenID为3557的NFT,整个攻击流程与上面的漏洞细节分析中所讲的一致。

总结

本次漏洞的核心在于进行ERC-721标准的NFT转移前,缺少了对于传入的_quantity参数不为0的判断,导致了ERC-721标准的NFT可以直接被转移且计算价格时购买NFT所需费用被计算成0。针对此类漏洞,慢雾安全团队建议在进行ERC-721标准的NFT转移前,需对传入的数量做好判断,避免再次出现此类问题。

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

金智博客

[0:15ms0-6:114ms