Resíduos de armazenamento transitório causam perdas de ativos na cadeia de 300 mil dólares. Os desenvolvedores devem estar atentos aos riscos das novas características.

Resíduos fatais: Análise de um evento na cadeia de 300.000 dólares causado por armazenamento transitório

No dia 30 de março de 2025, um sistema de monitoramento de segurança na cadeia detectou que um projeto de negociação alavancada na rede Ethereum foi atacado, resultando em uma perda de ativos superior a 300 mil dólares. A equipe de segurança realizou uma análise aprofundada deste incidente e agora compartilha os resultados a seguir:

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

Contexto

A versão 0.8.24 do Solidity introduziu uma característica de armazenamento transiente baseada no EIP-1153. Este é um novo local de armazenamento de dados que oferece aos desenvolvedores uma maneira de armazenamento temporário com baixo custo e que é eficaz durante a transação. As principais características do armazenamento transiente incluem:

  1. Baixo custo de gas: a operação consome fixamente 100 gas, muito abaixo das operações de armazenamento convencionais.
  2. Persistência dentro da 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 Fatal: Um Roubo de $300,000 na Cadeia Causado por Armazenamento Transitório

Análise de Eventos

A causa fundamental deste evento é que os valores armazenados transitoriamente usando tstore na função não foram limpos após o término da chamada da função, e o atacante explorou essa característica para construir um endereço malicioso específico, contornando a verificação de permissões para transferir tokens.

Os passos do ataque são os seguintes:

  1. O atacante cria dois tokens maliciosos A e B, e cria um pool de liquidez para esses dois tokens em um DEX.

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

  1. Chame a função initialize do contrato alvo, utilizando o token A como colateral e o token B como token de dívida para criar um mercado de negociação alavancada.

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

  1. Chamar a função mint para depositar o token de dívida B e criar o token alavancado. Durante este processo, o endereço da pool DEX e a quantidade de cunhagem são armazenados de forma temporária.

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

  1. Criar um contrato malicioso com um endereço que tenha o mesmo número de cunhagem que o armazenamento transitório.

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

  1. Chamar a função de callback do contrato alvo através de contratos maliciosos, utilizando os valores remanescentes no armazenamento transitório para contornar a autenticação.

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

  1. Por fim, o atacante chama diretamente a função de callback do contrato alvo através de um ataque ao contrato, transferindo outros tokens (como WBTC, WETH) para obter lucro.

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

Fluxo de fundos

De acordo com os dados 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
  • 119.871 WETH

Esses ativos foram então trocados por WETH, totalizando 193,1428 WETH transferidos para uma ferramenta de anonimização. A fonte de financiamento inicial do atacante veio dos 0,3 ETH transferidos para essa ferramenta.

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

Sugestões de Segurança

  1. A parte do projeto deve, de acordo com a lógica de negócios, limpar imediatamente os valores do armazenamento transitório ao final da chamada da função usando tstore(key, 0).

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

  1. Reforçar a auditoria do código do contrato e os testes de segurança, com especial atenção às novas características da linguagem introduzidas e aos seus riscos potenciais.

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

  1. Implementar um mecanismo de múltiplas verificações para evitar perdas massivas de ativos causadas por uma única vulnerabilidade.

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

  1. Realizar avaliações de segurança e varreduras de vulnerabilidades regularmente, corrigindo prontamente problemas potenciais.

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

  1. Considerar a introdução de um sistema de monitoramento de segurança para monitorizar em tempo real comportamentos de transação anormais.

Restos Mortais: Um Roubo de 300.000 Dólares na Cadeia Causado por Armazenamento Transitório

Este evento lembra-nos novamente da necessidade de ter extrema cautela ao adotar novas tecnologias, compreendendo plenamente suas características e riscos potenciais. Ao mesmo tempo, práticas de segurança contínuas e auditorias regulares são essenciais para garantir a segurança dos projetos na cadeia.

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

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

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
  • 5
  • Compartilhar
Comentário
0/400
MemeTokenGeniusvip
· 07-22 16:28
30w dólares assim se foram? Quantas pessoas morreram?
Ver originalResponder0
WhaleStalkervip
· 07-21 21:55
Outro contrato inteligente caiu na armadilha.
Ver originalResponder0
GateUser-1a2ed0b9vip
· 07-19 16:59
Outra pessoa teve um acidente. Quem te mandou ser ganancioso?
Ver originalResponder0
ProxyCollectorvip
· 07-19 16:55
又被 fazer as pessoas de parvas 30w,啧啧
Ver originalResponder0
BugBountyHuntervip
· 07-19 16:50
Mão de pegar insetos verdadeira•velocidade MAX!
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)