Análise do incidente de ataque de reentrada 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 aproximadamente 2,9 milhões de dólares em perdas. Os atacantes exploraram uma vulnerabilidade do contrato, roubando 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart.
Processo de Ataque
O atacante primeiro criou um contrato de Token personalizado e realizou as operações de transferência e autorização relacionadas. Em seguida, o atacante contraiu um empréstimo através do método swap de um DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante.
Durante o processo de troca, devido à presença de um mecanismo de callback no contrato Token do atacante, o atacante conseguiu chamar novamente o método ExchangeWithAtomic.depositAsset através do Token.Transfer, resultando em um ataque de reentrada. Isso levou à acumulação duplicada do valor do depósito, e, finalmente, o atacante lucrou através da operação de retirada.
Fluxo de Fundos
O capital inicial do atacante veio da conta da hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 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 ocorre na função doSwapThroughOrionPool. Esta função chama a função _doSwapTokens, que atualiza a variável curBalance após a operação de transferência. O atacante aproveitou a funcionalidade de callback adicionada à função transfer do Token personalizado, chamando novamente a função depositAsset antes da atualização de curBalance, resultando em uma atualização incorreta de curBalance. Finalmente, após reembolsar o empréstimo relâmpago, o atacante retirou fundos adicionais através da função withdraw.
Sugestões de Prevenção
Para evitar ataques semelhantes, recomenda-se que a equipe do projeto preste atenção aos seguintes pontos ao projetar o contrato:
Considere as situações inesperadas que podem surgir devido a vários Tokens e múltiplos caminhos de troca.
Seguir o padrão de codificação "Checagens-Efeitos-Interações" (Checks-Effects-Interactions), ou seja, primeiro realizar a verificação de condições, em seguida atualizar as variáveis de estado e, por último, executar chamadas externas.
Use bloqueios de reentrada antes e depois de operações críticas para evitar ataques de reentrada.
Realizar validação de segurança dos contratos Token de chamadas externas.
Realizar auditorias de código e testes de segurança regularmente, para detectar e corrigir vulnerabilidades potenciais a tempo.
Ao adotar essas medidas, o projeto pode aumentar significativamente a segurança e a estabilidade dos contratos, minimizando o risco de sofrer ataques.
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.
17 gostos
Recompensa
17
7
Partilhar
Comentar
0/400
AirdropHunterXiao
· 5h atrás
O projeto de Blockchain foi novamente explorado.
Ver originalResponder0
MemecoinResearcher
· 5h atrás
ngmi... parece que a maldição da reentrância ataca novamente fr fr
Ver originalResponder0
NightAirdropper
· 5h atrás
Todos os dias sendo atacado, que triste.
Ver originalResponder0
rugpull_survivor
· 5h atrás
fazer as pessoas de parvas uma vez e ainda há uma próxima vez
OrionProtocol sofreu um ataque de reentrada de 2,9 milhões de dólares: Análise do processo de ataque e recomendações de prevenção
Análise do incidente de ataque de reentrada 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 aproximadamente 2,9 milhões de dólares em perdas. Os atacantes exploraram uma vulnerabilidade do contrato, roubando 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart.
Processo de Ataque
O atacante primeiro criou um contrato de Token personalizado e realizou as operações de transferência e autorização relacionadas. Em seguida, o atacante contraiu um empréstimo através do método swap de um DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool para a troca de tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante.
Durante o processo de troca, devido à presença de um mecanismo de callback no contrato Token do atacante, o atacante conseguiu chamar novamente o método ExchangeWithAtomic.depositAsset através do Token.Transfer, resultando em um ataque de reentrada. Isso levou à acumulação duplicada do valor do depósito, e, finalmente, o atacante lucrou através da operação de retirada.
Fluxo de Fundos
O capital inicial do atacante veio da conta da hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 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 ocorre na função doSwapThroughOrionPool. Esta função chama a função _doSwapTokens, que atualiza a variável curBalance após a operação de transferência. O atacante aproveitou a funcionalidade de callback adicionada à função transfer do Token personalizado, chamando novamente a função depositAsset antes da atualização de curBalance, resultando em uma atualização incorreta de curBalance. Finalmente, após reembolsar o empréstimo relâmpago, o atacante retirou fundos adicionais através da função withdraw.
Sugestões de Prevenção
Para evitar ataques semelhantes, recomenda-se que a equipe do projeto preste atenção aos seguintes pontos ao projetar o contrato:
Ao adotar essas medidas, o projeto pode aumentar significativamente a segurança e a estabilidade dos contratos, minimizando o risco de sofrer ataques.