Vulnerabilidade de armazenamento transitório resulta em um roubo de 300 mil dólares na cadeia em projeto de negociação com margem

robot
Geração de resumo em curso

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

No dia 30 de março de 2025, ocorreu um assalto na cadeia no valor de mais de 300 mil dólares na rede Ethereum. De acordo com o sistema de monitoramento de segurança, o projeto de negociação com alavancagem SIR.trading foi atacado, resultando em perdas significativas. A equipe de segurança realizou uma análise aprofundada deste evento e agora publica os resultados da investigação a seguir.

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

Contexto do Evento

A versão 0.8.24 do Solidity introduziu em janeiro de 2024 a funcionalidade de armazenamento transitório (transient storage). Este é um novo local de armazenamento de dados, destinado a fornecer aos desenvolvedores uma forma de armazenamento temporário de baixo custo e eficaz durante as transações. O armazenamento transitório é implementado através de duas novas instruções EVM, TSTORE e TLOAD, apresentando baixo custo de gás, persistência dentro da transação e limpeza automática.

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

Motivo do ataque

A causa fundamental deste evento reside no fato de que os valores armazenados temporariamente no tstore dentro da função não foram limpos após a conclusão da chamada da função. Os atacantes exploraram essa característica para construir endereços maliciosos específicos que contornam a verificação de permissões, conseguindo assim transferir tokens.

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

Processo de ataque

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

  2. O atacante chama a função initialize do contrato Vault, usando 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 emitir o token alavancado APE. Durante este processo, o endereço do pool DEX e a quantidade emitida são armazenados sucessivamente na memória temporária.

  4. O atacante cria um contrato malicioso, cujo endereço é o mesmo que a quantidade de cunhagem armazenada temporariamente anteriormente.

  5. O atacante chama diretamente a função uniswapV3SwapCallback 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 erroneamente aprovada.

  6. Por fim, o atacante chama a função uniswapV3SwapCallback do contrato Vault através do contrato de ataque (token A), retirando outros tokens (WBTC, WETH) do contrato Vault para lucrar.

Resíduo Fatal: Um roubo de 300.000 dólares na cadeia provocado por armazenamento transitório

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

Resíduo mortal: um assalto de 300 mil 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 mortal: um roubo 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 por armazenamento transitório

Detecção Fatal: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

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

Resíduo Fatal: um roubo de 300.000 dólares na cadeia causado por armazenamento transitório

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

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

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

Análise do fluxo de fundos

De acordo com os dados da ferramenta de análise na cadeia, o atacante roubou cerca de 300.000 dólares em ativos, incluindo 17.814,8626 USDC, 1,4085 WBTC e 119,871 WETH. Em seguida, o atacante trocou e transferiu esses ativos:

  • WBTC foi trocado por 63.5596 WETH
  • USDC foi trocado por 9.7122 WETH
  • Um total de 193.1428 WETH foi transferido para uma rede anónima

É importante notar que o financiamento inicial do atacante provém de 0.3 ETH transferidos de uma rede anônima.

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 por armazenamento transitório

Resumo e Sugestões

O ataque desta vez explorou a característica de que o armazenamento transitório permanece inalterado durante toda a transação, conseguindo contornar a verificação de permissões da função de callback. Para prevenir eventos semelhantes, recomenda-se que a equipe do projeto:

  1. De acordo com a lógica de negócios, após a conclusão da chamada da função, use imediatamente tstore(key, 0) para limpar os valores armazenados temporariamente.
  2. Reforçar a auditoria de código de contratos e testes de segurança, com especial atenção aos riscos associados ao uso de novas funcionalidades.
  3. Implementar um mecanismo de múltiplas validações, não apenas depender de uma única verificação de identidade.
  4. Realizar avaliações de segurança periodicamente, detectando e corrigindo prontamente vulnerabilidades potenciais.

Este evento lembra-nos novamente que é essencial ter cautela ao adotar novas tecnologias e avaliar cuidadosamente o seu impacto na segurança. Ao mesmo tempo, auditorias de segurança contínuas e gestão de riscos são cruciais para proteger os ativos dos utilizadores.

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • 6
  • Partilhar
Comentar
0/400
GhostChainLoyalistvip
· 07-23 20:02
ficar de fora, mais um projeto que foi fazer as pessoas de parvas
Ver originalResponder0
HypotheticalLiquidatorvip
· 07-23 17:12
300 mil? É isso que está a acontecer com a purificação do mercado...
Ver originalResponder0
P2ENotWorkingvip
· 07-20 21:17
A equipa do projeto está a dormir novamente.
Ver originalResponder0
BlockchainRetirementHomevip
· 07-20 21:16
Outra vez contratos inteligentes fazer as pessoas de parvas
Ver originalResponder0
DYORMastervip
· 07-20 20:49
Aparente, mas inútil, nem sequer sabem auditar o código.
Ver originalResponder0
DecentralizedEldervip
· 07-20 20:47
Levaram tudo, não é? O projeto é realmente muito fraco.
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)