返回部落格

#8:SushiSwap 事件:拙劣的救援嘗試引發一系列模仿攻擊

Code Auditing
2024年2月18日
閱讀約 6 分鐘

2023 年 4 月 9 日,SushiSwap 因未經驗證的外部參數(Unverified External Parameter)成為駭客攻擊目標。總損失約為 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 機器人和其他攻擊者提供了機會,他們執行了多筆跟風交易(copycat transactions),有效地掏空了大部分資金。事後,@trust__90 面臨強烈抨擊,並試圖為其行為辯護。

BlockSec 救援

在此次攻擊中,我們同樣救援了 100 枚以太幣,並將資金歸還給了受害者 0xsifu。

迄今為止,我們已成功挫敗了超過 20 起現實世界中的駭客攻擊,並救援了超過 14,000,000 美元的資產。

安全建議

升級必須進行審計

這提醒了整個 DeFi 社群:安全性應始終放在首位。審計並不能保證絕對安全,但缺乏審計絕對無法確保安全。

針對授權問題的緩解措施

2023 年發生了大量涉及授權攻擊的事件,我們藉此機會再次強調管理授權的重要性。 實用的安全做法是只授予必要的額度;若考慮便利性,建議僅授予比需求稍大的額度。

BlockSec 的 MetaSuites 提供了便捷的「授權診斷」功能。此外,您也可以使用像 Revoke Cash 這樣的工具定期檢查授權狀態。

採用監控與自動化響應機制

以太坊如同黑暗森林,DeFi 社群中的每個人都面臨著各種風險與挑戰,即便是安全專家也不例外。 2023 年,我們推出了 Phalcon Security,這是業界首個自動化響應系統,其設計不僅用於監控攻擊,更用於即時主動阻斷威脅。Phalcon 經過實戰檢驗的能力已證明了其有效性——成功挫敗了超過 20 起現實世界的駭客攻擊,保護了超過 14,000,000 美元的資產。這項創新確保了所有利益相關者都能更安心地入睡,因為他們知道有主動式安全措施在保護他們的投資。

閱讀本系列的其他文章:

訂閱最新動態
Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇
Security Insights

Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇

2026年9月24日,攻擊者利用第三方安全產品漏洞,獲取內部憑證並偽造提款指令,導致約3.875億美元從Bitget部分營運錢包(涵蓋Ethereum、其他EVM網絡、XRP Ledger、Zcash及TRON)轉出;私鑰及冷錢包未受影響。本文深入梳理事件路徑與資金流向,分析快速轉換為原生資產及生態恢復應對,提出機構縱深防禦框架,並說明授權區塊鏈滲透測試如何驗證跨層假設。

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly
Security Insights

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly

本報告涵蓋2026/09/14至2026/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至2026/09/13,探討兩起造成約3.2億美元損失的安全事件,包括前份報告未提及、發生於2026/09/06的Liquid Network漏洞事件。較大者為該Liquid Network漏洞:Elements中的rangeproof驗證快取藉由雜湊四個欄位(其中兩個長度可變)串接而成金鑰,且未標示欄位邊界,導致某輸出的驗證結果被錯誤套用至另一個未經檢驗證明的輸出,使攻擊者得以憑空創造4,000枚無擔保L-BTC,並將幾乎全數兌回比特幣。在橫跨BNB Smart Chain、Ethereum與Rootstock的Symbiosis跨鏈橋比特幣路徑中,讀取比特幣存款的鏈下程式碼從存款人可自行控制的欄位取得其身份,並在未檢查手續費是否為負值的情況下自存款中扣除,使330聰的存款鑄造出`46,116,860,184.27388234 syBTC`;其須賣出所經之資金池僅有11.26 syBTC,致使流動性提供者與用戶損失約9.97 BTC(約77萬美元)。

Web3 最佳安全審計方

在上線之前驗證設計、程式碼與業務邏輯,對標業內最高安全標準。

BlockSec 審計
#8:SushiSwap 事件:拙劣的救援嘗試引發一系列模仿攻擊