Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato, resultando em uma perda total de cerca de 2,9 milhões de dólares em ativos criptográficos, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do processo de ataque
Os atacantes primeiro implementaram um contrato de Token personalizado e realizaram as transferências e autorizações necessárias para preparar o ataque subsequente. Em seguida, os atacantes tomaram emprestado fundos através da funcionalidade de swap de um DEX e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca foi definido como [USDC, Token do atacante, USDT].
Durante o processo de troca, o contrato Token do atacante utilizou sua função transfer para chamar o método ExchangeWithAtomic.depositAsset, realizando um ataque de reentrada. Isso resultou na contagem duplicada do valor depositado, e o atacante posteriormente obteve lucros excessivos através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante vem 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 foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
A vulnerabilidade central reside nas funções doSwapThroughOrionPool e _doSwapTokens. O problema chave é que o contrato atualiza a variável curBalance apenas após a execução da operação de transferência, o que cria condições para um ataque de reentrada. O atacante adiciona lógica de callback na função transfer do Token personalizado, fazendo com que a função depositAsset seja chamada repetidamente, resultando em uma atualização incorreta de curBalance.
Sugestões de prevenção
Seguir o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), garantindo que a atualização das variáveis de estado ocorra antes das chamadas externas.
Implementar um lock de reentrada para evitar que a função seja chamada novamente durante a execução.
Considerar de forma abrangente os riscos de segurança que podem ser trazidos por vários tipos de Tokens e caminhos de troca.
Reforçar as restrições e monitorização de chamadas externas, especialmente nas operações que envolvem transferências de fundos.
Realizar auditorias de segurança regulares para identificar e corrigir potenciais vulnerabilidades a tempo.
Este evento enfatiza novamente a importância de seguir rigorosamente as normas de codificação de segurança ao desenvolver contratos inteligentes. As equipes de projeto devem continuar a se concentrar na segurança dos contratos, adotando múltiplas medidas de proteção para minimizar o risco de ataques.
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.
17 Curtidas
Recompensa
17
6
Repostar
Compartilhar
Comentário
0/400
New_Ser_Ngmi
· 07-13 12:19
Outra vez os hackers estão a usar cupões de recorte.
Ver originalResponder0
DegenMcsleepless
· 07-13 03:32
Mais um projeto faliu~
Ver originalResponder0
SatoshiSherpa
· 07-12 13:26
Outra vez a adquirir contratos inteligentes, tsk tsk
OrionProtocol sofreu um ataque de reentrada, resultando na perda de 2,9 milhões de dólares em encriptação.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato, resultando em uma perda total de cerca de 2,9 milhões de dólares em ativos criptográficos, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do processo de ataque
Os atacantes primeiro implementaram um contrato de Token personalizado e realizaram as transferências e autorizações necessárias para preparar o ataque subsequente. Em seguida, os atacantes tomaram emprestado fundos através da funcionalidade de swap de um DEX e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca foi definido como [USDC, Token do atacante, USDT].
Durante o processo de troca, o contrato Token do atacante utilizou sua função transfer para chamar o método ExchangeWithAtomic.depositAsset, realizando um ataque de reentrada. Isso resultou na contagem duplicada do valor depositado, e o atacante posteriormente obteve lucros excessivos através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante vem 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 foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
A vulnerabilidade central reside nas funções doSwapThroughOrionPool e _doSwapTokens. O problema chave é que o contrato atualiza a variável curBalance apenas após a execução da operação de transferência, o que cria condições para um ataque de reentrada. O atacante adiciona lógica de callback na função transfer do Token personalizado, fazendo com que a função depositAsset seja chamada repetidamente, resultando em uma atualização incorreta de curBalance.
Sugestões de prevenção
Seguir o padrão "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), garantindo que a atualização das variáveis de estado ocorra antes das chamadas externas.
Implementar um lock de reentrada para evitar que a função seja chamada novamente durante a execução.
Considerar de forma abrangente os riscos de segurança que podem ser trazidos por vários tipos de Tokens e caminhos de troca.
Reforçar as restrições e monitorização de chamadas externas, especialmente nas operações que envolvem transferências de fundos.
Realizar auditorias de segurança regulares para identificar e corrigir potenciais vulnerabilidades a tempo.
Este evento enfatiza novamente a importância de seguir rigorosamente as normas de codificação de segurança ao desenvolver contratos inteligentes. As equipes de projeto devem continuar a se concentrar na segurança dos contratos, adotando múltiplas medidas de proteção para minimizar o risco de ataques.