慢雾:TreasureDAO NFT交易市场「零元购」漏洞分析_NFT:以太坊

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

合约地址TreasureMarketplaceBuyer:0x812cda2181ed7c45a35a691e0c85e231d218e273TreasureMarketplace:0x2e3b85f85628301a0bce300dee3a6b04195a15ee漏洞细节分析

Mark Cuban:Howey测试不适用于所有销售,SEC应为加密实施新的测试:金色财经报道,亿万富翁投资者Mark Cuban在推文中表示,有人需要提醒SEC,Howey测试并不适用于所有销售。需要进行新的测试,就像现在的加密货币一样。[2023/8/23 18:16:21]

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

Brevan Howard支持的Web3支付公司推出公司卡,以简化加密支付:金色财经报道,由Brevan Howard支持的Web3支付初创公司Starlight推出了公司卡,旨在简化加密公司的费用支付,这些卡允许法定和加密支付,可以通过平台上的财务仪表板进行跟踪,付款通过Starlight可用的加密钱包或支票账户处理。据这家初创公司称,法定账户中持有的资金由FDIC承保,公司卡对比特币、USDC、以太坊或法定货币等具有可调整的限制。

创始人兼首席执行官Gray Nguyen在接受采访时表示,“这些卡片意味着,如果你是DAO或加密企业,你可以在现实世界中使用加密货币进行消费,比如购买Amazon Web Services或您旅行机票。”[2022/11/30 21:10:43]

SushiSwap拟任CEOJonathan Howard以53%的微弱优势赢得民意调查投票:8月6日消息,SushiSwap 拟任 CEO Jonathan Howard 以 53% 的微弱优势在民意调查后赢得多数投票,但接下来还需进行一次具有约束力的投票才能正式上任。同时,许多社区成员和 Sushi 内部人士认为,应该对未来的主厨薪酬方案进行单独投票,因为如果满足某些 SUSHI 代币价格目标和其他奖金标准,其潜在薪酬超过1000万美元。(The Defiant)[2022/8/6 12:06:46]

2.在TreasureMarketplace合约中:

律师:Ripple最好的法律论据是其直接质疑Howey测试:1月31日消息,律师杰Jeremy Hogan表示,Ripple昨日对美国SEC诉讼作出的回应,而不是通过提交一份撤销诉讼的动议来拖延时间,这一事实证明,Ripple希望迅速推进诉讼。这对Ripple和XRP都有好处。他认为,Ripple最好的法律论据是Ripple直接质疑Howey测试。声明指出,XRP与美国SEC监管的各种工具完全不同,Ripple通过完全否认它从未持有过ICO来补充这一点,并坚称它与绝大多数XRP持有人没有合约。Hogan表示,如果事实和证据得到证实,那么这种说法可能是Ripple反对SEC指控最有力的反驳。(AMBcrypto)[2021/1/31 18:29:24]

可以发现若传入的_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:15ms0-5:907ms