BlockSec: Análise do princípio do ataque GMX

robot
Geração do resumo em andamento

Escrito por: BlockSec

O GMX foi alvo de um ataque de hackers, resultando em perdas superiores a 40 milhões de dólares. Os atacantes exploraram uma vulnerabilidade de reentrada e abriram posições vendidas enquanto a funcionalidade de alavancagem do contrato estava ativada para realizar o ataque.

A raiz do problema está no uso incorreto da função executeDecreaseOrder. O primeiro parâmetro dessa função deveria ser uma conta externa (EOA), mas o atacante forneceu um endereço de contrato inteligente. Isso permitiu que o atacante reentrasse no sistema durante o processo de resgate, manipulando o estado interno e, no final, resgatando ativos que ultrapassam em muito o valor real de GLP que possuía.

Mecanismo normal de resgate do GLP

No GMX, GLP é o token dos provedores de liquidez, representando a participação nos ativos do tesouro (como USDC, ETH, WBTC). Quando os usuários chamam unstakeAndRedeemGlp, o sistema utiliza a seguinte fórmula para calcular a quantidade de ativos a ser devolvida:

redeem_amount = (user_GLP / total_GLP_supply) * AUM

O cálculo do AUM (Ativos sob Gestão) é o seguinte:

AUM = Valor total de todos os pools de token + Perdas não realizadas de posições vendidas globais - Lucros não realizados de posições vendidas globais - Montante reservado - Dedução pré-definida (aumDeduction)

Este mecanismo garante que os detentores de GLP recebam uma parte proporcional dos ativos reais do cofre.

Questões após a ativação da alavancagem

Quando o enableLeverage está ativado, os usuários podem abrir posições alavancadas (longas ou curtas). Antes de resgatar o GLP, o atacante abriu uma grande posição curta em WBTC.

Uma vez que a abertura de uma posição vendida aumenta a escala global das vendas a descoberto, e na ausência de variação de preço o sistema assume automaticamente que essa posição vendida está em prejuízo, essa parte do prejuízo não realizado será contabilizada como "ativos" do tesouro, resultando em um aumento artificial do AUM. Embora o tesouro não tenha realmente obtido valor adicional, o cálculo de resgate será baseado nesse AUM inflacionado, permitindo que o atacante obtenha muito mais ativos do que lhe seria devido.

Fluxo de Ataque

ataque de transação

Escrito no final

Este ataque expôs sérias falhas no mecanismo de alavancagem e no design de proteção contra reentrância do GMX. O problema central reside na confiança excessiva da lógica de resgate de ativos no AUM, que não realiza verificações de segurança suficientemente rigorosas em seus componentes (como perdas não realizadas). Ao mesmo tempo, a suposição sobre a identidade do chamador nas funções críticas (EOA vs contrato) também carece de validação obrigatória. Este evento serve de lembrete aos desenvolvedores de que, ao envolver operações sensíveis a fundos, é crucial garantir que o estado do sistema não possa ser manipulado, especialmente ao introduzir lógicas financeiras complexas (como alavancagem e derivados), onde é necessário prevenir rigorosamente os riscos sistêmicos decorrentes de reentrâncias e contaminação de estado.

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • Comentário
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)