freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

TreasureDAO攻击事件分析
2022-03-04 13:53:49
所属地 陕西省

0x1 事件背景

Treasure 通过一种开放和可组合的方法,为日益增长的元宇宙架起了桥梁,使NFTs、DeFi和游戏融合在一起。

零时科技区块链安全情报平台监控到消息,北京时间2022年3月3日,TreasureDAO遭到黑客攻击,超过百枚NFT Token被盗,价值约140万美元,零时科技安全团队及时对此安全事件进行分析。

0x2 攻击信息

零时科技安全团队通过追踪分析,主要攻击信息如下:

  • 攻击者钱包地址

https://arbiscan.io/address/0x9b1acd4336ebf7656f49224d14a892566fd48e68

  • 攻击者交易

https://arbiscan.io/tx/0xb169e20b45c6a5b7e5726c812af73c0b48996a4db04b076d6ef484ca5a300d36

  • 出现漏洞的官方合约地址

TreasureMarketplaceBuyer

https://arbiscan.io/address/0x812cda2181ed7c45a35a691e0c85e231d218e273#code

TreasureMarketplace

https://arbiscan.io/address/0x2e3b85f85628301a0bce300dee3a6b04195a15ee#code

0x3 攻击分析

先来看一下攻击者获利的交易操作:

从攻击交易可以明确,攻击者调用TreasureMarketplaceBuyer合约中buyItem方法获取了NFT,并且攻击者提供的购买资金为0,这里需要注意buyItem方法中第四个参数_quantity传参为0。

下面直接来看TreasureMarketplaceBuyer合约buyItem方法。

分析buyItem方法可以明确,这里的_quantity参数,也就是购买数量由用户输入,但是在37行计算时,价格和购买数量零相乘,会得到最终价格也为零,之后的用户给合约转账也是零。也就是说用户完成了零资金购买,下面继续分析攻击者如何将零资金购买的NFT提到自己账上,转移资金后,这里调用了marketplace合约中buyItem方法,继续跟进:

上图buyItem方法中两个判断条件,首先对该NFT的所有者进行了异同判断,之后对该NFT进行了数量判断,由于攻击者传参为零,所以这里很轻易的可以绕过判断,最终零成本购买NFT成功,攻击者通过此漏洞,多次调用buyItem方法零成本获取了大量NFT Token。

目前Treasure发布公告称已冻结交易,同时攻击者也在归还NFT。

0x4 总结

攻击者虽然通过合约进行零资金购买NFT,但随后又逐步在归还获取的NFT Token。暂时不能确定是否为测试人员所为,希望用户及官方不会有太大的资金损失。通过此次攻击事件来看,攻击者抓住了对合约对零资金购买NFT的限制缺失,导致通过该漏洞获取大量NFT Token,所以对于以上合约漏洞,零时科技安全团队给出以下建议。

0x5 安全建议

  • 建议合约应严格判断用户输入购买数量的合理性
  • 建议合约限制零资金购买NFT的可能性
  • 建议对于ERC721及ERC1155协议的NFT Token进行严格区分,避免混淆情况发生
# 攻击事件 # NFT # 元宇宙
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者