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

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

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

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

慢雾:仍有大部分钱包支持eth_sign,仅少部分钱包提供安全风险警告:金色财经报道,在加密货币NFT板块,越来越多的钓鱼网站滥用 eth_sign 签名功能来进行盲签欺诈,提醒或禁用这种低级的签名方法对于保护用户安全是至关重要的,不少 Web3 钱包已经采取相关措施来对这种危险的签名方法进行安全提示和限制。仍有一大部分加密钱包支持 eth_sign,其中少部分钱包提供 eth_sign 安全风险警告。如果用户仍想要使用 eth_sign,他们可以选择支持该功能的加密钱包。但是,用户在使用这些钱包时需要特别注意安全警告,以确保其交易的安全性。[2023/5/11 14:57:14]

慢雾:靓号黑客已获取到ParaSwap Deployer和QANplatform Deployer私钥权限:10月11日消息,据慢雾区情报,靓号黑客地址之一(0xf358..7036)已经获取到ParaSwap Deployer和QANplatform Deployer私钥权限。黑客从ParaSwap Deployer地址获取到约1千美元,并在QANplatform Deployer地址做了转入转出测试。慢雾MistTrack对0xf358..7036分析后发现,黑客同样盗取了The SolaVerse Deployer及其他多个靓号的资金。截止目前,黑客已经接收到超过17万美元的资金,资金没有进一步转移,地址痕迹有Uniswap V3、Curve、TraderJoe,PancakeSwap、OpenSea和Matcha。慢雾MistTrack将持续监控黑客地址并分析相关痕迹。[2022/10/11 10:31:05]

2.在TreasureMarketplace合约中:

慢雾:ERC721R示例合约存在缺陷,本质上是由于owner权限过大问题:4月12日消息,据/img/20230508201755410703/2.jpg "/>

慢雾:Lendf.Me攻击者刚归还了126,014枚PAX:慢雾安全团队从链上数据监测到,Lendf.Me攻击者(0xa9bf70a420d364e923c74448d9d817d3f2a77822)刚向Lendf.Me平台admin账户(0xa6a6783828ab3e4a9db54302bc01c4ca73f17efb)转账126,014枚PAX,并附言\"Better future\"。随后Lendf.Me平台admin账户通过memo回复攻击者并带上联系邮箱。此外,Lendf.Me攻击者钱包地址收到一些受害用户通过memo求助。[2020/4/20]

可以发现若传入的_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-0:942ms