返回博客

当“安全转账”不再安全:QBridge 安全事件的启示

Code Auditing
2022年1月28日
阅读约 2 分钟

1月28日,QBridge 遭到攻击,约8000万美元的资产被盗。经过分析,我们发现代码中的根本原因是 safeTransfer(以及 safeTransferFrom)函数的实现方式。

根本原因

首先,该项目没有使用主流的 OpenZeppelin SafeERC20 库来进行代币转账。相反,他们自己实现了一个名为 SafeToken 的库。

其次,该实现没有检查目标地址是否为有效合约(或是否为零地址)。

第三,EVM 的底层调用在目标合约为零地址时不会返回 false。 这与开发者的常识相违背。

当然,此次事件还涉及其他原因,例如将零地址加入白名单。然而,如果代码能够正确处理这种特殊情况,它就不会存在漏洞。

顺便提一下:还有其他项目使用了类似的代码。它们可能也容易受到类似的问题影响。

实验

为了证实第三个原因——即当目标合约为零地址时 VM 不会返回 false,我们开发了一个测试合约,如下所示:

执行 TestSafeTransfer.test() 并不会回滚(revert)。

教训与风险缓解措施

我们建议:

  • 除非有非常充分的理由,否则请使用现成的主流库,而不要重复造轮子。
  • 在资产转账前后检查余额,以确保转账的资产数量符合预期。这也能够避免通缩和通胀代币带来的问题。

关于 BlockSec

BlockSec 是一家由多位世界顶尖安全专家于2021年创立的先驱区块链安全公司。公司致力于提升新兴 Web3 世界的安全性和易用性,以促进其大规模应用。为此,BlockSec 提供智能合约和 EVM 链安全审计服务、用于安全开发和主动阻断威胁的 Phalcon 平台、用于资金追踪与调查的 MetaSleuth 平台,以及帮助 Web3 构建者高效探索加密世界的 MetaDock 插件。

迄今为止,公司已服务过 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap 等超过 300 家知名客户,并获得了包括经纬创投(Matrix Partners)、毅峰资本(Vitalbridge Capital)和分布式资本(Fenbushi Capital)在内的顶级投资机构两轮数千万美元的融资。

官方网站:https://blocksec.com/

官方推特账号:https://twitter.com/BlockSecTeam

订阅最新动态
NEAR Intents 漏洞利用事件:退款缺陷与安全启示
Security Insights

NEAR Intents 漏洞利用事件:退款缺陷与安全启示

NEAR Intents 漏洞利用事件中,攻击者利用超额退款事件,使存入的资产退回后内部余额仍得以保留。本文分析重建了交易回执中的执行流程,以及在 BNB Chain 上进行的七笔提款;这些提款合计 3,865,021 USDT。本文还区分了这些资金流出与项目方报告的全部资金追回,并概述了开发和审计 NEAR 智能合约时需要考虑的安全问题。

损失约557万 USD:X100 Freezer、NEM 遭攻击|BlockSec周报
Security Insights

损失约557万 USD:X100 Freezer、NEM 遭攻击|BlockSec周报

本周报告涵盖 2026年10月19日–2026年10月25日 期间以太坊和 BNB Chain 上发生的两起安全事件。报告分析了利用闪电贷资金接管 X100 Freezer 治理权的事件,以及影响 BNB Chain 上一个 NEM 代币流动性池的税费结算缺陷。报告统计范围内的估计损失合计约 557万 USD:其中,具有代表性的 X100 交易造成约 ~475万 USD 的损失,NEM 流动性池事件造成约 ~82.0万 USD 的损失。该合计金额不包括另行报告的后续 X100 资金提取。

Autheo Network、UNCX 遭黑客攻击,损失约387万 USD | BlockSec 周报
Security Insights

Autheo Network、UNCX 遭黑客攻击,损失约387万 USD | BlockSec 周报

本周报告涵盖 2026年10月12日–2026年10月18日 期间的 3 起安全事件,估计总损失约为 387万 USD。Autheo Network 因私钥泄露损失约 176万 USD,Qubic Wallet 因种子生成机制薄弱损失约 130万 USD;UNCX Network 在 Ethereum、BNB Chain、Base 和 Robinhood Chain 上的 Smart Token Vesting V2 合约因会计核算错误损失约 80.7万 USD。重点分析的 UNCX 事件说明,有缺陷的总份额计算将按不同代币与份额兑换比率创建的归属批次混合计算,从而使人能够从共享资金池超额提取。

Web3 最佳安全审计方

在上线之前验证设计、代码与业务逻辑,对标业内最高安全标准。

BlockSec 审计