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:
稳定币初创公司Liquity计划实施“零治理”:金色财经报道,即将启动的稳定币初创公司Liquity计划实施“零治理”。最值得注意的是,Liquity的智能合约将根据需要进行调整(不需要由代币持有者组成的治理委员会)。Liquity将没有治理代币,但仍计划使用流动性挖掘来促进早期采用。其提供了一个“增长代币”(GT),持有者将持续通过Liquity费用获得少量收益。最近的电话会议尚未解决有关Liquity将通过GT奖励哪些行为的问题。[2020/8/26]
0x2e3b85f85628301a0bce300dee3a6b04195a15ee
Gate.io研究院发布“零知识证明于区块链中的落地应用”报告:Gate.io研究院于今日发布“零知识证明于区块链中的落地应用”报告。报告指出,在区块链技术加快发展的背景下,多种应用场景应运而生,随之而来的是用户在隐私安全方面的更高需求。当前,众多区块链开发团队提出了多种不同的用户隐私安全保护机制。
其中,零知识证明与区块链技术相结合作为一种新方案为提高区块链隐私安全性提供了更多可能。该报告结合“零知识证明”的采纳项目、区块链系统“Zcash”的相关情况,对“Zcash”加密技术以及零知识证明进行了深入探讨。 详情点击原文链接。[2020/6/28]
漏洞细节分析
金色财经现场报道 EosStore市场负责人罗斌:组建EOS社区的“零一二三”:金色财经现场报道,在EosStore竞选超级节点暨“柚子资本发布会”上,EosStore市场负责人罗斌在演讲中指出:“组建EOS社区将秉持“车库咖啡的精神+投资孵化的功能+公平、开放的社区”的模式,做到‘零一二三’。零:社群的零门槛;一:一条主线,即‘一切以商业落地为核心’;二:投资和孵化的功能,投资者社区与开发者社区形成互动链接;三:组建三个职能环,投研团队、资源匹配团队、市场活动部门,我们会基于以上的几点,提供力所能及的服务。”[2018/5/13]
1. 用户通过 TreasureMarketplaceBuyer 合约中的 buyItem 函数去购买 NFT,该函数会先计算总共需要购买的价格并把支付所需的代币打入合约中,接着调用 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。
可以看到代币转移均为 0,攻击者并没有付出任何成本就成功购买了 tokenID 为 3557 的 NFT,整个攻击流程与上面的漏洞细节分析中所讲的一致。
总结
本次漏洞的核心在于进行 ERC-721 标准的 NFT 转移前,缺少了对于传入的 _quantity 参数不为 0 的判断,导致了 ERC-721 标准的 NFT 可以直接被转移且计算价格时购买 NFT 所需费用被计算成 0。针对此类漏洞,慢雾安全团队建议在进行 ERC-721 标准的 NFT 转移前,需对传入的数量做好判断,避免再次出现此类问题。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。