O projeto Ethereum sofreu um ataque de 300 mil dólares devido a uma falha de armazenamento transitório.

robot
Geração de resumo em curso

Defeito de armazenamento transitório resulta em ataque de 300 mil dólares ao projeto Ethereum

No dia 30 de março de 2025, um sistema de monitoramento de segurança detectou um projeto de negociação alavancada na cadeia Ethereum que foi atacado, resultando em uma perda de mais de 300 mil dólares em ativos. A equipe de segurança analisou o incidente e agora compartilha os resultados abaixo:

Conhecimento de fundo

A versão 0.8.24 do Solidity introduziu a funcionalidade de armazenamento transitório (transient storage), que é uma nova localização de armazenamento de dados. Sua característica principal é que os dados são válidos apenas durante a execução da transação atual, sendo automaticamente apagados após o término da transação. O acesso e a modificação são realizados através de duas novas instruções EVM, TSTORE e TLOAD.

O armazenamento transitório possui as seguintes características:

  • Custo de gas baixo: O custo de gas do TSTORE e TLOAD é fixo em 100
  • Persistência da transação: os dados permanecem válidos durante todo o período da transação
  • Limpeza automática: redefinir automaticamente para zero após o término da transação

Resíduos Mortais: Um Roubo On-Chain de 300.000 Dólares Causado por Armazenamento Transitório

Causa da vulnerabilidade

A causa fundamental deste evento é que os valores armazenados temporariamente usando tstore na função não foram limpos após o término da chamada da função. Isso permitiu que os atacantes aproveitassem essa característica para construir endereços maliciosos específicos e contornassem as verificações de permissão para transferir tokens.

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

Processo de Ataque

  1. O atacante cria dois tokens maliciosos A e B, e cria pools para esses dois tokens em um DEX, injetando 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 token de 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, o endereço da piscina DEX e a quantidade cunhada são armazenados temporariamente um após o outro.

  4. O atacante cria um contrato malicioso cujo endereço é o mesmo que o valor armazenado temporariamente na segunda vez.

  5. O atacante chama diretamente a função de callback do contrato Vault através do contrato malicioso para retirar tokens. Como os valores na memória transitória não foram limpos, a verificação de identidade foi aprovada incorretamente.

  6. Por fim, o atacante chama a função de callback do contrato Vault através de um ataque ao contrato (token A) e transfere outros tokens do contrato Vault (WBTC, WETH) para obter lucro.

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

Resíduo Letal: Um Assalto de 300 Mil Dólares na Cadeia Provocado por Armazenamento Transiente

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

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

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

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

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

Resíduo Letal: Um Roubo de 300.000 Dólares na Cadeia Provocado por Armazenamento Transiente

Resíduo Letal: Um Roubo em Cadeia de 300 Mil Dólares Causado por Armazenamento Transitório

Resíduo Letal: 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

Análise do Fluxo de Capital

Segundo a análise on-chain, os atacantes roubaram cerca de 300 mil dólares em ativos, incluindo 17,814.8626 USDC, 1.4085 WBTC e 119.871 WETH.

  • WBTC foi trocado por 63.5596 WETH
  • USDC foi trocado por 9.7122 WETH
  • Um total de 193.1428 WETH foi transferido para um serviço de mistura de moedas.

O capital inicial do atacante provém de 0,3 ETH transferidos de um serviço de mistura de moedas.

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

Resíduos fatais: um roubo de 300 mil dólares na blockchain causado por armazenamento transitório

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

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

Resumo e Sugestões

O núcleo deste ataque reside na utilização da característica do armazenamento transitório que mantém valores durante todo o período da transação, contornando a verificação de permissões da função de callback. Recomenda-se que a equipe do projeto utilize imediatamente o tstore(key, 0) para limpar os valores no armazenamento transitório após o término da chamada de função, de acordo com a lógica de negócios. Além disso, deve-se reforçar a auditoria de código do contrato e os testes de segurança para evitar que situações semelhantes ocorram.

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
  • 4
  • Partilhar
Comentar
0/400
CommunitySlackervip
· 7h atrás
Mais um projeto que se tornou um caixa eletrónico.
Ver originalResponder0
BlockchainDecodervip
· 7h atrás
Do ponto de vista técnico, isso é um uso típico inadequado de armazenamento transitório.
Ver originalResponder0
StealthMoonvip
· 7h atrás
Mais uma falha de armazenamento temporário? Tenha mais cuidado.
Ver originalResponder0
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)