慢霧:Cetus被竊事件分析,1枚代幣撬動2.3億美金
這是一次極其精密的數學攻擊,攻擊者透過精確計算選擇特定參數,利用checked_shlw函數的缺陷,以1個代幣的成本獲得價值數十億的流動性。
原文標題:《慢霧:Cetus 被盜 2.3 億美元事件分析》
原文作者:Victory、Lisa,慢霧科技
背景
背景
5 月 2 日社區疑似遭攻擊,流動性池深度大幅下降,Cetus 上多個代幣交易對出現下跌,預計損失金額超過 2.3 億美元。隨後,Cetus 發佈公告稱:「我們協議中檢測到了一起事件,安全起見,智能合約已暫時暫停。目前,團隊正在對該事件展開調查。我們很快就會發布進一步的調查聲明。」
事件發生後,慢霧安全團隊第一時間介入分析,並發佈安全提醒。以下是攻擊手法及資金轉移情況的詳細解析。
(https://x.com/CetusProtocol/status/1925515662346404024)
相關資訊
其中一筆攻擊交易:https://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x
攻擊者位址:0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06
被攻擊的子位址:被攻擊的子位址: 0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc
涉及代幣:
涉及代幣: / SUI
攻擊分析
這次事件的核心是攻擊者透過精心建構參數,使溢出發生但又能繞過偵測,最終以極小的 Token 金額即可換取巨額流動性資產,以下為具體步驟解析:繞過偵測
(攻擊時序圖)
1. 攻擊者首先透過閃電貸方借出了 10,024,321.28 個子 SUI,導致池價格從該池18,956,530,795,606,879,104 暴跌至 18,425,720,184762886,價格下跌幅度達 99.90%。
2. 攻擊者精心選擇了一個極窄的價格區間開立流動性頭寸:
Tick下限:300000(價格:60,257,519,765,924,248,467,716,150)
Tick 上限:300200(價格:60,863,087,478,126,617,126,617,965,478,126,617,126,61,963)價格:p. 1.00496621%
3. 接著就是這次攻擊的核心,攻擊者聲明要添加 10,365,647,984,364,446,732,462,244,378,333,008 單位的流動性
我們來分析攻擊者為何能夠用 1 個 Token 兌換出巨額流動性。其核心原因在於 get_delta_a 函數中的 checked_shlw 存在溢位偵測繞過漏洞。攻擊者正是利用了這一點,使得系統在計算實際需要添加多少 haSUI 時出現了嚴重偏差。由於溢出未被偵測,系統誤判了所需 haSUI 的數量,導致攻擊者僅需極少的 Token,就能兌換出大量的流動性資產,從而實現了攻擊。
當系統計算添加如此巨大流動性需要多少 haSUI 時:
這裡的關鍵在於 checked_shlw 函數的實現存在嚴重缺陷。實際上,任何小於 0xffffffffffffffff << 192 的輸入值都會繞過溢位偵測。然而,當這些值被左移 64 位元時,結果會超出 u256 的表示範圍,此時高位元資料被截斷,導致得到的結果遠小於理論值。這樣一來,系統在後續計算中就會低估所需的 haSUI 數量。
· 錯誤掩碼:0xffffffffffffffff << 192 = 非常大的數值(約 2^256-2^192)
·幾乎所有溢出>= 2^192 時,n << 64 會超出 u256 範圍並被截斷
攻擊者構造的中間值 liquidity * sqrt_price_diff = 6277101735386680763835789423207666908085499738337898853712:
· 小於錯誤掩碼,繞過溢出最大值,從而導致超出的部分被截斷
· 導致最終計算結果約小於 1,但由於是向上取整,quotient 算出來就等於 1
4.
4.
4. 10,024,321.28 個 haSUI
· 第二次移除:獲得 1 個 haSUI
· 第三次移除:獲得 10,024,321.28 個 haSUI
11111
攻擊者歸還閃電貸,淨獲利約 10,024,321.28 個 haSUI 和 5,765,124.79 個 SUI,攻擊完成。
專案方修復狀況
攻擊發生後,Cetus 發布了修復修補程式。具體修復程式碼可參考:https://github.com/CetusProtocol/integer-mate/pull/7/files#diff-c04eb6ebebbabb80342cd953bc63925e1c1cdc7ae1fb572f4aad240288a69409。
修復後的 checked_shlw 函數如下:
修正說明:將錯誤的遮罩 0xffffffffffffffff << 192 修正為正確的閾值 1 << 192 將判斷條件從 n > mask 修正為 n >= mask 確保當左移 64 位元可能導致溢出可能導致溢出為 n >= mask 確保當左移 64 位元可能導致溢出可能導致外溢分析
據分析,攻擊者 0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06 $206 億美元,包括多種 S.D.A.S.
我們發現攻擊者在兩天前就準備好了 Gas Fee,然後在攻擊之前進行了一次嘗試,但失敗了:
999b3425f55924919b:
其中,5.2341 WBNB
其中,5.2341 WBNB 0x89012a55cd6b88e407c9d4ae9b3425f55924919b:
接著,攻擊者將價值 1,000 萬美元的資產存入Suilend:
攻擊者也將 24,022,896 SUI 轉入新位址0xcd8962dad278d8b50fa0f9eb0186bfa4cbdecc6d59377214c88d0286a0ac9562,目前暫未轉出:
Ap>
(https://x.com/CetusProtocol/status/1925567348586815622)
接下來,我們使用鏈上反洗錢工具0x89012a55cd6b88e407c9d4ae9b3425f55924919b。該地址在 BSC 上收到 5.2319 BNB,暫未轉出:
該位址在 Ethereum 上收到 3,000 個 USDT、4,088 萬個位址在 Ethereum 上收到 3,000 個 USDT、4,088 萬個位址在 Ethereum 上收到 13,78 個。其中,USDT、USDC 和 SOL 透過 coW Swap、ParaSwap 等兌換為 ETH:
. 0x0251536bfcf144b88e1afa8fe60184ffdb4caf16,暫未轉出:
目前該位址在 Ethereum 上的餘額為 3,244 ETH:
MistTrack 已將以上相關位址加入惡意位址庫,同時,我們將對持續對位址餘額進行監控。
總結
本次攻擊展示了數學溢位漏洞的威力。攻擊者透過精確計算選擇特定參數,利用 checked_shlw 函數的缺陷,以 1 個代幣的成本獲得價值數十億的流動性。這是一次極為精密的數學攻擊,慢霧安全團隊建議開發人員在智慧合約開發中嚴格驗證所有數學函數的邊界條件。
免責聲明:文章中的所有內容僅代表作者的觀點,與本平台無關。用戶不應以本文作為投資決策的參考。
您也可能喜歡
Pantera Capital 支持數位資產財務公司,將其視為加密貨幣投資的新興領域
簡單來說 Pantera Capital 支持 DAT 作為新興公開市場加密貨幣投資,採用 MicroStrategy 的永久資本模型,具有不斷增長的信心和有針對性的投資。

Kamino Finance 開啟第四季,推出全新獎勵模式,開啟第三季分配
簡單來說 Kamino Finance 推出了第四季,其獎勵結構經過改進,取代了 Kamino Points,引入了即時 KMNO 激勵,並繼續擴大其 DeFi Solana 上的生態系統已部署超過 4 億美元的資產。

Solayer 推出 InfiniSVM DevNet,加速基於 Solana 的 dApp
簡單來說 Solayer 推出了 InfiniSVM,這是一種硬體加速的區塊鏈,提供超過 1 萬 TPS、Solana VM 相容性和開發人員友善工具,以增強 dApp 的效能和可擴展性。

加密貨幣價格
更多








