關稅戰嚇崩市場:恐慌指數飆升26%,美股指期貨重挫700點!黃金升破4700美元,美元、比特幣跳水
作者:BlockSec;翻譯:金色財經xiaozou
GMX遭黑客攻擊,損失超4000萬美元。 攻擊者利用合約漏洞,在啟用槓桿的情況下建立空頭頭寸實施攻擊。
根本原因在於executeDecreaseOrder函數的調用錯誤:該函數首個參數本應是外部賬戶(EOA),但攻擊者傳入的卻是智能合約地址。 這使得攻擊者在贖回過程中操縱內部狀態,最終提取的資產價值遠超其GLP持倉的實際價值。
GLP贖回機制解析(正常情況)在GMX協議中,GLP作為流動性提供者代幣,代表金庫資產(如USDC、ETH、WBTC)的份額。
當用戶調用UnstakeAndRedeemGlp時,系統通過以下公式計算應返還的資產數量:
贖回金額 = (user_GLP / total_GLP_supply) ×資產管理規模(AUM)
其中資產管理規模(AUM)由以下要素決定:
AUM =Token_pool_value總和 全局空頭未實現虧損 - 全局空頭未實現收益 - 預留金額 - 配置扣除項(aumDeduction)
該機制確保每位GLP持有者都能按比例獲取金庫總價值的對應份額。
槓桿啟用時的漏洞原理當EnableLeverage功能開啟時,用戶可建立槓桿頭寸(多頭或空頭)。 本次事件中,攻擊者在贖回GLP前立即建立了大量WBTC空頭頭寸。
當空頭頭寸建立時,系統會立即增加全局空頭倉位規模。 若此時價格尚未波動,系統會默認該空頭處於虧損狀態--這部分虧損被計入金庫資產(即未實現虧損)。 因此,儘管沒有實際價值注入金庫,資產管理規模(AUM)卻被虛增。
這種虛增的AUM導致GLP贖回時返還了超出合理範圍的資產。
下圖為攻擊流程詳解
由於executeDecreaseOrder的首個參數是智能合約(而非外部賬戶EOA),攻擊者能在回調期間執行任意邏輯,從而操縱內部狀態並套取利潤。 若該參數是不支持ERC-7702式執行的外部賬戶(EOA),這種基於重入的攻擊便無法實現。
這對我們來說絕對是個安全警示!
