Um assalto na cadeia causado por armazenamento transitório: os 300.000 dólares de perda por trás disso
No dia 30 de março de 2025, um projeto de negociação alavancada na cadeia Ethereum chamado SIR.trading foi atacado, resultando em perdas de ativos superiores a 300.000 dólares. A equipe de segurança realizou uma análise aprofundada deste incidente, revelando os detalhes e as causas do ataque.
Contexto do Evento
Os atacantes exploraram as características de armazenamento transitório introduzidas na versão 0.8.24 do Solidity. Esta nova localização de armazenamento de dados foi projetada para fornecer uma forma de armazenamento temporário de baixo custo e eficaz durante a transação. As principais características do armazenamento transitório incluem:
Baixos custos de gas: o custo de operação é fixo em 100 gas.
Persistência da transação: os dados permanecem válidos durante todo o período da transação.
Limpeza automática: após o término da transação, o armazenamento é redefinido para zero.
Fonte do ataque
A raiz da vulnerabilidade do ataque reside no fato de que os valores armazenados temporariamente com tstore na função não são limpos após o término da chamada da função. Isso permite que um atacante construa endereços maliciosos específicos, contorne as verificações de permissão e retire tokens.
Processo de 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 cunhar o token alavancado. Durante este processo, o endereço do pool DEX e a quantidade cunhada são armazenados de forma transitória.
O atacante cria um contrato malicioso, cujo endereço é o mesmo que a quantidade de minting armazenada anteriormente de forma transitória.
O atacante chamou a função de retorno do contrato Vault através de um contrato malicioso, conseguindo contornar a verificação de permissões devido ao fato de que os valores no armazenamento transitório não foram limpos.
Por fim, o atacante chama diretamente a função de callback do contrato Vault através do contrato de ataque, transferindo outros tokens (como WBTC, WETH) para obter lucro.
Análise do 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 convertidos em WETH e, finalmente, transferidos para uma ferramenta de anonimização. A fonte inicial de financiamento do atacante foi de 0,3 ETH transferidos dessa ferramenta.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve:
Após a chamada da função, utilize imediatamente tstore(key para limpar os valores no armazenamento transitório.
Reforçar a auditoria de código de contratos e os testes de segurança.
Use com cautela os novos recursos de linguagem introduzidos, compreendendo bem os seus riscos potenciais.
Este incidente enfatiza novamente a importância de manter um equilíbrio entre a segurança e a aplicação de novas tecnologias no desenvolvimento de projetos de blockchain. À medida que a tecnologia continua a evoluir, os desenvolvedores e especialistas em segurança precisam manter-se alertas, identificando e respondendo prontamente a novos desafios de segurança.
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.
9 Curtidas
Recompensa
9
7
Compartilhar
Comentário
0/400
MemeTokenGenius
· 8h atrás
Tão adorável que nem foi testado antes de ser lançado?
Ver originalResponder0
quiet_lurker
· 8h atrás
Mais um projeto foi esfregado no chão.
Ver originalResponder0
PumpBeforeRug
· 8h atrás
Ouvi dizer que desta vez ele virou e fugiu~contratos inteligentes pequeno bug
Ver originalResponder0
MEVHunter
· 8h atrás
Estes 30k são demasiado baratos, até o Empréstimos Flash dá preguiça de correr.
Ver originalResponder0
ContractSurrender
· 8h atrás
O velho projeto Tudo em novas características, está a esfriar...
Vulnerabilidade de armazenamento transitório leva a ataque de 30 mil dólares por hacker a projetos Ethereum
Um assalto na cadeia causado por armazenamento transitório: os 300.000 dólares de perda por trás disso
No dia 30 de março de 2025, um projeto de negociação alavancada na cadeia Ethereum chamado SIR.trading foi atacado, resultando em perdas de ativos superiores a 300.000 dólares. A equipe de segurança realizou uma análise aprofundada deste incidente, revelando os detalhes e as causas do ataque.
Contexto do Evento
Os atacantes exploraram as características de armazenamento transitório introduzidas na versão 0.8.24 do Solidity. Esta nova localização de armazenamento de dados foi projetada para fornecer uma forma de armazenamento temporário de baixo custo e eficaz durante a transação. As principais características do armazenamento transitório incluem:
Fonte do ataque
A raiz da vulnerabilidade do ataque reside no fato de que os valores armazenados temporariamente com tstore na função não são limpos após o término da chamada da função. Isso permite que um atacante construa endereços maliciosos específicos, contorne as verificações de permissão e retire tokens.
Processo de 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 cunhar o token alavancado. Durante este processo, o endereço do pool DEX e a quantidade cunhada são armazenados de forma transitória.
O atacante cria um contrato malicioso, cujo endereço é o mesmo que a quantidade de minting armazenada anteriormente de forma transitória.
O atacante chamou a função de retorno do contrato Vault através de um contrato malicioso, conseguindo contornar a verificação de permissões devido ao fato de que os valores no armazenamento transitório não foram limpos.
Por fim, o atacante chama diretamente a função de callback do contrato Vault através do contrato de ataque, transferindo outros tokens (como WBTC, WETH) para obter lucro.
Análise do 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:
Esses ativos foram então convertidos em WETH e, finalmente, transferidos para uma ferramenta de anonimização. A fonte inicial de financiamento do atacante foi de 0,3 ETH transferidos dessa ferramenta.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve:
Este incidente enfatiza novamente a importância de manter um equilíbrio entre a segurança e a aplicação de novas tecnologias no desenvolvimento de projetos de blockchain. À medida que a tecnologia continua a evoluir, os desenvolvedores e especialistas em segurança precisam manter-se alertas, identificando e respondendo prontamente a novos desafios de segurança.