Vulnerabilidade de armazenamento transitório causa perda de 300 mil dólares em projetos de negociação com margem Ethereum.

Vulnerabilidade de armazenamento transitório resulta no roubo de ativos no valor de 300 mil dólares

No dia 30 de março de 2025, um projeto de negociação alavancada na cadeia Ethereum foi atacado, resultando em perdas de mais de 300.000 dólares em ativos. A equipe de segurança realizou uma análise aprofundada deste incidente e agora compartilha os resultados a seguir:

Contexto

A versão 0.8.24 do Solidity introduziu características de armazenamento transitório baseadas no EIP-1153. 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 gas, persistência dentro da transação e limpeza automática.

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

Motivo do Ataque

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

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

Passos do ataque

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

  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 um mercado de negociação alavancada.

  3. O atacante chama a função mint do contrato Vault, depositando o token de dívida B para criar tokens alavancados. Durante esse processo, o endereço da piscina DEX e a quantidade a ser criada são armazenados temporariamente.

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

  5. O atacante chama a função de callback do contrato Vault através de um contrato malicioso para retirar tokens. Como os valores de armazenamento transitório 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 do contrato de ataque (token A), transferindo outros tokens (como WBTC, WETH) para obter lucro.

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

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

Resíduos Mortais: 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 Causado por Armazenamento Transitório

Resíduo Fatal: Um Roubo de 300 Mil Dólares na Cadeia Provocado 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

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

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

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

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

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

Resíduos Fatais: Um Roubo de 300 Mil Dólares na Blockchain Provocado por Armazenamento Transitório

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

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

Análise do Fluxo de Capital

Os atacantes roubaram cerca de 300 mil dólares em ativos, incluindo 17.814,8626 USDC, 1,4085 WBTC e 119,871 WETH. O WBTC foi trocado por 63,5596 WETH, e o USDC foi trocado por 9,7122 WETH. Em seguida, um total de 193,1428 WETH foi transferido para uma plataforma anônima. O capital inicial dos atacantes veio de 0,3 ETH transferidos para essa plataforma.

Resumo

O núcleo deste ataque reside no fato de que os atacantes utilizam a característica de que o armazenamento transitório permanece inalterado durante todo o período da transação, contornando a verificação de autorização da função de retorno. Recomenda-se que a equipe do projeto limpe imediatamente os valores no armazenamento transitório após a conclusão da chamada da função usando tstore(key, 0). Ao mesmo tempo, deve-se reforçar a auditoria do código do contrato e os testes de segurança para evitar que situações semelhantes ocorram.

ETH3.1%
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
  • 7
  • Repostar
  • Compartilhar
Comentário
0/400
VitaliksTwinvip
· 8h atrás
Esta onda de resumo ainda está a desperdiçar gás.
Ver originalResponder0
CountdownToBrokevip
· 8h atrás
30w já vem outro irmão de envio
Ver originalResponder0
0xLuckboxvip
· 8h atrás
Foi roubado mais trezentos mil~contratos inteligentes garantem segurança, ok?
Ver originalResponder0
OnchainGossipervip
· 8h atrás
Mais uma vez está a ser explorada uma falha, não é estúpido?
Ver originalResponder0
GateUser-0717ab66vip
· 8h atrás
30w também se sente à vontade para mencionar
Ver originalResponder0
VibesOverChartsvip
· 8h atrás
30w? É apenas a taxa de transação de um dia
Ver originalResponder0
DefiPlaybookvip
· 8h atrás
Com base na amostragem de dados, esse tipo de vulnerabilidade de armazenamento pode levar a uma taxa de perda de até 86,3%, fique atento!
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)