Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o projeto OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade de contrato, resultando em uma perda total de cerca de 2,9 milhões de dólares em ativos, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implementou um contrato Token especial e realizou uma série de preparativos. Em seguida, o atacante tomou emprestado fundos através da funcionalidade de swap de um DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para realizar a troca de tokens. O caminho de troca incluía o endereço do contrato Token criado pelo atacante, o que preparou o terreno para o ataque de callback subsequente.
Durante o processo de conversão, devido à lógica de callback incluída no contrato Token do atacante, ocorreu uma chamada repetida ao método ExchangeWithAtomic.depositAsset durante a operação de transferência. Este ataque de reentrada fez com que o montante do depósito fosse acumulado repetidamente, permitindo que o atacante obtivesse, através da operação de retirada, fundos que ultrapassavam o limite normal.
Fluxo de Fundos
A fonte inicial de capital do atacante provém da carteira quente de uma plataforma de negociação. Dos 1,651 ETH obtidos com o ataque, 657.5 ETH ainda estão na carteira do atacante, enquanto o restante já foi transferido através de ferramentas de mistura.
Análise de Vulnerabilidades
O problema central do ataque reside na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função, ao lidar com a troca de tokens, não trata corretamente as possíveis situações de reentrada. Especificamente, na função _doSwapTokens, a operação de transferência de tokens atualiza a variável curBalance apenas após a transferência, o que oferece uma oportunidade para os atacantes.
Os atacantes adicionaram lógica de callback na função transfer do Token personalizado, acionando a chamada da função depositAsset a cada transferência, resultando na atualização incorreta da variável curBalance. No final, após devolver o empréstimo relâmpago, os atacantes retiraram fundos em excesso através da função withdraw.
Reproduzindo a vulnerabilidade
Os pesquisadores forneceram parte do código POC, demonstrando como explorar a vulnerabilidade para realizar ataques. O código simula principalmente o fluxo de operações do atacante, incluindo a criação de Tokens falsificados, a configuração de pools de liquidez, a realização de empréstimos relâmpago e ataques de reentrada.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve ter em mente os seguintes pontos ao projetar o contrato:
Ao implementar a funcionalidade de troca de tokens, é necessário considerar os potenciais riscos que diferentes tipos de Token e caminhos de troca podem trazer.
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, executar chamadas externas.
Utilize um bloqueio de reentrada ou outro mecanismo de prevenção de reentrada para proteger funções críticas.
Realizar auditorias de segurança regularmente para identificar e corrigir vulnerabilidades potenciais em tempo hábil.
Considere introduzir limites de montante de transação ou limites de frequência de transação para reduzir o impacto de ataques potenciais.
Ao adotar essas medidas, o projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de ataques. No ecossistema Web3, a segurança deve ser sempre a principal preocupação.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
10 gostos
Recompensa
10
4
Partilhar
Comentar
0/400
SleepTrader
· 8h atrás
Mais um novato de contrato foi espancado.
Ver originalResponder0
StablecoinEnjoyer
· 8h atrás
De novo foi enganado, não aprende a lição, hein?
Ver originalResponder0
GetRichLeek
· 9h atrás
Dia a dia a ser apanhado por contratos de Cupões de Recorte hahahaha
Ver originalResponder0
MemeEchoer
· 9h atrás
Outra vez deitado, parece que os contratos inteligentes ainda precisam ser escritos com seriedade.
OrionProtocol sofreu um ataque de reentrada, resultando em uma perda de 2,9 milhões de dólares em ativos.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o projeto OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade de contrato, resultando em uma perda total de cerca de 2,9 milhões de dólares em ativos, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implementou um contrato Token especial e realizou uma série de preparativos. Em seguida, o atacante tomou emprestado fundos através da funcionalidade de swap de um DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para realizar a troca de tokens. O caminho de troca incluía o endereço do contrato Token criado pelo atacante, o que preparou o terreno para o ataque de callback subsequente.
Durante o processo de conversão, devido à lógica de callback incluída no contrato Token do atacante, ocorreu uma chamada repetida ao método ExchangeWithAtomic.depositAsset durante a operação de transferência. Este ataque de reentrada fez com que o montante do depósito fosse acumulado repetidamente, permitindo que o atacante obtivesse, através da operação de retirada, fundos que ultrapassavam o limite normal.
Fluxo de Fundos
A fonte inicial de capital do atacante provém da carteira quente de uma plataforma de negociação. Dos 1,651 ETH obtidos com o ataque, 657.5 ETH ainda estão na carteira do atacante, enquanto o restante já foi transferido através de ferramentas de mistura.
Análise de Vulnerabilidades
O problema central do ataque reside na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função, ao lidar com a troca de tokens, não trata corretamente as possíveis situações de reentrada. Especificamente, na função _doSwapTokens, a operação de transferência de tokens atualiza a variável curBalance apenas após a transferência, o que oferece uma oportunidade para os atacantes.
Os atacantes adicionaram lógica de callback na função transfer do Token personalizado, acionando a chamada da função depositAsset a cada transferência, resultando na atualização incorreta da variável curBalance. No final, após devolver o empréstimo relâmpago, os atacantes retiraram fundos em excesso através da função withdraw.
Reproduzindo a vulnerabilidade
Os pesquisadores forneceram parte do código POC, demonstrando como explorar a vulnerabilidade para realizar ataques. O código simula principalmente o fluxo de operações do atacante, incluindo a criação de Tokens falsificados, a configuração de pools de liquidez, a realização de empréstimos relâmpago e ataques de reentrada.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve ter em mente os seguintes pontos ao projetar o contrato:
Ao implementar a funcionalidade de troca de tokens, é necessário considerar os potenciais riscos que diferentes tipos de Token e caminhos de troca podem trazer.
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, executar chamadas externas.
Utilize um bloqueio de reentrada ou outro mecanismo de prevenção de reentrada para proteger funções críticas.
Realizar auditorias de segurança regularmente para identificar e corrigir vulnerabilidades potenciais em tempo hábil.
Considere introduzir limites de montante de transação ou limites de frequência de transação para reduzir o impacto de ataques potenciais.
Ao adotar essas medidas, o projeto pode aumentar significativamente a segurança dos contratos e reduzir o risco de ataques. No ecossistema Web3, a segurança deve ser sempre a principal preocupação.