No dia 2 de fevereiro de 2023 à tarde, os contratos OrionProtocol na Ethereum e na Binance Smart Chain foram alvo de um ataque de reentrada devido a uma vulnerabilidade. O atacante lucrou 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart Chain, totalizando cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou os preparativos necessários. Em seguida, o atacante utilizou a funcionalidade de swap de um DEX para fazer um empréstimo e invocou o método swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante, o que preparou o terreno para um ataque de callback subsequente.
Ao executar o método swapThroughOrionPool, devido à lógica de callback contida no contrato Token do atacante, uma ataque de reentrada foi acionado durante o processo de transferência. O atacante utilizou o método Token.Transfer para chamar repetidamente a função ExchangeWithAtomic.depositAsset, fazendo com que o valor do depósito se acumulasse continuamente. No final, o atacante obteve lucro através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante veio de uma hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos no ataque, 657,5 ainda estão 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 está na função doSwapThroughOrionPool. Esta função apresenta uma falha lógica ao executar a operação _doSwapTokens. Especificamente, o contrato atualiza a variável curBalance apenas após a conclusão da transferência, o que oferece uma oportunidade para o atacante. O atacante consegue, através da adição de lógica de callback na função transfer do Token personalizado, chamar repetidamente a função depositAsset, resultando em uma atualização incorreta do curBalance. No final, após devolver o empréstimo relâmpago, o atacante conseguiu retirar fundos em excesso.
Sugestões de Prevenção
Para evitar ataques semelhantes, a equipe do projeto deve prestar atenção aos seguintes pontos ao projetar o contrato:
Ao implementar a funcionalidade de troca de moedas digitais, é necessário considerar de forma abrangente os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Seguir rigorosamente as normas de codificação "Checks-Effects-Interactions", ou seja, primeiro realizar a verificação de estado, em seguida atualizar o estado do contrato e, por fim, executar chamadas externas.
Implementar um bloqueio de reentrada em operações críticas para prevenir a ocorrência de ataques de reentrada.
Realizar auditorias de código regularmente para identificar e corrigir rapidamente potenciais vulnerabilidades de segurança.
Considerar a introdução de um mecanismo de levantamento de fundos com atraso, para proporcionar a oportunidade de intervenção manual em transações anómalas.
Ao adotar essas medidas, é possível aumentar significativamente a segurança dos contratos inteligentes e reduzir o risco de ataques. No ecossistema Web3, a segurança é sempre a principal consideração.
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.
16 Curtidas
Recompensa
16
8
Compartilhar
Comentário
0/400
LidoStakeAddict
· 07-17 03:22
Mais um porco pertence a isso.
Ver originalResponder0
NervousFingers
· 07-14 05:42
Outra vez um projeto foi alvo de Cupões de Recorte...
Ver originalResponder0
TokenUnlocker
· 07-14 04:00
Mais uma vulnerabilidade de reentrada não bloqueada?
Ver originalResponder0
GasSavingMaster
· 07-14 03:59
A tecnologia atual também não é grande coisa.
Ver originalResponder0
PanicSeller69
· 07-14 03:58
Outra explosão, meu Deus!
Ver originalResponder0
PortfolioAlert
· 07-14 03:37
Mais uma vítima de vulnerabilidades em contratos...
Ver originalResponder0
SerumSqueezer
· 07-14 03:36
Quantas vezes é esta que está cheio de buracos e vazamentos?
Ver originalResponder0
ForkTongue
· 07-14 03:33
Mais um ataque de reentrada, esses projetos ainda não aprenderam a lição?
OrionProtocol sofreu um ataque de reentrada, com 2,9 milhões de dólares em fundos roubados.
Análise do ataque de reentrada ao OrionProtocol
No dia 2 de fevereiro de 2023 à tarde, os contratos OrionProtocol na Ethereum e na Binance Smart Chain foram alvo de um ataque de reentrada devido a uma vulnerabilidade. O atacante lucrou 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart Chain, totalizando cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou os preparativos necessários. Em seguida, o atacante utilizou a funcionalidade de swap de um DEX para fazer um empréstimo e invocou o método swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante, o que preparou o terreno para um ataque de callback subsequente.
Ao executar o método swapThroughOrionPool, devido à lógica de callback contida no contrato Token do atacante, uma ataque de reentrada foi acionado durante o processo de transferência. O atacante utilizou o método Token.Transfer para chamar repetidamente a função ExchangeWithAtomic.depositAsset, fazendo com que o valor do depósito se acumulasse continuamente. No final, o atacante obteve lucro através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante veio de uma hot wallet de uma plataforma de negociação. Dos 1.651 ETH obtidos no ataque, 657,5 ainda estão 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 está na função doSwapThroughOrionPool. Esta função apresenta uma falha lógica ao executar a operação _doSwapTokens. Especificamente, o contrato atualiza a variável curBalance apenas após a conclusão da transferência, o que oferece uma oportunidade para o atacante. O atacante consegue, através da adição de lógica de callback na função transfer do Token personalizado, chamar repetidamente a função depositAsset, resultando em uma atualização incorreta do curBalance. No final, após devolver o empréstimo relâmpago, o atacante conseguiu retirar fundos em excesso.
Sugestões de Prevenção
Para evitar ataques semelhantes, a equipe do projeto deve prestar atenção aos seguintes pontos ao projetar o contrato:
Ao implementar a funcionalidade de troca de moedas digitais, é necessário considerar de forma abrangente os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Seguir rigorosamente as normas de codificação "Checks-Effects-Interactions", ou seja, primeiro realizar a verificação de estado, em seguida atualizar o estado do contrato e, por fim, executar chamadas externas.
Implementar um bloqueio de reentrada em operações críticas para prevenir a ocorrência de ataques de reentrada.
Realizar auditorias de código regularmente para identificar e corrigir rapidamente potenciais vulnerabilidades de segurança.
Considerar a introdução de um mecanismo de levantamento de fundos com atraso, para proporcionar a oportunidade de intervenção manual em transações anómalas.
Ao adotar essas medidas, é possível aumentar significativamente a segurança dos contratos inteligentes e reduzir o risco de ataques. No ecossistema Web3, a segurança é sempre a principal consideração.