Vulnerabilidade de armazenamento temporário causa perda de 300.000 dólares em projetos de negociação com margem. Atacantes transferem WBTC e WETH.

robot
Geração do resumo em andamento

Defeito de armazenamento transitório causa perda de 300 mil dólares em projetos na cadeia

No dia 30 de março de 2025, um projeto de negociação alavancada na cadeia Ethereum foi atacado, resultando em perdas de ativos superiores a 300 mil dólares. A equipe de segurança realizou uma análise aprofundada deste incidente, revelando os detalhes técnicos do ataque e suas causas fundamentais.

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

Contexto do Evento

O ataque foi direcionado a um projeto de negociação alavancada chamado SIR.trading. O atacante conseguiu explorar uma vulnerabilidade no contrato desse projeto, o que resultou na transferência ilegal de uma grande quantidade de ativos.

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

Análise das causas técnicas

O problema central deste ataque decorre da característica de armazenamento transitório introduzida na versão 0.8.24 do Solidity (transient storage). O armazenamento transitório é uma nova localização de armazenamento de dados, projetada para oferecer uma forma de armazenamento temporário de baixo custo e efetiva durante a transação. No entanto, neste caso, o uso inadequado do armazenamento transitório resultou em uma grave vulnerabilidade de segurança.

A razão fundamental do ataque é que os valores armazenados temporariamente com tstore no contrato não foram corretamente limpos após a chamada da função. Isso permite que o atacante construa endereços maliciosos específicos, contornando a verificação de permissões e transferindo ilegalmente tokens.

Fatal Residue: A $300,000 na cadeia Heist Triggered by Transient Storage

Processo de Ataque

  1. O atacante cria dois tokens maliciosos A e B, e cria um pool de liquidez para esses dois tokens em um DEX.
  2. O atacante utiliza esses dois tokens para criar um novo mercado de negociação alavancada no projeto alvo.
  3. Através de transações cuidadosamente elaboradas, o atacante deixou valores específicos na memória transitória.
  4. O atacante cria um contrato malicioso cujo endereço corresponde ao valor armazenado anteriormente.
  5. Usando este contrato malicioso, o atacante conseguiu contornar a verificação de permissões no contrato do projeto.
  6. Finalmente, o atacante conseguiu transferir outros tokens do contrato do projeto (como WBTC, WETH) para lucrar.

Resíduos fatais: um assalto de 300 mil 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íduo letal: um assalto na cadeia de 300 mil dólares causado 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 de 300 mil dólares na cadeia causado por armazenamento transitório

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

Resíduos fatais: um assalto de 300 mil 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íduos fatais: 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 Transitório

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

Análise do fluxo de fundos

De acordo com a análise de dados na cadeia, os atacantes roubaram aproximadamente 300 mil dólares em ativos, incluindo:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Esses ativos roubados foram posteriormente trocados por WETH, totalizando cerca de 193,1428 WETH, e foram transferidos para um determinado protocolo de negociação de privacidade.

É importante notar que o capital inicial do atacante (0.3 ETH) também veio do mesmo protocolo de privacidade, o que pode sugerir que o atacante está tentando ocultar sua identidade e a origem dos fundos.

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

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

Sugestões de segurança

Para evitar que eventos semelhantes ocorram novamente, os especialistas em segurança sugerem:

  1. Ao usar armazenamento transitório, deve-se limpar imediatamente o valor armazenado após o término da chamada da função usando tstore(key, 0).
  2. Reforçar a auditoria e os testes de segurança do código dos contratos, especialmente em relação às novas funcionalidades introduzidas.
  3. Ao implementar verificações de permissões críticas, evite depender excessivamente de mecanismos de armazenamento que possam ser manipulados.

Este incidente sublinha novamente que, ao adotar novas características tecnológicas, é necessário considerar plenamente os seus potenciais impactos de segurança. Para os projetos de blockchain, auditorias de segurança contínuas e avaliações de risco são cruciais.

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

WBTC-1.14%
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
  • 3
  • Compartilhar
Comentário
0/400
StableGeniusDegenvip
· 17h atrás
Mais um problema aconteceu.
Ver originalResponder0
LeekCuttervip
· 17h atrás
Outra vez a recolher idiotas.
Ver originalResponder0
CommunityWorkervip
· 17h atrás
又是0审计项目被 fazer as pessoas de parvas
Ver originalResponder0
  • 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)