返回博客

当“安全转账”不再安全: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

订阅最新动态
损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly
Security Insights

损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly

本报告覆盖2026/09/14至09/20,分析以太坊与Starknet上两起共约1130万美元损失的安全事件。较大一起中,多重调用路由器将自身地址当作调度目标,致嵌套调用以路由器已授权身份而非外部调用者身份进入Safe钱包的Gateway模块,约2900个aEthrsETH被转入攻击者创建的Uniswap v4池。Starknet上,Nostra预言机仅需一个聚合来源,三个价格源中仅两个参与聚合时,被操纵的浅池报价与正常报价平均,使NSTR估值约49.52美元,支持约350万美元超额抵押借贷。

~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec
Security Insights

~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec

本报告覆盖2026/09/07-09/13,分析两起共损失约3.2亿美元的安全事件,含此前未覆盖的Liquid Network于09/06遭利用事件。较大事件中,Elements的rangeproof验证缓存因字段拼接无分隔符导致验证结果错配,攻击者伪造4000枚无支撑L-BTC并几乎全部兑出。Symbiosis跨链桥比特币路线因手续费未做负值校验,330聪存款铸造出46,116,860,184.27388234 syBTC,流动性池仅存11.26 syBTC,致约970万美元损失(约9.97 BTC)。

约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly
Security Insights

约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly

过去一周(2026/08/31-2026/09/06),Injective、Solana、Ethereum和Flow EVM上发生四起安全事件,损失约940万美元。最大的是Injective漏洞,保险基金标识符与二元期权市场标识符冲突,结算路径未比较其面额,损失约480万美元;Solana上的Aquifer因交换路径调用未验证的调用者提供的Token Program,损失约247万美元;Ethereum上的Notional Finance V1因未检查的uint128转换将债务估值为零,损失约173万美元。Flow EVM上的Ankr FLOW因质押入口跳过暂停保护并按过时比率铸币,损失约41万美元。

Web3 最佳安全审计方

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

BlockSec 审计