Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, às 15:40:20 UTC, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT da rede Ethereum e 191.606 BUSD da Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do processo de ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram uma série de preparações. Em seguida, os atacantes tomaram emprestados fundos através da função swap de um DEX e chamaram 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 pelos atacantes, o que preparou o terreno para um ataque de callback subsequente.
Durante o processo de troca, devido à lógica de callback incluída no contrato Token do atacante, cada transferência desencadeia uma chamada de reentrada para o método ExchangeWithAtomic.depositAsset. Isso resulta na acumulação múltipla do valor do depósito, permitindo que o atacante obtenha lucros excessivos através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante veio da carteira quente de uma plataforma de negociação. Após o sucesso do ataque, dos 1.651 ETH obtidos, 657,5 ETH permanecem na carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O núcleo da vulnerabilidade reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance apenas após a execução da transferência de tokens, o que proporciona uma oportunidade para o atacante explorar um ataque de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, faz com que curBalance seja atualizado incorretamente, permitindo a retirada de fundos adicionais mesmo após o reembolso do empréstimo relâmpago.
Reproduzindo o ataque
Os pesquisadores forneceram parte do código POC, simulando o processo de ataque. Os resultados dos testes mostraram que o atacante conseguiu explorar uma vulnerabilidade do contrato para obter USDT adicional.
Sugestões de Segurança
Para este tipo de ataque, recomenda-se que a equipe do projeto:
Ao implementar a funcionalidade de troca de tokens em um contrato, é necessário considerar os riscos de segurança que podem ser trazidos por vários tipos de tokens e caminhos de troca.
Seguir rigorosamente o padrão de codificação "Checks-Effects-Interactions", ou seja, primeiro realizar a verificação de condições, em seguida atualizar as variáveis de estado e, por fim, executar chamadas externas.
Use bloqueios de reentrada ou mecanismos semelhantes antes de atualizar variáveis de estado críticas para evitar ataques de reentrada.
Realizar auditorias de código e testes de segurança regularmente, identificando e corrigindo prontamente vulnerabilidades potenciais.
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As partes do projeto devem continuar a prestar atenção às questões de segurança, adotando medidas de proteção abrangentes para garantir a segurança dos ativos dos usuários e o desenvolvimento estável a longo prazo do projeto.
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.
20 Curtidas
Recompensa
20
10
Repostar
Compartilhar
Comentário
0/400
ColdWalletGuardian
· 08-14 12:21
As vulnerabilidades são difíceis de evitar.
Ver originalResponder0
NestedFox
· 08-14 11:36
Então isso explodiu, hein?
Ver originalResponder0
ImpermanentLossEnjoyer
· 08-14 11:01
Perda impermanente的日常啦
Ver originalResponder0
rug_connoisseur
· 08-12 04:38
Mais um contrato inteligente falhou.
Ver originalResponder0
SchroedingerGas
· 08-11 18:57
de novo foi arrancado quem
Ver originalResponder0
DAOTruant
· 08-11 18:57
Mais um contrato foi roubado.
Ver originalResponder0
MainnetDelayedAgain
· 08-11 18:56
Mais um caso de entrada na base de dados estatística, realmente não deveria.
Ver originalResponder0
GateUser-5854de8b
· 08-11 18:51
Mais uma vez, o contrato foi roubado...
Ver originalResponder0
MEV_Whisperer
· 08-11 18:51
Outra vez reentrada, escapuliu.
Ver originalResponder0
SignatureVerifier
· 08-11 18:37
*suspiro* mais uma falha de reentrância de livro didático. estatisticamente inevitável com verificações de validação insuficientes. vi isso a acontecer, para ser honesto.
OrionProtocol sofreu um ataque de reentrância, resultando em uma perda de cerca de 2,9 milhões de dólares.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, às 15:40:20 UTC, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT da rede Ethereum e 191.606 BUSD da Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do processo de ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram uma série de preparações. Em seguida, os atacantes tomaram emprestados fundos através da função swap de um DEX e chamaram 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 pelos atacantes, o que preparou o terreno para um ataque de callback subsequente.
Durante o processo de troca, devido à lógica de callback incluída no contrato Token do atacante, cada transferência desencadeia uma chamada de reentrada para o método ExchangeWithAtomic.depositAsset. Isso resulta na acumulação múltipla do valor do depósito, permitindo que o atacante obtenha lucros excessivos através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante veio da carteira quente de uma plataforma de negociação. Após o sucesso do ataque, dos 1.651 ETH obtidos, 657,5 ETH permanecem na carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O núcleo da vulnerabilidade reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance apenas após a execução da transferência de tokens, o que proporciona uma oportunidade para o atacante explorar um ataque de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, faz com que curBalance seja atualizado incorretamente, permitindo a retirada de fundos adicionais mesmo após o reembolso do empréstimo relâmpago.
Reproduzindo o ataque
Os pesquisadores forneceram parte do código POC, simulando o processo de ataque. Os resultados dos testes mostraram que o atacante conseguiu explorar uma vulnerabilidade do contrato para obter USDT adicional.
Sugestões de Segurança
Para este tipo de ataque, recomenda-se que a equipe do projeto:
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As partes do projeto devem continuar a prestar atenção às questões de segurança, adotando medidas de proteção abrangentes para garantir a segurança dos ativos dos usuários e o desenvolvimento estável a longo prazo do projeto.