QR 코드를 스캔하여 다운로드하세요.
BTC $73,983.27 -1.00%
ETH $2,319.59 -1.19%
BNB $669.19 -1.58%
XRP $1.42 -4.56%
SOL $81.67 -4.53%
TRX $0.2795 -0.47%
DOGE $0.0974 -3.83%
ADA $0.2735 -4.22%
BCH $471.25 -1.72%
LINK $8.64 -2.97%
HYPE $28.98 -1.81%
AAVE $122.61 -3.42%
SUI $1.02 -4.10%
XLM $0.1605 -4.62%
ZEC $260.31 -8.86%
BTC $73,983.27 -1.00%
ETH $2,319.59 -1.19%
BNB $669.19 -1.58%
XRP $1.42 -4.56%
SOL $81.67 -4.53%
TRX $0.2795 -0.47%
DOGE $0.0974 -3.83%
ADA $0.2735 -4.22%
BCH $471.25 -1.72%
LINK $8.64 -2.97%
HYPE $28.98 -1.81%
AAVE $122.61 -3.42%
SUI $1.02 -4.10%
XLM $0.1605 -4.62%
ZEC $260.31 -8.86%

손실이 4000만 달러를 초과, GMX 공격 원리 분석

Summary: GMX는 해커의 재진입 취약점을 이용한 공격을 받았으며, 레버리지 메커니즘 설계 결함으로 인해 4천만 달러 이상의 손실이 발생했습니다. 핵심 문제는 AUM에 대한 신뢰가 과도한 환급 논리에 있습니다.
BlockSec
2025-07-10 11:13:11
수집
GMX는 해커의 재진입 취약점을 이용한 공격을 받았으며, 레버리지 메커니즘 설계 결함으로 인해 4천만 달러 이상의 손실이 발생했습니다. 핵심 문제는 AUM에 대한 신뢰가 과도한 환급 논리에 있습니다.

저자: BlockSec

GMX가 해킹 공격을 당해 4천만 달러 이상의 손실을 입었습니다. 공격자는 재진입 취약점을 이용하여 계약에서 레버리지 기능을 활성화한 상태에서 공매도 포지션을 열어 공격을 실행했습니다.

문제의 근원은 executeDecreaseOrder 함수의 잘못된 사용에 있습니다. 이 함수의 첫 번째 매개변수는 외부 계좌(EOA)여야 했지만, 공격자는 스마트 계약 주소를 전달했습니다. 이로 인해 공격자는 상환 과정에서 시스템에 재진입하여 내부 상태를 조작할 수 있었고, 최종적으로 상환된 자산은 실제 보유한 GLP 가치보다 훨씬 초과했습니다.

GLP 정상 상환 메커니즘

GMX에서 GLP는 유동성 제공자 토큰으로, 금고 자산(예: USDC, ETH, WBTC)에 대한 지분을 나타냅니다. 사용자가 unstakeAndRedeemGlp를 호출하면 시스템은 다음 공식을 사용하여 반환할 자산 수량을 계산합니다:

redeemamount = (userGLP / totalGLPsupply) * AUM
여기서 AUM(관리 자산 총액)의 계산 방식은 다음과 같습니다:

AUM = 모든 토큰 풀의 총 가치 + 전역 공매도 미실현 손실 - 전역 공매도 미실현 이익 - 이미 예약된 금액 - 사전 설정 공제(aumDeduction)

이 메커니즘은 GLP 보유자가 비례적으로 금고의 실제 자산 지분을 얻도록 보장합니다.

레버리지 활성화 후 문제

enableLeverage가 활성화되면 사용자는 레버리지 포지션(롱 또는 숏)을 열 수 있습니다. 공격자는 GLP를 상환하기 전에 대규모 WBTC 숏 포지션을 열었습니다.

숏 포지션이 열리자마자 전역 숏 규모가 증가하고 가격이 변동하지 않은 상태에서 시스템은 이 숏 포지션이 손실로 간주합니다. 이 미실현 손실은 금고의 "자산"으로 계산되어 AUM이 인위적으로 상승하게 됩니다. 금고는 실제로 추가 가치를 얻지 않았지만, 상환 계산은 이 부풀려진 AUM을 기반으로 하여 공격자가 본래 받아야 할 자산보다 훨씬 더 많은 자산을 얻도록 합니다.

공격 과정

공격 거래

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

이미지 이미지

마무리

이번 공격은 GMX의 레버리지 메커니즘과 재진입 보호 설계에서 심각한 결함을 드러냈습니다. 핵심 문제는 자산 상환 논리가 AUM에 대해 지나치게 신뢰하고 있으며, 그 구성 요소(예: 미실현 손실)에 대해 충분한 안전 검증을 하지 않았다는 점입니다. 동시에, 주요 함수가 호출자의 신원(EOA vs 계약)에 대한 가정이 강제 검증이 부족합니다. 이 사건은 개발자들에게 자금 민감한 작업에 있어 시스템 상태가 조작되지 않도록 보장해야 하며, 특히 복잡한 금융 논리(예: 레버리지, 파생상품)를 도입할 때 재진입 및 상태 오염으로 인한 시스템적 위험을 철저히 방지해야 한다는 점을 다시 한번 상기시킵니다.

warnning 위험 경고
app_icon
ChainCatcher Building the Web3 world with innovations.