关键信息 漏洞名称和标识符 名称: Money Missing Opportunity (MMO) 地址: 0x41d8b848537f79c14f2491ecdf86f84e7 CVE ID: CVE-2022-56207 CWE ID: CWE-754: Improper Check for Unusual or Exceptional Conditions 概述 ERC721 函数在实现中缺少验证,以确保 地址不是零地址(0x0)。这允许经过批准的调用者用户(代币所有者)通过将 NFT 转移到零地址来永久锁定 NFT,导致不可恢复的资产损失。 核心函数 利用步骤 1. 用户是 NFT 的当前所有者。 2. 攻击者获得转移用户 NFT 的批准。 3. 攻击者将 NFT 转移到零地址。 4. 结果: - NFT 永久锁定在零地址。 - 合约内没有恢复机制,导致不可逆的资产损失。 影响 潜在用户财务损失: 用户可能因恶意交易或无意误用而失去 NFT。 不可恢复的资产损失: 转移到零地址的 NFT 永久无法访问。 违反 ERC721 标准: 无明确公开燃烧操作的转移到零地址违反了 ERC-721 要求。 索引和生态系统不一致: 索引器如 The Graph 或 OpenSea 可能将转移解释为燃烧,但合约状态可能由于缺少燃烧日志而不一致。 修复建议 在 函数的开始处添加以下检查: