撰文:Victory & Lisa

 

背景

 

5 月 22 日,據社區消息,SUI 生態上的流動性提供商 Cetus 疑似遭攻擊,流動性池深度大幅下降,Cetus 上多個代幣交易對出現下跌,預計損失金額超過 2.3 億美元。隨後,Cetus 發佈公告稱:「我們協議中檢測到了一起事件,安全起見,智能合約已暫時暫停。目前,團隊正在對該事件展開調查。我們很快會發布進一步的調查聲明。」

 

事件發生後,慢霧安全團隊第一時間介入分析,併發布安全提醒。以下是對攻擊手法及資金轉移情況的詳細解析。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

(https://x.com/CetusProtocol/status/1925515662346404024)

 

相關信息

 

其中一筆攻擊交易:

https://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x

 

攻擊者地址:

0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06

 

被攻擊的池子地址:

0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc

 

涉及代幣:

haSUI / SUI

 

攻擊分析

 

此次事件的核心是攻擊者通過精心構造參數,使溢出發生但又能繞過檢測,最終用極小的 Token 金額即可換取鉅額流動性資產,以下爲具體步驟解析:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

1.攻擊者首先通過閃電貸借出了10,024,321.28 個 haSUI,導致池子價格從18,956,530,795,606,879,104暴跌至18,425,720,184762886,價格下跌幅度達到99.90%。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

2.攻擊者精心選擇了一個極窄的價格區間開立流動性頭寸:

 

  • Tick 下限:300000(價格:60,257,519,765,924,248,467,716,150)

  • Tick 上限:300200 (價格:60,863,087,478,126,617,965,993,239)

  • 價格區間寬度:僅1.00496621%

 

3.接着就是此次攻擊的核心,攻擊者聲明要添加10,365,647,984,364,446,732,462,244,378,333,008單位的巨大流動性,但由於存在漏洞,系統只收取了1 個代幣 A。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

我們來分析一下攻擊者爲什麼能夠用1 個 Token 兌換出鉅額流動性。其核心原因在於 get_delta_a函數中的 checked_shlw 存在溢出檢測繞過漏洞。攻擊者正是利用了這一點,使得系統在計算實際需要添加多少 haSUI 時出現了嚴重偏差。由於溢出未被檢測,系統誤判了所需 haSUI 的數量,導致攻擊者僅需極少的 Token,就能兌換出大量的流動性資產,從而實現了攻擊。

 

當系統計算添加如此巨大流動性需要多少 haSUI 時:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

這裏的關鍵在於 checked_shlw 函數的實現存在嚴重缺陷。實際上,任何小於 0xffffffffffffffff << 192 的輸入值都會繞過溢出檢測。然而,當這些值被左移 64 位時,結果會超出 u256 的表示範圍,此時高位數據被截斷,導致得到的結果遠小於理論值。這樣一來,系統在後續計算中就會低估所需的 haSUI 數量。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

  • 錯誤掩碼:0xffffffffffffffff << 192= 非常大的數值(約2^256-2^192)

  • 幾乎所有輸入都小於這個掩碼,繞過溢出檢測

  • 真正的問題:當n >= 2^192時,n << 64會超出u256 範圍並被截斷

攻擊者構造的中間值liquidity * sqrt_price_diff =6277101735386680763835789423207666908085499738337898853712:

  • 小於錯誤掩碼,繞過溢出檢測

  • 但在左移64 位後會超出 u256 最大值,從而導致超出的部分被截斷

  • 導致最終計算結果約小於1,但由於是向上取整,quotient算出來就等於1

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

4.最後攻擊者移除流動性,獲得鉅額代幣收益:

 

  • 第一次移除:獲得10,024,321.28 個 haSUI

  • 第二次移除:獲得1個haSUI

  • 第三次移除:獲得10,024,321.28 個 haSUI

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

5.攻擊者歸還閃電貸,淨獲利約10,024,321.28個haSUI 和5,765,124.79 個SUI,攻擊完成。

 

項目方修復情況

 

攻擊發生後,Cetus 發佈了修復補丁。具體修復代碼可參考。

 

修復後的checked_shlw函數如下:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

修復說明:

 

  • 將錯誤的掩碼 0xffffffffffffffff << 192 修正爲正確的閾值 1 << 192

  • 將判斷條件從 n > mask 修正爲 n >= mask

  • 確保當左移 64 位可能導致溢出時,能正確檢測並返回溢出標誌

 

MistTrack 分析

 

據分析,攻擊者 0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06 獲利約 2.3 億美元,包括 SUI、vSUI、USDC 等多種資產。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

我們發現攻擊者在兩天前就準備好了 Gas Fee,然後在攻擊之前進行了一次嘗試,但失敗了:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

獲利後,攻擊者將部分資金如

 

USDC、SOL、suiETH 通過跨鏈橋如 Sui Bridge、Circle、Wormhole、Mayan 跨鏈到 EVM 地址 0x89012a55cd6b88e407c9d4ae9b3425f55924919b:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

其中,5.2341 WBNB 跨鏈到了 BSC 地址 0x89012a55cd6b88e407c9d4ae9b3425f55924919b:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

接着,攻擊者將價值 1,000 萬美元的資產存入 Suilend:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

攻擊者還將 24,022,896 SUI 轉入新地址 0xcd8962dad278d8b50fa0f9eb0186bfa4cbdecc6d59377214c88d0286a0ac9562,目前暫未轉出:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

幸運的是,據 Cetus 稱,在 SUI 基金會及其他生態系統成員合作下,目前已成功凍結了在 SUI 上的 1.62 億美元的被盜資金。

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

(https://x.com/CetusProtocol/status/1925567348586815622)

 

接下來,我們使用鏈上反洗錢與追蹤工具 MistTrack 分析 EVM 上接收跨鏈資金的地址 0x89012a55cd6b88e407c9d4ae9b3425f55924919b。

 

該地址在 BSC 上收到 5.2319 BNB,暫未轉出:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

該地址在 Ethereum 上收到 3,000 個 USDT、4,088 萬個 USDC、1,771 個 SOL 和 8,130.4 個 ETH。

 

其中,USDT、USDC 和 SOL 通過 CoW Swap、ParaSwap 等兌換爲 ETH:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

接着,該地址將 20,000 ETH 轉入地址 0x0251536bfcf144b88e1afa8fe60184ffdb4caf16,暫未轉出:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

目前該地址在 Ethereum 上的餘額爲 3,244 ETH:

 

慢雾:Cetus被盗2.3亿美元,解析攻击手法及资金转移情况

 

MistTrack 已將以上相關地址加入惡意地址庫,同時,我們將對持續對地址餘額進行監控。

 

總結

 

本次攻擊展示了數學溢出漏洞的威力。攻擊者通過精確計算選擇特定參數,利用 checked_shlw 函數的缺陷,以 1 個代幣的成本獲得價值數十億的流動性。這是一次極其精密的數學攻擊,慢霧安全團隊建議開發人員在智能合約開發中嚴格驗證所有數學函數的邊界條件。