Análise do incidente de ataque de reentrada do OrionProtocol
Resumo do evento
No dia 2 de fevereiro de 2023, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain, resultando em perdas de cerca de 2,9 milhões de dólares. O atacante explorou uma vulnerabilidade do contrato, roubando 2,844,766 USDT na cadeia Ethereum e 191,606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado, preparando-se para o ataque subsequente.
Realizar empréstimos através do método swap do UNI-V2 e chamar o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca inclui o endereço do contrato do Token criado pelo atacante.
Ao executar o método swapThroughOrionPool, o atacante utiliza a função de callback no contrato Token personalizado para chamar repetidamente o método ExchangeWithAtomic.depositAsset, resultando na adição múltipla do valor depositado.
Por fim, o atacante conclui o lucro através da operação de levantamento.
Fluxo de Fundos
O capital inicial do atacante provém da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ETH ainda permanecem na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O problema central reside na função doSwapThroughOrionPool. Esta função, ao executar _doSwapTokens, realiza primeiro a operação de transferência e, em seguida, atualiza a variável curBalance. O atacante aproveita a função transfer do Token personalizado, onde adiciona um callback, chamando novamente a função depositAsset antes da atualização de curBalance, resultando em um cálculo incorreto do saldo.
Sugestões de Prevenção
Ao projetar contratos, é necessário considerar os riscos de segurança que podem surgir de vários Tokens e caminhos de troca.
Escrever o código do contrato seguindo o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), ou seja, primeiro realizar a verificação das condições, depois atualizar as variáveis de estado e, por último, realizar chamadas externas.
Adicionar mecanismos de segurança como locks de reentrada para prevenir ataques de reentrada.
Realizar auditorias de código e varreduras de vulnerabilidades regularmente, corrigindo prontamente potenciais riscos de segurança.
Limitar o montante máximo por transação, definir restrições de frequência de transação e outras medidas para reduzir as perdas potenciais causadas por ataques.
Ao adotar essas medidas, a equipe do projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de sofrer ataques semelhantes. A vigilância contínua sobre a segurança dos contratos inteligentes é crucial para a manutenção do desenvolvimento saudável do ecossistema Web3.
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.
12 Curtidas
Recompensa
12
5
Compartilhar
Comentário
0/400
StakeOrRegret
· 07-15 17:28
Outra armadilha de contratos inteligentes
Ver originalResponder0
TokenEconomist
· 07-15 07:15
deixe-me explicar: vulnerabilidade clássica de reentrância, basicamente arbitragem econômica, mas com falhas de contrato inteligente
OrionProtocol sofreu um ataque de reentrada de 2,9 milhões de dólares, afetando as redes ETH e BSC.
Análise do incidente de ataque de reentrada do OrionProtocol
Resumo do evento
No dia 2 de fevereiro de 2023, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain, resultando em perdas de cerca de 2,9 milhões de dólares. O atacante explorou uma vulnerabilidade do contrato, roubando 2,844,766 USDT na cadeia Ethereum e 191,606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado, preparando-se para o ataque subsequente.
Realizar empréstimos através do método swap do UNI-V2 e chamar o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca inclui o endereço do contrato do Token criado pelo atacante.
Ao executar o método swapThroughOrionPool, o atacante utiliza a função de callback no contrato Token personalizado para chamar repetidamente o método ExchangeWithAtomic.depositAsset, resultando na adição múltipla do valor depositado.
Por fim, o atacante conclui o lucro através da operação de levantamento.
Fluxo de Fundos
O capital inicial do atacante provém da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ETH ainda permanecem na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O problema central reside na função doSwapThroughOrionPool. Esta função, ao executar _doSwapTokens, realiza primeiro a operação de transferência e, em seguida, atualiza a variável curBalance. O atacante aproveita a função transfer do Token personalizado, onde adiciona um callback, chamando novamente a função depositAsset antes da atualização de curBalance, resultando em um cálculo incorreto do saldo.
Sugestões de Prevenção
Ao projetar contratos, é necessário considerar os riscos de segurança que podem surgir de vários Tokens e caminhos de troca.
Escrever o código do contrato seguindo o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), ou seja, primeiro realizar a verificação das condições, depois atualizar as variáveis de estado e, por último, realizar chamadas externas.
Adicionar mecanismos de segurança como locks de reentrada para prevenir ataques de reentrada.
Realizar auditorias de código e varreduras de vulnerabilidades regularmente, corrigindo prontamente potenciais riscos de segurança.
Limitar o montante máximo por transação, definir restrições de frequência de transação e outras medidas para reduzir as perdas potenciais causadas por ataques.
Ao adotar essas medidas, a equipe do projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de sofrer ataques semelhantes. A vigilância contínua sobre a segurança dos contratos inteligentes é crucial para a manutenção do desenvolvimento saudável do ecossistema Web3.