Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, os contratos OrionProtocol na Ethereum e na Binance Smart Chain sofreram um ataque de reentrada devido a uma vulnerabilidade. O atacante conseguiu roubar cerca de 2,9 milhões de dólares em fundos, incluindo 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart.
Análise do Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram operações de transferência e autorização desse Token, preparando-se para os ataques subsequentes. Em seguida, os atacantes utilizaram a funcionalidade de swap do Uniswap V2 para realizar empréstimos e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens.
Caminho de troca definido como: USDC → Token personalizado do atacante → USDT
Durante o processo de troca, devido à funcionalidade de callback incluída no contrato Token personalizado do atacante, é possível chamar novamente o método ExchangeWithAtomic.depositAsset durante a transferência de Token. Esse ataque de reentrada leva à contagem duplicada do valor do depósito, permitindo finalmente que o atacante retire fundos que excedem o valor realmente depositado.
Fluxo de Fondos
A origem dos fundos iniciais do atacante provém de uma carteira quente de uma grande plataforma de troca. Dos 1.651 ETH obtidos no ataque, 657,5 ETH 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 surge na função doSwapThroughOrionPool. Esta função atualiza a variável curBalance após a execução da transferência de tokens, criando condições para ataques de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, consegue chamar repetidamente a função depositAsset antes da atualização de curBalance, resultando em um erro no cálculo do saldo.
Sugestões de prevenção
Para prevenir ataques semelhantes, a equipe do projeto deve atentar para os seguintes pontos:
Implementar um controle de acesso rigoroso e gestão de permissões.
Escrever contratos inteligentes seguindo o padrão "Checks-Effects-Interactions".
Usar um lock de reentrada ou mecanismo semelhante para prevenir ataques de reentrada.
Para as funções que envolvem a troca de tokens, é necessário considerar os riscos de segurança que diferentes tipos de tokens e caminhos de troca podem trazer.
Realizar uma auditoria de segurança abrangente, incluindo análise estática, testes dinâmicos e revisão manual.
Monitorizar continuamente a atividade dos contratos e estabelecer um mecanismo de resposta rápida.
Este incidente reitera que a segurança deve ser sempre a principal preocupação ao desenvolver e implementar contratos inteligentes. As equipes de projeto precisam constantemente melhorar as 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.
12 Curtidas
Recompensa
12
7
Repostar
Compartilhar
Comentário
0/400
CryptoCrazyGF
· 5h atrás
Outra vez, outra vez, outra vez foram roubadas moedas. Não é à toa que é um Bear Market!
Ver originalResponder0
FUD_Vaccinated
· 08-14 03:57
Outra vez a fazer as pessoas de parvas.
Ver originalResponder0
GateUser-aa7df71e
· 08-13 22:35
Outra idiota lâmina, veja minha análise no mini curso atrás de mim.
Ver originalResponder0
CoinBasedThinking
· 08-13 22:34
É novamente o velho truque da reentrada.
Ver originalResponder0
HalfBuddhaMoney
· 08-13 22:29
Mais um clássico de falha de contratos inteligentes, os idiotas não vão conseguir proteger seu dinheiro.
Ver originalResponder0
NewPumpamentals
· 08-13 22:26
Mais um ataque de reentrada. Quando é que isto acaba?
OrionProtocol sofreu um ataque de reentrada de 2,9 milhões de dólares - Análise do roubo de fundos e recomendações de prevenção.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, os contratos OrionProtocol na Ethereum e na Binance Smart Chain sofreram um ataque de reentrada devido a uma vulnerabilidade. O atacante conseguiu roubar cerca de 2,9 milhões de dólares em fundos, incluindo 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart.
Análise do Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram operações de transferência e autorização desse Token, preparando-se para os ataques subsequentes. Em seguida, os atacantes utilizaram a funcionalidade de swap do Uniswap V2 para realizar empréstimos e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens.
Caminho de troca definido como: USDC → Token personalizado do atacante → USDT
Durante o processo de troca, devido à funcionalidade de callback incluída no contrato Token personalizado do atacante, é possível chamar novamente o método ExchangeWithAtomic.depositAsset durante a transferência de Token. Esse ataque de reentrada leva à contagem duplicada do valor do depósito, permitindo finalmente que o atacante retire fundos que excedem o valor realmente depositado.
Fluxo de Fondos
A origem dos fundos iniciais do atacante provém de uma carteira quente de uma grande plataforma de troca. Dos 1.651 ETH obtidos no ataque, 657,5 ETH 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 surge na função doSwapThroughOrionPool. Esta função atualiza a variável curBalance após a execução da transferência de tokens, criando condições para ataques de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, consegue chamar repetidamente a função depositAsset antes da atualização de curBalance, resultando em um erro no cálculo do saldo.
Sugestões de prevenção
Para prevenir ataques semelhantes, a equipe do projeto deve atentar para os seguintes pontos:
Este incidente reitera que a segurança deve ser sempre a principal preocupação ao desenvolver e implementar contratos inteligentes. As equipes de projeto precisam constantemente melhorar as medidas de segurança para proteger os ativos dos usuários e manter a reputação da plataforma.