Análise do incidente de ataque de reentrada ao OrionProtocol
Resumo do Evento
De acordo com os dados de monitoramento da blockchain, em 2 de fevereiro de 2023 às 15:40:20 UTC, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT da rede Ethereum e 191.606 BUSD da Binance Smart Chain, totalizando cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
Detalhes do ataque na cadeia Ethereum
Token personalizado
Durante o processo de troca, devido à funcionalidade de callback incluída no contrato Token criado pelo atacante, o atacante foi capaz de chamar repetidamente a função ExchangeWithAtomic.depositAsset através do método Token.Transfer durante a execução de ExchangeWithAtomic.swapThroughOrionPool. Isso resultou em um aumento contínuo do montante depositado, e, finalmente, o atacante conseguiu lucrar através da operação de retirada.
Fluxo de Fundos
A fonte inicial de financiamento do atacante vem de uma grande plataforma de troca, através da sua carteira quente. Dos 1.651 ETH obtidos no ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O problema central da vulnerabilidade surge na função doSwapThroughOrionPool. Esta função atualiza a variável curBalance após a execução da transferência de tokens, sem seguir o padrão de "verificação-efeito-interação" (Checks-Effects-Interactions). Um atacante aproveitou o mecanismo de callback adicionado à função transfer do Token personalizado, chamando repetidamente a função depositAsset antes da atualização de curBalance, resultando em um erro no cálculo do saldo.
Sugestões de Prevenção
A equipe do projeto, ao desenhar contratos que envolvem funcionalidades de troca de tokens, deve considerar os riscos de segurança que podem surgir de vários tipos de tokens e caminhos de troca.
Seguir rigorosamente as normas de codificação "verificação-efeito-interação", ou seja, primeiro realizar a verificação de condições, depois atualizar as variáveis de estado e, por último, executar chamadas externas.
Para funções que podem ter risco de reentrada, utilize mecanismos de proteção como bloqueios de reentrada.
Adicione verificações de saldo antes e depois de operações críticas para garantir a atomicidade e a consistência das transações.
Realizar auditorias de código e testes de segurança regularmente, detectando e corrigindo rapidamente potenciais vulnerabilidades.
Considerar a implementação de limites de montante de transação ou limites de frequência de transação, para reduzir as perdas causadas por ataques únicos.
Ao tomar essas medidas, o projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de sofrer ataques semelhantes. No ecossistema Web3 em rápida evolução, a segurança deve sempre ser a principal consideração.
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.
13 Curtidas
Recompensa
13
4
Compartilhar
Comentário
0/400
BearMarketGardener
· 11h atrás
Mais uma reentrada, todos os legumes foram tirados.
Ver originalResponder0
Token_Sherpa
· 21h atrás
ugh... mais um dia, mais um ataque de reentrância. quando é que os devs aprenderão a verificar os efeitos e interações smh
O OrionProtocol sofreu um ataque de reentrada de 2,9 milhões de dólares: Análise da vulnerabilidade e recomendações de prevenção.
Análise do incidente de ataque de reentrada ao OrionProtocol
Resumo do Evento
De acordo com os dados de monitoramento da blockchain, em 2 de fevereiro de 2023 às 15:40:20 UTC, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT da rede Ethereum e 191.606 BUSD da Binance Smart Chain, totalizando cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
Detalhes do ataque na cadeia Ethereum
Token personalizado
Durante o processo de troca, devido à funcionalidade de callback incluída no contrato Token criado pelo atacante, o atacante foi capaz de chamar repetidamente a função ExchangeWithAtomic.depositAsset através do método Token.Transfer durante a execução de ExchangeWithAtomic.swapThroughOrionPool. Isso resultou em um aumento contínuo do montante depositado, e, finalmente, o atacante conseguiu lucrar através da operação de retirada.
Fluxo de Fundos
A fonte inicial de financiamento do atacante vem de uma grande plataforma de troca, através da sua carteira quente. Dos 1.651 ETH obtidos no ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O problema central da vulnerabilidade surge na função doSwapThroughOrionPool. Esta função atualiza a variável curBalance após a execução da transferência de tokens, sem seguir o padrão de "verificação-efeito-interação" (Checks-Effects-Interactions). Um atacante aproveitou o mecanismo de callback adicionado à função transfer do Token personalizado, chamando repetidamente a função depositAsset antes da atualização de curBalance, resultando em um erro no cálculo do saldo.
Sugestões de Prevenção
A equipe do projeto, ao desenhar contratos que envolvem funcionalidades de troca de tokens, deve considerar os riscos de segurança que podem surgir de vários tipos de tokens e caminhos de troca.
Seguir rigorosamente as normas de codificação "verificação-efeito-interação", ou seja, primeiro realizar a verificação de condições, depois atualizar as variáveis de estado e, por último, executar chamadas externas.
Para funções que podem ter risco de reentrada, utilize mecanismos de proteção como bloqueios de reentrada.
Adicione verificações de saldo antes e depois de operações críticas para garantir a atomicidade e a consistência das transações.
Realizar auditorias de código e testes de segurança regularmente, detectando e corrigindo rapidamente potenciais vulnerabilidades.
Considerar a implementação de limites de montante de transação ou limites de frequência de transação, para reduzir as perdas causadas por ataques únicos.
Ao tomar essas medidas, o projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de sofrer ataques semelhantes. No ecossistema Web3 em rápida evolução, a segurança deve sempre ser a principal consideração.