撰文:Victory & Lisa
5 月 22 日,據社區消息,SUI 生態上的流動性提供商 Cetus 疑似遭攻擊,流動性池深度大幅下降,Cetus 上多個代幣交易對出現下跌,預計損失金額超過 2.3 億美元。隨後,Cetus 發佈公告稱:「我們協議中檢測到了一起事件,安全起見,智能合約已暫時暫停。目前,團隊正在對該事件展開調查。我們很快會發佈進一步的調查聲明。」
事件發生後,慢霧安全團隊第一時間介入分析,並發佈安全提醒。以下是對攻擊手法及資金轉移情況的詳細解析。

(https://x.com/CetusProtocol/status/1925515662346404024)
其中一筆攻擊交易:
https://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x
攻擊者地址:
0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06
被攻擊的池子地址:
0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc
涉及代幣:
haSUI / SUI
此次事件的核心是攻擊者通過精心構造參數,使溢出發生但又能繞過檢測,最終用極小的 Token 金額即可換取巨額流動性資産,以下為具體步驟解析:

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

2.攻擊者精心選擇了一個極窄的價格區間開立流動性頭寸:
3.接著就是此次攻擊的核心,攻擊者聲明要添加10,365,647,984,364,446,732,462,244,378,333,008單位的巨大流動性,但由於存在漏洞,係統只收取了1 個代幣 A。

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

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

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

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

5.攻擊者歸還閃電貸,淨獲利約10,024,321.28個haSUI 和5,765,124.79 個SUI,攻擊完成。
攻擊發生後,Cetus 發佈了修復補丁。具體修復代碼可參考。
修復後的checked_shlw函數如下:

修復說明:
據分析,攻擊者 0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06 獲利約 2.3 億美元,包括 SUI、vSUI、USDC 等多種資産。

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

獲利後,攻擊者將部分資金如
USDC、SOL、suiETH 通過跨鏈橋如 Sui Bridge、Circle、Wormhole、Mayan 跨鏈到 EVM 地址 0x89012a55cd6b88e407c9d4ae9b3425f55924919b:

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

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

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

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

(https://x.com/CetusProtocol/status/1925567348586815622)
接下來,我們使用鏈上反洗錢與追蹤工具 MistTrack 分析 EVM 上接收跨鏈資金的地址 0x89012a55cd6b88e407c9d4ae9b3425f55924919b。
該地址在 BSC 上收到 5.2319 BNB,暫未轉出:

該地址在 Ethereum 上收到 3,000 個 USDT、4,088 萬個 USDC、1,771 個 SOL 和 8,130.4 個 ETH。
其中,USDT、USDC 和 SOL 通過 CoW Swap、ParaSwap 等兌換為 ETH:


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

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

MistTrack 已將以上相關地址加入惡意地址庫,同時,我們將對持續對地址餘額進行監控。
本次攻擊展示了數學溢出漏洞的威力。攻擊者通過精確計算選擇特定參數,利用 checked_shlw 函數的缺陷,以 1 個代幣的成本獲得價值數十億的流動性。這是一次極其精密的數學攻擊,慢霧安全團隊建議開發人員在智能合約開發中嚴格驗證所有數學函數的邊界條件。
内容來源:TECHUB NEWS
更多精彩內容,請登陸
財華香港網 (https://www.finet.hk/)
現代電視 (http://www.fintv.com)