作者:Kong & Lisa
編輯:Liz
背景
5 月28 日,慢霧(SlowMist) 偵測到與Cork Protocol 相關的潛在可疑活動並發布安全提醒,建議用戶提高警惕,注意帳戶與資金安全。

(https://x.com/SlowMist_Team/status/1927705256915333359)
不久後,Cork Protocol 發佈公告表示:「今日UTC 時間11:23,wstETH:weETH 市場發生安全事件。為防止風險擴大,Cork 已暫停所有其他市場交易,目前暫無其他市場受影響。團隊正在積極調查事件原因,並將持續更新相關進展。」

(https://x.com/Corkprotocol/status/1927808041984086083)
事件發生後,慢霧安全團隊第一時間介入分析,以下是攻擊手法及資金轉移路徑的詳細解析。
前置知識
Cork Protocol 是一個旨在為DeFi 生態提供類似傳統金融中信用違約掉期(CDS) 功能的工具- Depeg 掉期,專門用於對沖穩定幣、流動性質押代幣、RWA 等掛鉤資產的脫錨風險。其核心機制圍繞著穩定幣和流動性質押代幣的脫錨風險展開,允許用戶透過交易風險衍生品,將穩定幣或LST/LRT 的價格波動風險轉移給市場參與者,從而降低風險並提升資本效率,關鍵概念如下:
RA(Redemption Asset | 贖回資產):Cork 市場中用於贖回或結算脫錨事件的基準資產(例如ETH::stETH 市場中的ETH)。
PA(Pegged Asset | 掛鉤資產):有脫錨風險的資產,目標是與 RA 保持價格掛鉤,但可能因市場波動、協議風險等因素偏離錨定匯率(例如ETH::stETH 市場中的stETH)。
DS(Depeg Swap | 脫錨掉期):Cork 協議發行的核心衍生工具,用於對沖脫錨風險,本質類似傳統金融中的信用違約掉期(CDS),用戶可以購買此類代幣來規避脫錨風險。
CT(Cover Token | 覆蓋代幣):與 DS 配對的衍生工具,用於承擔脫錨風險並賺取收益,類似CDS 中的賣方角色,如果發生脫錨,持有者將承擔損失。
Exchange Rate:衡量 PA 與RA 之間價值關係的核心參數,直接影響脫錨事件的判定與衍生性商品交易的結算邏輯。目前,Cork 協定允許使用者使用自訂Exchange Rate Provider 創建市場。
Cork Vault:自動化管理跨期限的流動性,提升資本效率。
Peg Stability Module (PSM):負責鑄造/銷毀DS 和CT,設定市場期限,並透過AMM 動態調整價格。其允許用戶做以下兌換:
PA + DS = RACT + DS = RA
根本原因
此次攻擊的根本原因在於一方面 Cork 允許用戶透過CorkConfig 合約創建以任意資產作為贖回資產(RA),使得攻擊者可以將DS 作為RA 使用。另一方面任意用戶都可以無需授權的調用CorkHook 合約的beforeSwap 函數,並允許用戶傳入自定的hook 數據進行CorkCall 操作,使得攻擊者可以操控,將合法市場中的DS 存入另一個市場中作為RA 使用,並獲得對應的DS 和CT 代幣。
攻擊分析
攻擊者首先在合法市場上用 wstETH 購買了weETH8CT-2 代幣,以便最後可以與DS 代幣組合贖回作為RA 的wstETH 代幣。

隨後攻擊者創建了一個新的市場並使用了自定的 Exchange Rate 提供商,此市場以weETH8DS-2 代幣作為RA,wstETH 作為PA 進行創建,因此新市場的關鍵代幣對應如下:
RA: weETH8DS-2PA: wstETHCT: wstETH5CT-3DS: wstETH5DS-3
而 weETH8DS-2 所在市場的關鍵代幣對應如下:
RA: wstETHPA: weETHCT: weETH8CT-2DS: weETH8DS-2

創建新市場後,攻擊者透過向市場添加一定的流動性以使得協定可以在 Uniswap v4 中初始化對應的流動性池,以便CorkHook 後續可以在此池子執行beforeSwap。

緊接著,最關鍵的是,只要在 Uniswap V4 Pool Manager 解鎖的條件下,任何使用者都可以呼叫CorkHook 的beforeSwap 函數傳入任意參數,對協議的市場流動性進行操作。因此,攻擊者透過Uniswap V4 Pool Manager 在解鎖時的unlockCallback 功能,呼叫CorkHook 的beforeSwap 函數並傳入其自定的市場以及hook 資料。

beforeSwap 將回呼合法市場的CorkCall 函數,執行指定的hook 資料:

CorkCall 信任由上層合法CorkHook 傳入的資料並直接進行解析執行:

這使得攻擊者可以透過建構 hook 數據,將合法市場中指定數量的weETH8DS-2 代幣轉入由其創建的新市場中作為RA,並獲得新市場對應的CT 與DS 代幣。

而根據 PSM 的特性,攻擊者可以使用獲得的CT 與DS 代幣在新市場贖回RA 代幣,即weETH8DS-2 代幣。

在獲得 weETH8DS-2 代幣後,攻擊者即可將其與先前購買的weETH8CT-2 代幣匹配,以在原有的市場贖回wstETH 代幣。

至此,攻擊者利用了市場未限制贖回資產類型以及協議並未驗證 CorkHook.beforeSwap 的調用者與傳入數據,使得其可以將合法的市場的DS 流動性轉移到另一市場作為RA 進行贖回,來竊取任意市場的流動性。
MistTrack 分析
根據鏈上反洗錢與追蹤工具 MistTrack 分析,攻擊者地址0xea6f30e360192bae715599e15e2f765b49e4da98 獲利3,761.878 wstETH,價值超1,200 萬美元。

隨後,攻擊者透過
8 筆交易將wstETH 兌換為4,527 ETH:

此外,攻擊者的初始資金來自 Swapuz.com 轉入的4.861 ETH。

截至目前,共有 4,530.5955 ETH 停留在攻擊者地址上,我們將持續監控資金。

總結
這次攻擊的根本原因在於未嚴格驗證用戶傳入的資料是否符合預期,使得協定流動性可以被操控轉移到非預期的市場中,進而被攻擊者非法贖回獲利。慢霧安全團隊建議開發者在進行設計時,應謹慎驗證協議的每一步操作是否都在預期中,並嚴格限制市場的資產類型。
