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

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

相关信息

合约地址

TreasureMarketplaceBuyer:

0x812cda2181ed7c45a35a691e0c85e231d218e273

安全公司:超过280个区块链面临“零日”漏洞的风险,至少价值250亿美元:3月14日消息,据网络安全公司Halborn表示,估计有280个或更多区块链网络面临“零日”漏洞利用的风险,这些漏洞可能会使至少价值250亿美元的加密货币面临风险。

Halborn概述了三个漏洞,其中“最关键”的漏洞允许攻击者“向各个节点发送精心设计的恶意共识消息,导致每个节点关闭”。它随着时间的推移添加了这些消息,可能会使区块链暴露于51%的攻击中,攻击者控制网络的大部分挖矿哈希率或质押代币以制作新版本的区块链或使其离线。其他“零日漏洞”将允许潜在的攻击者通过发送远程过程调用 (RPC) 请求来破坏区块链节点。[2023/3/14 13:03:06]

TreasureMarketplace:

可口可乐推出首款基于元宇宙元素设计的可乐产品“零糖字节”:金色财经报道,近日,可口可乐推出了首款基于元宇宙题材设计的可乐新款产品“零糖字节”(Coca-Cola Zero Sugar Byte)。可口可乐表示,“‘零糖字节’是一款跨越了数字与物理世界、融合时下热门的元宇宙元素而设计的可乐。”

据悉,该款可乐目前面向部分拉丁美洲国家限量发售,随后5月2日,在美国网上售卖,之后将于5月23日登陆中国零售市场。

同时,为了推广新饮料,可口可乐与Epic Games合作,在广受玩家欢迎的游戏“堡垒之夜”中创建了名为“Pixel Point”数字海岛,通过扫码“零糖字节”可乐罐体二维码,玩家即能畅玩四款沉浸式互动挑战小游戏。(同花顺)[2022/4/7 14:09:59]

0x2e3b85f85628301a0bce300dee3a6b04195a15ee

微比特矿池将推出“零费率”BTC挖矿:据官方消息,微比特(ViaBTC)矿池于2020年7月1日-10月31日推出为期4个月的“零费率”BTC挖矿,凡≥300p的微比特中国用户,只均可参与。据悉,再结合使用微比特矿池推出的“智能挖矿”产品,能够有效避免币价波动造成的收益风险。[2020/7/1]

漏洞细节分析

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

掌柜调查署丨兰建忠:火币合约实现“零分摊”关键在于“2+1”投资者保护基金:在今日的掌柜调查署上,火币集团副总裁兰建忠发言指出:火币合约实现全品种“零分摊”关键在于“2+1”的投资者保护基金先行赔付机制。

首先是安全备付金:火币合约和Huobi Global共用安全备付金。该保护基金总额20,000 BTC,专项用于应对火币平台可能出现的极端突发安全事故。

第二是风险准备金:风险准备金是用于应付因强平单未能平出而产生的穿仓损失。每一个合约品种,都有一个风险准备金。

第三是 零分摊保证金:零分摊保证金则是火币合约自2018年12月上线以来,就开启的一笔200万美元的“零分摊”保障资金。[2020/3/10]

2. 在 TreasureMarketplace?合约中:

可以发现若传入的 _quantity 参数为 0,则可以直接通过 require(listedItem.quantity >= _quantity, "not enough quantity"); 检查并进入下面的转移 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:0ms0-0:946ms