慢雾:TreasureDAO NFT交易市场「零元购」漏洞分析_GATE:MakersPlace

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

相关信息

合约地址

TreasureMarketplaceBuyer:

0x812cda2181ed7c45a35a691e0c85e231d218e273

BKEX Global杠杆ETP专区将于今日15:00 新增4大标的:据BKEX Global公告,BKEX Global杠杆ETP专区将于2020年9月1日15:00(UTC+8) 上线YFI3L(YFI三倍做多)、YFI3S(YFI三倍做空)、SUSHI3L(SUSHI三倍做多)、SUSHI3S(SUSHI三倍做空)。交易基础费率:0.2%;日管理费(每倍):0.3%。

BKEX Global已于4月上线杠杆ETP交易专区,目前上线含有BTC3L、BTC3S在内多个标的。BKEX杠杆ETP是在给定标的资产(如BTC)的前提下,追踪每日资产收益3倍的交易型产品。购买“3L”表示3倍做多,购买“3S”表示三倍做空。[2020/9/1]

TreasureMarketplace:

BKEX Global将于今日17:30首发上线YFV:据BKEX Global公告,BKEX Global将于2020年8月23日17:30(UTC+8)首发上线YFV(YFValue),开放交易对:YFV/USDT。

YFV是YFValue协议的管理令牌。该项目旨在通过其独特功能(包括供应通货膨胀率的投票和自动转介系统),为所有用户提供真正的增产农业融资价值。完全在链上完成刻录。[2020/8/23]

0x2e3b85f85628301a0bce300dee3a6b04195a15ee

公告 | BKEX Global 即将上线EDG:据BKEX公告,BKEX Global将于2020年2月22日20:30(UTC+8)上线EDG,上线交易对:EDG/USDT。

Edgeware基于POS 共识的 WebAssembly 智能合约平台。同时它将自己定位为自升级的智能合约平台,它也是 Polkadot 生态下的第一条智能合约链(Polkadot 的平行链)。[2020/2/21]

漏洞细节分析

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

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。??

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

总结

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

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

金宝趣谈

[0:46ms0-4:334ms