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.
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.
Passos do ataque
O atacante cria dois tokens maliciosos A e B, e cria pools para esses dois tokens em um DEX, injetando liquidez.
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.
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.
O atacante cria um contrato malicioso cujo endereço é o mesmo que o valor armazenado temporariamente na segunda vez.
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.
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.
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.
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.
6 gostos
Recompensa
6
7
Partilhar
Comentar
0/400
VitaliksTwin
· 2h atrás
Esta onda de resumo ainda está a desperdiçar gás.
Ver originalResponder0
CountdownToBroke
· 3h atrás
30w já vem outro irmão de envio
Ver originalResponder0
0xLuckbox
· 3h atrás
Foi roubado mais trezentos mil~contratos inteligentes garantem segurança, ok?
Ver originalResponder0
OnchainGossiper
· 3h atrás
Mais uma vez está a ser explorada uma falha, não é estúpido?
Ver originalResponder0
GateUser-0717ab66
· 3h atrás
30w também se sente à vontade para mencionar
Ver originalResponder0
VibesOverCharts
· 3h atrás
30w? É apenas a taxa de transação de um dia
Ver originalResponder0
DefiPlaybook
· 3h 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!
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.
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.
Passos do ataque
O atacante cria dois tokens maliciosos A e B, e cria pools para esses dois tokens em um DEX, injetando liquidez.
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.
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.
O atacante cria um contrato malicioso cujo endereço é o mesmo que o valor armazenado temporariamente na segunda vez.
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.
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.
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.