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.
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.
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.
Processo de ataque
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.
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.
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.
O atacante cria um contrato malicioso, cujo endereço é o mesmo que a quantidade de cunhagem armazenada temporariamente anteriormente.
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.
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.
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.
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:
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.
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.
Implementar um mecanismo de múltiplas validações, não apenas depender de uma única verificação de identidade.
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.
18 gostos
Recompensa
18
6
Partilhar
Comentar
0/400
GhostChainLoyalist
· 07-23 20:02
ficar de fora, mais um projeto que foi fazer as pessoas de parvas
Ver originalResponder0
HypotheticalLiquidator
· 07-23 17:12
300 mil? É isso que está a acontecer com a purificação do mercado...
Ver originalResponder0
P2ENotWorking
· 07-20 21:17
A equipa do projeto está a dormir novamente.
Ver originalResponder0
BlockchainRetirementHome
· 07-20 21:16
Outra vez contratos inteligentes fazer as pessoas de parvas
Ver originalResponder0
DYORMaster
· 07-20 20:49
Aparente, mas inútil, nem sequer sabem auditar o código.
Ver originalResponder0
DecentralizedElder
· 07-20 20:47
Levaram tudo, não é? O projeto é realmente muito fraco.
Vulnerabilidade de armazenamento transitório resulta em um roubo de 300 mil dólares na cadeia em projeto de negociação com margem
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.
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.
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.
Processo de ataque
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.
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.
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.
O atacante cria um contrato malicioso, cujo endereço é o mesmo que a quantidade de cunhagem armazenada temporariamente anteriormente.
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.
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.
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:
É importante notar que o financiamento inicial do atacante provém de 0.3 ETH transferidos de uma rede anônima.
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:
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.