gmx平台遭到黑客攻擊,損失超過4000萬美元。攻擊者利用可重入漏洞,在開啟槓桿功能後開設空頭頭寸,操控內部狀態。問題出在錯誤使用的執行函數,使得攻擊者傳入了智能合約地址,導致資產贖回機制失控。 GLP是流動性提供者代幣,機制中未實現虧損被錯誤計入金庫,造成攻擊者通過槓桿操作獲取超額資產。這次事件揭示了gmx在槓桿機制和可重入保護設計上的缺陷,提醒開發者需加強敏感操作的安全性驗證。
gmx遭遇黑客攻擊,損失超過,4000萬美元。攻擊者利用了一個可重入漏洞,並在合約啟用槓桿功能的情況下開空頭頭寸,實施了攻擊。 ,實施了攻擊。
問題的根源在於執行ecreaseCreaseorder 函數被錯誤使用。該函數的第一個參數本應是外部賬戶( eoa),但攻擊者傳入了一個智能合約地址。這使得攻擊者可以在贖回過程中重新進入系統,操縱內部狀態,最終贖回的資產遠超過其實際持有的glp價值。
GLP正常贖回機制
在gmx中,glp是流動性提供者代幣,lusdc,eTh,wbtc)的份額。當用戶調用unstakeandredeemglp時
redeem_amount =(user_glp / total_glp_supply) * aum
其中(aum)(AUM)的計算方式為::
aum =所有代幣+ +全局空頭未實現虧損-全局空頭未實現盈利-已預留金額-預設扣減( -aumdeduction)
該機制保證了glp持有者按比例獲得金庫的實際資產份額。
槓桿開啟後的問題
當(enableverage)(用戶可以開設槓桿倉位(多頭或空頭,用戶可以開設槓桿倉位(多頭或空頭)。攻擊者在贖回glp前,開設了大額的
由於空頭一開倉便增加了全局空頭規模,價格尚未變動的情況下系統默認該空頭是虧損的,而這部分未實現虧損會被計為金庫的,而這部分未實現虧損會被計為金庫的”,導致
攻擊流程
攻擊交易
https://app.blocksec.com/explorer/tx/arbitrum/0X03182D3F0956A91C4E4E4C4C8F2225BBC7975F9434FAB04222228C7ACDC7ACDC7ACDC5C5C5C5C5EC9A32626EFEL
寫在結尾
此次攻擊暴露了gmx在槓桿機制與可重入保護設計上的嚴重缺陷。核心問題在於資產贖回邏輯對aum的信任過高,未對其組成部分(如未實現虧損),關鍵函數對調用者身份的假設(,關鍵函數對調用者身份的假設(eoa vs合約)也缺乏強制性驗證。該事件再次提醒開發者,在涉及資金敏感操作時
資訊來源:由0x資訊編譯自互聯網。版權歸作者White55,火星財經所有,未經許可,不得轉載