Back to Blog

当“SafeMint”不再安全:HypeBears安全事件的教训

Code Auditing
February 3, 2022
2 min read

在东八区时间 2 月 3 日上午,我们的系统报告了一笔针对 HypeBears NFT 合约的攻击交易 0xfa97c3476aa8aeac662dae0cc3f0d3da48472ff4e7c55d0e305901ec37a2f704。经过调查,我们发现这是由 ERC721 的 _safeMint 函数引起的重入攻击。

根本原因

该项目对一个账户可以铸造的 NFT 数量有限制。基本上,它有一个 addressMinted 的映射,用于记录一个账户是否已经铸造过 NFT。

在铸造 NFT 时,代码使用了 OZ 参考实现中的 _safeMint 函数。这个函数是 safe 的,因为它检查接收方是否可以接收 ERC721 代币。这可以防止 NFT 被铸造到无法处理 ERC721 代币的合约中。根据 文档:

如果 to 指的是一个智能合约,它必须实现 IERC721Receiver.onERC721Received,该函数在安全转账时被调用。以下代码显示了 OZ 对 _safeMint 函数的实现。

然而,这个外部函数调用会产生一个安全漏洞。具体来说,攻击者可以在 onERC721Received 回调中执行重入调用。例如,在 有漏洞的 HypeBears 合约 中,攻击者可以在 onERC721Received 回调中再次调用 mintNFT 函数(因为 addressMinted 尚未更新)。

攻击

下图显示了 攻击交易

教训

安全研究人员讨论过 SafeMint 带来的风险 链接1 链接2。然而,我们仍然可以看到有漏洞的代码和实际发生的攻击。正如在 QBridge 安全事件 中的 safeTransfer 中所示,使用一个 安全 的函数并不能保证一个 安全 的合约 😃。

Sign up for the latest updates
通讯简报 - 2026年7月
Security Insights

通讯简报 - 2026年7月

2026年7月,三起最大DeFi事件共造成约6790万美元损失,涉及Arbitrum和Solana。AFX Trade因供应链攻击导致验证者签名权被盗,损失约2415万美元;Ostium的OLP金库因预言机基础设施被攻破,攻击者提交恶意价格,损失约2375万美元;BonkDAO攻击者花费440万美元获取足够投票权,通过恶意国库转账提案,损失约2000万美元。三起事件均表明协议安全边界远超智能合约代码本身。

~$3950万美元损失:Allbridge、Wanchain等项目 | BlockSec周报
Security Audits

~$3950万美元损失:Allbridge、Wanchain等项目 | BlockSec周报

2026年7月20-26日,Solana、以太坊、BNB Chain、Arbitrum、Zilliqa和Cardano共发生8起重大安全事件,总损失约3950万美元。其中Allbridge Core事件(约165万美元)暴露了Solana输入验证漏洞,同一Pool账户被同时接受为两种swap角色;Wanchain(约50万美元,Cardano桥验证器消息编码缺陷);Zilliqa(约40万美元,Ledger应用自2019年存在的随机数生成缺陷);Lien Finance(约54.2万美元,债券交易验证逻辑缺陷)。

~$135万损失:BarnBridge、DeFiTuna | BlockSec周报
Security Insights

~$135万损失:BarnBridge、DeFiTuna | BlockSec周报

本周报涵盖2026年7月13日至19日的2起安全事件,以太坊和Solana总损失约135万美元。Solana借贷协议DeFiTuna损失约57万美元,原因是仓位健康检查将零值仓位视为健康状态而忽略未偿债务,攻击者利用受控掉期路由和低流动性池触发此漏洞。BarnBridge损失约77.6万美元,攻击者利用以太坊上已弃用但仍活跃的治理系统通过恶意提案,盗取用户授权的USDC。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit