Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato, resultando em perdas de cerca de 2,9 milhões de dólares. O atacante aproveitou a função de callback do contrato de token criado por eles, chamando repetidamente a função de depósito durante o processo de negociação, resultando na extração de fundos que foram incorretamente acumulados.
Processo de Ataque
O atacante primeiro criou um contrato de Token personalizado e realizou as operações necessárias de transferência e autorização.
Token criado pelo atacante
Durante o processo de troca, o contrato Token do atacante utiliza a função transfer para acionar um callback, chamando repetidamente a função ExchangeWithAtomic.depositAsset, resultando na acumulação incorreta do montante depositado.
Por fim, o atacante retira fundos excessivos através da função withdraw, completando o ataque.
Análise de Vulnerabilidades
A vulnerabilidade reside principalmente nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. A questão-chave é:
O contrato atualiza a variável curBalance apenas após a execução da transferência.
Não conseguiu prevenir eficazmente ataques de reentrada, permitindo a execução de funções de callback durante o processo de transferência.
Isto permite que os atacantes chamem repetidamente a função depositAsset antes da atualização do curBalance, causando erros no cálculo dos fundos.
Impacto do ataque
Perda de 2.844.766 USDT na cadeia Ethereum
Perda de 191,606 BUSD na Binance Smart Chain
Total de aproximadamente 2,9 milhões de dólares
Fluxo de Capital
Dos 1.651 ETH lucrados pelo atacante, 657,5 estão ainda na carteira, enquanto o restante foi transferido através de um serviço de mistura. Os fundos iniciais vieram de uma conta de carteira quente de uma plataforma de troca.
Sugestões de segurança
Seguir estritamente o modelo "Verificações- Efeitos- Interações" (Checks-Effects-Interactions) ao escrever contratos inteligentes.
Implementar um bloqueio de reentrada para evitar que a função seja chamada repetidamente durante a execução.
Ao realizar a troca de tokens, considere os vários tipos de Token e caminhos de troca possíveis, e prepare-se para lidar com situações excepcionais.
Realizar auditorias de segurança de contratos inteligentes regularmente, identificando e corrigindo rapidamente potenciais vulnerabilidades.
Este evento lembra novamente aos desenvolvedores que, ao criar contratos inteligentes que envolvem a interação de fundos, devem prestar alta atenção à segurança, adotando medidas de proteção abrangentes para minimizar ao máximo os riscos do contrato.
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.
20 Curtidas
Recompensa
20
8
Compartilhar
Comentário
0/400
AirdropHustler
· 07-18 17:53
Zé, este contrato inteligente é tão frágil quanto papel.
Ver originalResponder0
MerkleDreamer
· 07-18 06:45
Foi roubado novamente? Não é surpresa.
Ver originalResponder0
rekt_but_resilient
· 07-16 11:57
Outra vez foi tirado 290w
Ver originalResponder0
LiquidationWatcher
· 07-15 21:48
Mais uma vez um ataque de reentrada, não aprende!
Ver originalResponder0
ForkTongue
· 07-15 21:48
Os projetos confiáveis todos explodiram. Quando é que isso vai acabar?
Ver originalResponder0
OnchainFortuneTeller
· 07-15 21:44
Passaram tantos anos e a falha ainda não foi corrigida?
OrionProtocol sofreu um ataque de reentrada, com perdas de 2,9 milhões de dólares. As cadeias ETH e BSC foram afetadas.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato, resultando em perdas de cerca de 2,9 milhões de dólares. O atacante aproveitou a função de callback do contrato de token criado por eles, chamando repetidamente a função de depósito durante o processo de negociação, resultando na extração de fundos que foram incorretamente acumulados.
Processo de Ataque
Token criado pelo atacante
Durante o processo de troca, o contrato Token do atacante utiliza a função transfer para acionar um callback, chamando repetidamente a função ExchangeWithAtomic.depositAsset, resultando na acumulação incorreta do montante depositado.
Por fim, o atacante retira fundos excessivos através da função withdraw, completando o ataque.
Análise de Vulnerabilidades
A vulnerabilidade reside principalmente nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. A questão-chave é:
Isto permite que os atacantes chamem repetidamente a função depositAsset antes da atualização do curBalance, causando erros no cálculo dos fundos.
Impacto do ataque
Fluxo de Capital
Dos 1.651 ETH lucrados pelo atacante, 657,5 estão ainda na carteira, enquanto o restante foi transferido através de um serviço de mistura. Os fundos iniciais vieram de uma conta de carteira quente de uma plataforma de troca.
Sugestões de segurança
Este evento lembra novamente aos desenvolvedores que, ao criar contratos inteligentes que envolvem a interação de fundos, devem prestar alta atenção à segurança, adotando medidas de proteção abrangentes para minimizar ao máximo os riscos do contrato.