Back to Blog

第8期:SushiSwap事件:拙劣的救援尝试引发一系列模仿攻击

Code Auditing
February 18, 2024
6 min read

2023年4月9日,SushiSwap 因未验证的外部参数漏洞而遭到攻击。此次事件造成的总损失约为330万美元。

作为以太坊生态中拥有庞大用户群的头部协议,此类顶级协议在合约升级过程中仍有可能引入严重的漏洞。这再次提醒 DeFi 社区,安全永远应放在首位。 此外,本次安全事件是由一名白帽安全研究员试图营救资金的操作所触发的,这在社区内引发了广泛讨论。我们在此对该事件进行简要介绍,并将其列为2023年十大安全事件之一。

背景

SushiSwap

SushiSwap 是一流的去中心化交易所(DEX),曾对 Uniswap 发起“吸血鬼攻击”并取得了巨大成功。其锁仓量(TVL)巅峰时期曾达到80亿美元,目前仍维持在4亿美元左右。

授权(Approval)

简而言之,授权即授予特定合约访问并从你的钱包中转出某种代币的权限

为了方便起见,许多合约默认会请求无限额的授权。许多用户因担心安全风险,只会在各个协议中存入少量资金。然而,这些用户却授予了协议无限的资金额度授权。如果某个协议遭到攻击,账号中所有已授权的代币都可能损失殆尽。

漏洞分析

未验证的外部参数

RouteProcessor2 合约的 processRoute() 函数允许用户完全控制调用流程(通过参数 route)。 而在 uniswapV3SwapCallback() 函数中,safeTransferFrom() 的参数 from 是从用户传入的 route 中解码出来的。 因此,所有授权过 RouteProcessor2 合约的用户资产均面临被盗风险。

攻击过程

本次事件涉及多笔攻击交易,我们以第一笔攻击交易为例进行说明。 交易哈希:0x43ff7e01423044cfb501b4fe9ef1386725c0ddc117dadd6e6620cb68bdeaf4f9

  1. 攻击者调用了存在漏洞的 RouteProcessor2 合约的 processRoute() 函数,传入了一个精心构造的长参数 route
  2. processRouteInternal() 根据用户提供的 route 创建了一个 InputStream
  3. 交易流程按照攻击者构造的 route 执行,直至到达 swapUniV3()。值得注意的是,pool 是从 stream 中解码出来的,这意味着攻击者可以控制在哪个 pool 中进行 swap(),并将其设置为 lastCalledPool
  4. 这调用了攻击者部署的恶意合约,攻击者随后只需传递恶意的 calldata 来回调 RouteProcessor2 的 uniswapV3SwapCallback()
  5. uniswapV3SwapCallback() 本应有 msg.sender 检查,但由于 lastCalledPool 已被篡改为恶意合约,攻击者成功绕过了该检查。关键在于,safeTransferFrom() 的参数 from 是从攻击者构造的 calldata 中解码出来的。
  6. 受害者的资产被转移到了攻击者部署的恶意合约中。

争议性的白帽营救

值得一提的是,一位名为 @trust__90 的白帽发现并试图营救资金,但这一营救尝试引发了灾难。

  • 他直接使用内存池(mempool)广播交易,而不是通过私有 RPC 节点。
  • 他试图仅营救100个以太币,而非全部处于风险中的资产。

这一举动为 MEV 机器人和其他攻击者打开了方便之门,他们通过执行多笔模仿攻击交易,迅速抽走了大部分资金。事发后,@trust__90 面临舆论压力并试图为自己的行为辩护

BlockSec 的营救行动

在此次攻击中,我们也成功拦截了一笔由 MEV 机器人发起的攻击,并找回了100个以太币,随后将其归还给了受害者 0xsifu。

迄今为止,我们已成功阻断超过20起真实的黑客攻击,救回了价值超过1400万美元的资产。

安全建议

合约升级必须经过审计

这再次提醒 DeFi 社区,安全永远应放在首位。审计并不能保证绝对安全,但缺乏审计则绝对无法保证安全。

针对授权问题的缓解措施

2023年出现了大量涉及授权漏洞的攻击事件,我们借此机会重申管理代币授权的重要性。 最佳实践是仅授予必需的额度;如果必须考虑便利性,也应仅在必要基础之上稍微多授权一点额度。

BlockSec 的 MetaSuites 提供了便捷的“授权检测”功能。此外,用户还可以使用 Revoke Cash 等工具定期检查自己的授权状态。

采用监控与自动响应机制

以太坊生态是一个黑暗森林,即使是安全专家,DeFi 社区的每一个人也都面临着各种风险和挑战。 2023年,我们推出了 Phalcon Security,这是业内首个自动化响应系统,其设计初衷不仅在于监控攻击,更在于实时主动拦截威胁。Phalcon 经受住了实战考验,至今已成功阻断超过20起真实黑客攻击,挽回资产价值超过1400万美元。这一创新确保了所有利益相关者能在采取主动保护措施的前提下,更加放心地参与投资。

阅读本系列的其他文章:

Sign up for the latest updates
Harmony跨分片ONE铸币漏洞 + 约4700万美元私钥丢失 | BlockSec
Security Insights

Harmony跨分片ONE铸币漏洞 + 约4700万美元私钥丢失 | BlockSec

2026年8月10日至16日期间,共5起重大安全事件,量化损失约4700万美元。重点分析Harmony第一层链的实现缺陷:跨分片收据重放导致原生ONE被非法铸造——目标分片依据未验证的MerkleProof.ShardID和BlockNum字段而非签名的源区块头来标记收据已花费,致使已入账收据可被重放而无对应源分片扣款。约3.01万亿ONE被伪造,但其名义价值远超代币市值,未变现也未确认为实际损失,故不计入总额。约4700万美元损失来自私钥泄露(未知巨鲸钱包约2500万美元、Kite约1400万美元、Coinsbuy约790万美元)及Fox业务逻辑漏洞(约11.7万美元)。

~$160万损失:Moke代币与LpdFi遭黑客攻击 | BlockSec周报
Security Insights

~$160万损失:Moke代币与LpdFi遭黑客攻击 | BlockSec周报

2026年8月3-9日,BNB Chain发生2起重大安全事件,总损失约160万美元,均源于价格操纵。LpdFi事件(约69.7万美元):攻击者利用同一PancakeSwap流动性池储备同时用于订单估值和利息赎回的漏洞,虚增本金并操纵池子以索取超额利息。Moke Token事件(约90.6万美元):攻击者结合可操纵的现货价格与重复的LP分红计算,多次领取虚高的MOKE及BNB分红。

COLDCARD事件:当钱包的"随机"助记词并不随机
Security Insights

COLDCARD事件:当钱包的"随机"助记词并不随机

COLDCARD固件存在静默构建集成漏洞,导致比特币种子生成回退至软件随机数生成器,弱随机性使钱包种子可被离线恢复。由于漏洞存于种子本身,固件更新无法修复;截至2026年8月7日,已核实损失达1,405 BTC(约9100万美元),私下估计高达2,055 BTC。

Best Security Auditor for Web3

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

BlockSec Audit
第8期:SushiSwap事件:拙劣的救援尝试引发一系列模仿攻击