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
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.
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.