原文来源:慢雾科技 原文作者:九九,慢雾安全团队 2022 年 03 月 03 日,据慢雾区消息,TreasureDAO 的 NFT 交易市场被曝出严重漏洞,TreasureDAO 是一个基于 Arbitrum(L2)上的 NFT 项目。目前项目团队正在修复漏洞并承诺会对受影响的用户提供解决方案。慢雾安全团队第一时间介入分析,并将结果分享如下: 相关信息 合约地址 TreasureMarketplaceBuyer: 0x812cda2181ed7c45a35a691e0c85e231d218e273 TreasureMarketplace: 0x2e3b85f85628301a0bce300dee3a6b04195a15ee 漏洞细节分析 1. 用户通过 TreasureMarketplaceBuyer 合约中的 buyItem 函数去购买 NFT,该函数会先计算总共需要购买的价格并把支付所需的Token打入合约中,接着调用 TreasureMarketplace 合约中的 buyItem 从市场购买 NFT 到 TreasureMarketplaceBuyer 合约,接着在从 TreasureMarketplaceBuyer 合约中把 NFT 转给用户。 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。 可以看到Token转移均为 0,攻击者并没有付出任何成本就成功购买了 tokenID 为 3557 的 NFT,整个攻击流程与上面的漏洞细节分析中所讲的一致。 总结 本次漏洞的核心在于进行 ERC-721 标准的 NFT 转移前,缺少了对于传入的 _quantity 参数不为 0 的判断,导致了 ERC-721 标准的 NFT 可以直接被转移且计算价格时购买 NFT 所需费用被计算成 0。针对此类漏洞,慢雾安全团队建议在进行 ERC-721 标准的 NFT 转移前,需对传入的数量做好判断,避免再次出现此类问题。 原文链接 —- 编译者/作者:区块律动BlockBeat 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
慢雾:TreasureDAO NFT交易市场「零元购」漏洞分析
2022-03-03 区块律动BlockBeat 来源:区块链网络
LOADING...
相关阅读:
- TreasureDAO黑客已开始归还被盗NFT2022-03-03
- TreasureDAO:将全面审查代码,修复漏洞后重新部署NFT交易市场2022-03-03
- TreasureDAO NFT交易市场出现漏洞,项目团队正在修复2022-03-03
- 金色Web3.0日报|2月DeFi漏洞利用被盗资金达3.39亿美元2022-03-02
- TreasureDAO成员也抽过毯子?加密侦探告诉你究竟发生了什么2022-02-24