今天看啥  ›  专栏  ›  3072

智能合约漏洞入门(9)未保护的回调

3072  · 公众号  ·  · 2024-07-22 10:59

文章预览

  描述: 合约 ContractTest 利用回调功能绕过了 MaxMint721 合约设置的最大铸造限制。实现这一点的方法是触发 onERC721Received 函数,该函数内部再次调用了 mint 函数。因此,尽管 MaxMint721 试图限制用户可以铸造的代币数量为 MAX_PER_USER,ContractTest 合约仍然成功地铸造了超过该限制的代币。 场景: 这个练习涉及一个通过回调函数铸造更多 NFT 的合约。 缓解措施: 遵循检查-效果-交互模式并使用 OpenZeppelin Reentrancy Guard。 参考: https://blocksecteam.medium.com/when-safemint-becomes-unsafe-lessons-from-the-hypebears-security-incident-2965209bda2a https://www.paradigm.xyz/2021/08/the-dangers-of-surprising-code MaxMint721 合约: contract MaxMint721 is ERC721Enumerable {     uint256 public MAX_PER_USER =  10 ;      constructor () ERC721("ERC721", "ERC721") {}      function   mint ( uint256 amount )  external   {          require (     ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览