Cointime

扫码下载App
iOS & Android

Metascan链上监控引擎发现合约漏洞:Zombier智能合约存在严重安全漏洞

项目方

摘要

2023年2月28号,Metascan链上监控引擎发现Ethereum链上刚开源合约zombier存在严重安全漏洞,该合约存在可重入攻击漏洞和参数校验漏洞等问题,如果项目方继续使用该合约,可能面临重大安全风险。详见漏洞原因分析报告。

合约地址

https://etherscan.io//address/0xd79f71e635f248ad362bb95e2d7a18c7f48728cc#code

漏洞函数

function mint(address master, uint256 TokenId, address target) external payable{ (bool success, ) = target.call{value: 0.000777 ether}(abi.encodeWithSignature("purchase(uint256)", 1)); if(success){ Tokenint(target).safeTransferFrom(address(this), master, TokenId); } }

漏洞原因

  • 合约的mint函数调用的target地址可以通过参数任意指定,导致攻击者重入攻击mint函数,同时攻击者完全可以自定义target 合约的safeTransferFrom函数,让对safeTransferFrom的调用永远成功;
  • 未校验用户发送的ETH数量(msg.value)等于转发给target合约的数量,也没有处理用户多发ETH的情况;
  • 未校验transferFrom函数的TokenId是否等于 purchase 得到的TokenId

修复建议

  • target合约地址仅在构造函数里初始化,或者通过白名单管理;
  • 添加nonReentrant修饰符预防重入攻击;
  • 添加校验保证用户发送的msg.value和发送给target地址的以太坊数量一致,或者返回用户多发的ETH;
  • 添加校验保证purchase函数调用得到的token和safeTransferFrom的token一致.

资金损失

  • 如果用户在调用mint函数时多发了ETH,ETH会留在当前合约;
  • 该链上合约当前没有ETH,如果当前合约有ETH,可以被黑客重入攻击,耗干合约内的ETH。

欢迎免费试用我们的产品,用于扫描您关心的智能合约。

Twitter: https://twitter.com/MetatrustLabs

评论

所有评论

推荐阅读