Análise do incidente de ataque por reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 à tarde, o OrionProtocol sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato nas redes Ethereum e Binance Smart Chain, resultando em uma perda total de aproximadamente 2,9 milhões de dólares. As perdas específicas incluem 2.844.766 USDT na rede Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou operações de transferência e autorização relacionadas, preparando-se para o ataque subsequente. Em seguida, o atacante tomou emprestado usando o método swap de um determinado DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca foi definido como [USDC, Token do atacante, USDT].
Durante o processo de troca, o atacante utilizou a funcionalidade de callback do contrato de Token personalizado, chamando repetidamente a função ExchangeWithAtomic.depositAsset através do método Token.Transfer, resultando na acumulação contínua do montante depositado. No final, o atacante completou o lucro através da operação de saque.
Fluxo de Capital
A fonte inicial de capital do atacante vem da conta da carteira quente de uma determinada plataforma de negociação. Dos 1.651 ETH obtidos com o ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
A questão central está na função doSwapThroughOrionPool. Esta função chama a função _doSwapTokens, que atualiza a variável curBalance após a transferência de tokens. O atacante adicionou uma lógica de callback na função transfer do Token personalizado, chamando a função depositAsset, o que resultou na atualização incorreta de curBalance. O atacante, em seguida, chamou a função withdraw para retirar os fundos após reembolsar o empréstimo relâmpago, completando o ataque.
Reproduzir Ataques
O atacante cria um contrato de token ERC20 personalizado e utiliza a funcionalidade de empréstimos relâmpago de uma DEX para realizar o ataque. Os principais passos incluem:
Criar um Token personalizado e estabelecer pares de negociação com USDC e USDT
Preparar o capital inicial e fornecer liquidez
Chamar as funções depositAsset e swapThroughOrionPool do contrato ExchangeWithAtomic
Adicionar lógica de callback na função transfer do Token personalizado
Finalmente, retire os lucros através da função withdraw.
Recomendações de Segurança
Para evitar ataques semelhantes, a equipe do projeto deve ter em atenção os seguintes pontos:
Na concepção de contratos, é necessário considerar os riscos de segurança que podem surgir de múltiplos tokens e caminhos de troca.
Seguir a norma de codificação "verificação primeiro, depois efeitos, e por último interações" (Checks-Effects-Interactions)
Implementar auditorias de segurança abrangentes, com foco especial no risco de ataques de reentrada.
Considere usar mecanismos de segurança como bloqueios de reentrada
Realizar regularmente varreduras de vulnerabilidades em contratos e avaliações de segurança
Este evento sublinha novamente a importância da segurança dos contratos inteligentes, os projetos devem prestar atenção contínua e melhorar suas medidas de segurança para proteger os ativos dos usuários e manter a reputação da plataforma.
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 sofreu um ataque de reentrada de 290 milhões, com fundos já parcialmente a fluir para o misturador de criptomoedas
Análise do incidente de ataque por reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 à tarde, o OrionProtocol sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato nas redes Ethereum e Binance Smart Chain, resultando em uma perda total de aproximadamente 2,9 milhões de dólares. As perdas específicas incluem 2.844.766 USDT na rede Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou operações de transferência e autorização relacionadas, preparando-se para o ataque subsequente. Em seguida, o atacante tomou emprestado usando o método swap de um determinado DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca foi definido como [USDC, Token do atacante, USDT].
Durante o processo de troca, o atacante utilizou a funcionalidade de callback do contrato de Token personalizado, chamando repetidamente a função ExchangeWithAtomic.depositAsset através do método Token.Transfer, resultando na acumulação contínua do montante depositado. No final, o atacante completou o lucro através da operação de saque.
Fluxo de Capital
A fonte inicial de capital do atacante vem da conta da carteira quente de uma determinada plataforma de negociação. Dos 1.651 ETH obtidos com o ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
A questão central está na função doSwapThroughOrionPool. Esta função chama a função _doSwapTokens, que atualiza a variável curBalance após a transferência de tokens. O atacante adicionou uma lógica de callback na função transfer do Token personalizado, chamando a função depositAsset, o que resultou na atualização incorreta de curBalance. O atacante, em seguida, chamou a função withdraw para retirar os fundos após reembolsar o empréstimo relâmpago, completando o ataque.
Reproduzir Ataques
O atacante cria um contrato de token ERC20 personalizado e utiliza a funcionalidade de empréstimos relâmpago de uma DEX para realizar o ataque. Os principais passos incluem:
Recomendações de Segurança
Para evitar ataques semelhantes, a equipe do projeto deve ter em atenção os seguintes pontos:
Este evento sublinha novamente a importância da segurança dos contratos inteligentes, os projetos devem prestar atenção contínua e melhorar suas medidas de segurança para proteger os ativos dos usuários e manter a reputação da plataforma.