Incidente de ataque na cadeia de 300 mil dólares: falha de armazenamento transitório afeta projeto de Negociação com margem

robot
Geração do resumo em andamento

Resíduo fatal: um ataque na cadeia de 300 mil dólares originado por armazenamento transitório

No dia 30 de março de 2025, um sistema de monitoramento de segurança detectou que um projeto de negociação alavancada na cadeia Ethereum havia sofrido um ataque, resultando na perda de mais de 300 mil dólares em ativos. A equipe de segurança realizou uma análise aprofundada sobre este evento e agora compartilha os resultados abaixo:

Contexto

A versão 0.8.24 do Solidity (lançamento em janeiro de 2024) introduziu características de armazenamento transitório baseadas no EIP-1153. Esta é uma nova localização de armazenamento de dados, destinada a fornecer aos desenvolvedores uma maneira de armazenamento temporário de baixo custo e eficaz durante a transação.

As principais características do armazenamento transitório incluem:

  1. Baixo custo de gas: O custo de gas das operações TSTORE e TLOAD é fixo em 100.
  2. Persistência na transação: os dados permanecem válidos durante todo o período da transação.
  3. Limpeza automática: Após a conclusão da transação, o armazenamento transitório é automaticamente redefinido para zero.

Resíduo Letal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Fonte do ataque

A causa fundamental deste evento é que o valor armazenado temporariamente com tstore na função não foi limpo após o término da chamada da função. Isso permitiu que os atacantes utilizassem esta característica para construir endereços maliciosos específicos, contornando a verificação de permissões para transferir tokens.

Resíduo Letal: Um Roubo de $300,000 na Cadeia Provocado por Armazenamento Transitório

Processo de Ataque

  1. O atacante cria dois tokens maliciosos A e B, cria pools para esses dois tokens em um DEX e injeta liquidez, onde o token A é o contrato de ataque.

  2. O atacante chama a função initialize do contrato Vault, utilizando o token A como colateral e o token B como dívida para criar o mercado de negociação alavancada APE-21.

  3. O atacante chama a função mint do contrato Vault, depositando o token de dívida B para cunhar o token alavancado APE. Durante este processo, são realizadas duas operações de armazenamento transitório: primeiro, armazena-se o endereço de um pool DEX, e depois, armazena-se a quantidade de tokens cunhados.

Resíduo letal: um assalto de 300 mil dólares na cadeia causado por armazenamento transitório

  1. O atacante cria um contrato malicioso por meio de um método especial, cujo endereço é o mesmo que o valor armazenado temporariamente na segunda vez.

  2. O atacante chama diretamente a função de callback do contrato Vault através do contrato malicioso para retirar tokens. Como os valores no armazenamento transitório não foram limpos, a verificação da identidade do chamador foi erroneamente aprovada.

  3. Por fim, o atacante chama a função de callback do contrato Vault através do contrato de ataque (token A), transferindo outros tokens do contrato Vault (como WBTC, WETH) para obter lucro.

Fuga Mortal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Resíduo letal: um roubo de 300 mil dólares na cadeia causado por armazenamento transitório

Resíduo letal: um assalto na cadeia de 300 mil dólares causado por armazenamento transitório

Resíduo Letal: Um Roubo de $300,000 na Cadeia Causado por Armazenamento Transitório

Resíduo fatal: um roubo de 300 mil dólares na cadeia causado por armazenamento transitório

Resíduo Mortal: Um Roubo de 300.000 dólares na cadeia Provocado por Armazenamento Transitório

Resíduo Letal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Resíduo Fatal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Resíduos Mortais: Um Roubo de 300 mil dólares na cadeia causado por armazenamento transitório

Resíduo Mortal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Resíduo Fatal: Um Assalto de 300 Mil Dólares na Cadeia Provocado por Armazenamento Transitório

Resíduos fatais: um assalto de 300 mil dólares na cadeia causado pelo armazenamento transitório

Resíduo Mortal: um roubo de 300 mil dólares na cadeia provocado por armazenamento transitório

Resíduo Fatal: Um Roubo na Cadeia de 300.000 Dólares Causado por Armazenamento Transitório

Análise do fluxo de fundos

De acordo com a análise da ferramenta de análise na cadeia, os atacantes roubaram cerca de 300 mil dólares em ativos, incluindo 17.814,8626 USDC, 1,4085 WBTC e 119,871 WETH. Esses ativos foram posteriormente integrados e convertidos em WETH, sendo finalmente transferidos para um protocolo de negociação privada.

O capital inicial do atacante provém de 0,3 ETH transferidos para o protocolo de transação privada.

Resumo e Sugestões

O núcleo deste ataque reside no fato de que o atacante aproveitou a característica de armazenamento transitório que mantém o valor inalterado durante toda a transação, contornando assim a verificação de permissões da função de retorno para obter lucro. Para evitar situações semelhantes, recomenda-se que a equipe do projeto:

  1. De acordo com a lógica de negócios, use imediatamente tstore(key, 0) para limpar os valores do armazenamento transitório após o término da chamada da função.
  2. Reforçar a auditoria de código de contrato e os testes de segurança.
  3. Use com cautela as características recentemente introduzidas, compreendendo plenamente os seus riscos potenciais.
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 6
  • Compartilhar
Comentário
0/400
LayerZeroHerovip
· 11h atrás
Um ataque deve ter uma porta dos fundos.
Ver originalResponder0
Web3ProductManagervip
· 08-01 12:37
Ataque ao ponto de fricção clássico da experiência do utilizador
Ver originalResponder0
OnchainDetectivevip
· 08-01 04:23
Um erro de código pode arruinar tudo.
Ver originalResponder0
SchrodingersFOMOvip
· 08-01 04:18
Testar antes de subir é perigoso.
Ver originalResponder0
ProbablyNothingvip
· 08-01 04:18
Mais cedo ou mais tarde haverá falhas.
Ver originalResponder0
rug_connoisseurvip
· 08-01 04:11
Novo buraco para ganhar dinheiro rapidamente
Ver originalResponder0
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)