Análise do Incidente de Ataque Reentrante do OrionProtocol
No dia 2 de fevereiro de 2023, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain, resultando em perdas totais de aproximadamente 2,9 milhões de dólares. Os atacantes exploraram uma vulnerabilidade no contrato e roubaram 2.844.766 USDT na rede Ethereum e 191.606 BUSD na Binance Smart Chain.
Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram as operações de transferência e autorização relevantes, preparando-se para o ataque subsequente. Em seguida, os atacantes pegaram emprestado através do método swap da UNI-V2 e chamaram o método swapThroughOrionPool do contrato ExchangeWithAtomic para realizar a troca de tokens.
O caminho de troca é definido como [USDC, Token do atacante, USDT]. A chave é que o contrato Token criado pelo atacante contém uma função de callback. Durante o processo de troca, o atacante utiliza o método Token.Transfer para chamar a função ExchangeWithAtomic.depositAsset, realizando um ataque de reentrada, resultando na acumulação contínua do montante depositado. No final, o atacante completa o lucro através da operação de retirada.
Fluxo de Fundos
O capital inicial do atacante vem da conta da hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ainda estão na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O problema central está na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função, ao executar a operação _doSwapTokens, realiza primeiro a transferência e depois atualiza a variável curBalance. O atacante adicionou lógica de callback na função transfer do Token personalizado, o que levou a uma atualização incorreta do curBalance. Isso permitiu que o atacante retirasse fundos em excesso através da função withdraw após reembolsar o empréstimo relâmpago.
Sugestões de Prevenção
O design do contrato deve seguir o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), atualizando primeiro as variáveis de estado e depois fazendo chamadas externas.
Implementar mecanismos de prevenção de reentrada, como o bloqueio de reentrada.
Para funcionalidades relacionadas à troca de tokens, é necessário considerar completamente os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Reforçar a auditoria de código, com especial atenção às funções críticas relacionadas com operações financeiras.
Considere a introdução de limites de montante de transação ou medidas de segurança adicionais, como bloqueios temporais.
Realizar avaliações de segurança e testes de penetração regularmente, identificando e corrigindo rapidamente vulnerabilidades potenciais.
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem continuar a prestar atenção à segurança dos contratos, adotando múltiplas medidas de proteção para minimizar os riscos de segurança.
Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
OrionProtocol foi alvo de um ataque de reentrada, resultando em perdas de 2,9 milhões de USDT e BUSD.
Análise do Incidente de Ataque Reentrante do OrionProtocol
No dia 2 de fevereiro de 2023, o OrionProtocol sofreu um ataque de reentrada na Ethereum e na Binance Smart Chain, resultando em perdas totais de aproximadamente 2,9 milhões de dólares. Os atacantes exploraram uma vulnerabilidade no contrato e roubaram 2.844.766 USDT na rede Ethereum e 191.606 BUSD na Binance Smart Chain.
Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram as operações de transferência e autorização relevantes, preparando-se para o ataque subsequente. Em seguida, os atacantes pegaram emprestado através do método swap da UNI-V2 e chamaram o método swapThroughOrionPool do contrato ExchangeWithAtomic para realizar a troca de tokens.
O caminho de troca é definido como [USDC, Token do atacante, USDT]. A chave é que o contrato Token criado pelo atacante contém uma função de callback. Durante o processo de troca, o atacante utiliza o método Token.Transfer para chamar a função ExchangeWithAtomic.depositAsset, realizando um ataque de reentrada, resultando na acumulação contínua do montante depositado. No final, o atacante completa o lucro através da operação de retirada.
Fluxo de Fundos
O capital inicial do atacante vem da conta da hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ainda estão na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O problema central está na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função, ao executar a operação _doSwapTokens, realiza primeiro a transferência e depois atualiza a variável curBalance. O atacante adicionou lógica de callback na função transfer do Token personalizado, o que levou a uma atualização incorreta do curBalance. Isso permitiu que o atacante retirasse fundos em excesso através da função withdraw após reembolsar o empréstimo relâmpago.
Sugestões de Prevenção
O design do contrato deve seguir o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), atualizando primeiro as variáveis de estado e depois fazendo chamadas externas.
Implementar mecanismos de prevenção de reentrada, como o bloqueio de reentrada.
Para funcionalidades relacionadas à troca de tokens, é necessário considerar completamente os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Reforçar a auditoria de código, com especial atenção às funções críticas relacionadas com operações financeiras.
Considere a introdução de limites de montante de transação ou medidas de segurança adicionais, como bloqueios temporais.
Realizar avaliações de segurança e testes de penetração regularmente, identificando e corrigindo rapidamente vulnerabilidades potenciais.
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem continuar a prestar atenção à segurança dos contratos, adotando múltiplas medidas de proteção para minimizar os riscos de segurança.