Bitget App
交易「智」變
快速買幣市場交易合約BOT理財跟單
損失超過 4000 萬美元,GMX 攻擊原理分析

損失超過 4000 萬美元,GMX 攻擊原理分析

ChaincatcherChaincatcher2025/07/10 05:20
作者:BlockSec

GMX 遭黑客利用可重入漏洞攻擊,槓桿機制設計缺陷致損失超 4000 萬美元,核心問題在於贖回邏輯對 AUM 信任過高。

作者:BlockSec

GMX 遭遇黑客攻擊,損失超過 4000 萬美元。攻擊者利用了一個可重入漏洞,並在合約啟用槓桿功能的情況下開空頭頭寸,實施了攻擊。

問題的根源在於 executeDecreaseOrder 函數被錯誤使用。該函數的第一個參數本應是外部賬戶(EOA),但攻擊者傳入了一個智能合約地址。這使得攻擊者可以在贖回過程中重新進入系統,操縱內部狀態,最終贖回的資產遠超其實際持有的 GLP 價值。

GLP正常贖回機制

在 GMX 中,GLP 是流動性提供者代幣,代表對金庫資產(如 USDC、ETH、WBTC)的份額。當用戶調用 unstakeAndRedeemGlp 時,系統使用以下公式計算應返還的資產數量:

redeemamount = (userGLP / totalGLPsupply) * AUM
其中 AUM(管理資產總額)的計算方式為:

AUM = 所有 token 池的總價值 + 全局空頭未實現虧損 - 全局空頭未實現盈利 - 已預留金額 - 預設扣減(aumDeduction)

該機制保證了 GLP 持有者按比例獲得金庫的實際資產份額。

槓桿開啟後的問題

當 enableLeverage 開啟後,用戶可以開設槓桿倉位(多頭或空頭)。攻擊者在贖回 GLP 前,開設了大額的 WBTC 空頭頭寸。

由於空頭一開倉便增加了全局空頭規模,價格尚未變動的情況下系統默認該空頭是虧損的,而這部分未實現虧損會被計為金庫的"資產",導致 AUM 人為上升。儘管金庫並未實際獲得額外價值,但贖回計算會基於這個虛高的 AUM,從而使攻擊者獲得了遠超其應得的資產。

攻擊流程

攻擊交易

https://app.blocksec.com/explorer/tx/arbitrum/0x03182d3f0956a91c4e4c8f225bbc7975f9434fab042228c7acdc5ec9a32626ef?line=93

損失超過 4000 萬美元,GMX 攻擊原理分析 image 0 損失超過 4000 萬美元,GMX 攻擊原理分析 image 1

寫在結尾

此次攻擊暴露了 GMX 在槓桿機制與可重入保護設計上的嚴重缺陷。核心問題在於資產贖回邏輯對 AUM 的信任過高,未對其組成部分(如未實現虧損)進行足夠審慎的安全校驗。同時,關鍵函數對調用者身份的假設(EOA vs 合約)也缺乏強制性驗證。該事件再次提醒開發者,在涉及資金敏感操作時,必須確保系統狀態不可被操縱,尤其是在引入複雜金融邏輯(如槓桿、衍生品)時,更需嚴防重入與狀態污染帶來的系統性風險。

0

免責聲明:文章中的所有內容僅代表作者的觀點,與本平台無關。用戶不應以本文作為投資決策的參考。

PoolX: 鎖倉獲得新代幣空投
不要錯過熱門新幣,且APR 高達 10%+
立即參與

您也可能喜歡

Bitget 現貨槓桿新增 LA/USDT!

Bitget Announcement2025/07/10 14:24

AINUSDT 現已上架合約交易和交易BOT

Bitget Announcement2025/07/10 13:00

Bitget 發布 2025 年 6 月份保護基金估值報告

Bitget Announcement2025/07/10 10:00