2023年4月9日,SushiSwap因未经验证的外部参数成为攻击目标,总损失约330万美元。
作为以太坊上拥有庞大用户基础的领先协议,此类顶级协议在合约升级过程中仍可能引入严重的新问题。这再次提醒DeFi社区,安全永远是首要任务。 此外,此次安全事件是由一名白帽安全研究员尝试进行资金救援而触发的,在社区引发了广泛讨论。本文将对此事件进行简要介绍,并将其列为2023年十大安全事件之一。
背景
SushiSwap
SushiSwap,一家知名的DEX,曾对Uniswap发起“吸血鬼攻击”,并取得了巨大的成功。其TVL一度飙升至80亿美元,目前仍保持在4亿美元左右。
授权 (Approval)
简而言之:授权某个合约从您的钱包中访问和转出特定代币的权限。
为了方便起见,许多合约默认请求无限额度的授权。许多用户出于对安全风险的担忧,只将少量资金存入各种协议。然而,这些用户却向协议授予了无限额度的资金授权。一旦协议被攻破,账户中所有已授权的代币都可能丢失。
漏洞
未经验证的外部参数
RouteProcessor2合约的 processRoute() 函数允许用户完全控制调用流程(参数 route)。
在 uniswapV3SwapCallback() 函数中,safeTransferFrom() 函数的 from 参数是从用户提供的 route 中解码出来的。
结果是,已授权RouteProcessor2合约的用户丢失了他们的资产。
攻击过程
此次事件涉及多个攻击交易,我们将以第一个攻击交易为例。 交易:0x43ff7e01423044cfb501b4fe9ef1386725c0ddc117dadd6e6620cb68bdeaf4f9
- 攻击者使用精心构造的长参数
route调用了易受攻击的RouteProcessor2合约的processRoute()函数。
processRouteInternal()函数基于用户提供的route创建了一个InputStream。
- 交易沿着攻击者的
route执行,直到到达swapUniV3()函数。请注意,pool是从stream中解码出来的,这意味着攻击者控制了要进行swap()的pool,并将其设置为lastCalledPool。
- 这调用了攻击者部署的恶意合约,然后该恶意合约通过传递恶意的
calldata回调了RouteProcessor2的uniswapV3SwapCallback()函数。 uniswapV3SwapCallback()函数需要msg.sender检查,但由于lastCalledPool已经被设置为恶意合约,因此黑客绕过了检查。重要的是,safeTransferFrom()函数的from参数是从攻击者构造的calldata中解码出来的。
- 受害者的资产被转移到攻击者部署的恶意合约中。
备受争议的白帽救援
值得一提的是,一位名为 @trust__90 的白帽用户发现了此问题并试图进行资金救援,但这次救援尝试却导致了一场灾难。
- 使用mempool广播交易,而不是私有RPC。
- 尝试救援的金额仅为100个以太坊,而不是所有面临风险的资金。
这为MEV机器人和其他攻击者提供了机会,他们执行了多个模仿交易,有效地耗尽了大部分资金。在此事件之后,@trust__90 遭到了批评,并试图为自己的行为辩护。
People are saying all kinds of terrible things while being uninformed so allow me to share more details.
— Trust (@trust__90) April 10, 2023
I've initiated coordination privately with Immunefi officials 3 hours before the white-hack. 90 minutes later, I realized the asset is currently used by the frontend and…
BlockSec救援
在此次攻击中,我们也救援了100个以太坊,并将资金返还给了受害者0xsifu。
迄今为止,我们已成功挫败了20多起真实世界的黑客攻击,并救援了价值超过1400万美元的资产。Hey, @0xSifu We have successfully blocked an attack transaction and rescued 100 Ether. Please get in touch with us.
— BlockSec (@BlockSecTeam) April 9, 2023
安全建议
升级应始终经过审计
这再次提醒DeFi社区,安全永远是首要任务。审计并非安全的保证,但没有审计肯定无法确保安全。
应对授权问题的缓解措施
2023年发生了多起涉及授权攻击的事件,我们借此机会重申管理授权的重要性。 一项安全实践是仅批准必要的金额,或者如果方便是优先考虑的,则批准略高于所需金额的额度。
BlockSec的MetaSuites提供便捷的授权诊断功能。此外,像Revoke Cash这样的工具也可以用来定期检查授权状态。
采用监控和自动响应机制
以太坊是一片黑暗森林,DeFi社区中的每个人都面临着各种风险和挑战,即使是安全专家。 2023年,我们推出了Phalcon,这是行业首个自动化响应系统,不仅用于监控攻击,还用于实时主动阻止威胁。Phalcon经过实战检验的能力已得到证实,成功挫败了20多起真实世界的黑客攻击,并救援了超过1400万美元的资产。这项创新确保了所有利益相关者都能更安心地入睡,因为有主动的措施来保护他们的投资。
阅读本系列的更多文章:
- 导语:2023年十大“精彩”安全事件
- #1:利用Flashbots Relay中的漏洞Harvest MEV机器人
- #2:Euler Finance事件:2023年最大规模的黑客攻击
- #3:KyberSwap事件:通过极其精妙的计算,高明地利用四舍五入错误
- #4:Curve事件:编译器错误导致无害源代码生成有缺陷的字节码
- #5:Platypus Finance:凭借运气躲过三次攻击
- #6:Hundred Finance事件:催化了易受攻击分叉协议中精度相关漏洞的浪潮
- #7:ParaSpace事件:与时间赛跑,挫败行业迄今为止最关键的攻击
- #9:MEV机器人0xd61492:从猎食者到猎物,一次巧妙的利用
- #10:ThirdWeb事件:信任模块之间的不兼容性暴露了漏洞



