OrionProtocol sofre ataque de reentrada resultando em perdas de quase 3 milhões de dólares
No dia 2 de fevereiro de 2023, o contrato OrionProtocol nas redes Ethereum e Binance sofreu um ataque de reentrada devido a uma vulnerabilidade de segurança. O atacante conseguiu roubar 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 BSC.
Análise do processo de ataque
O atacante primeiro implantou um contrato de Token personalizado e fez os preparativos necessários. Em seguida, o atacante tomou emprestado fundos através do método swap do UNI-V2 e chamou o método swapThroughOrionPool do contrato ExchangeWithAtomic para realizar a troca de tokens. O caminho de troca incluía o endereço do contrato Token criado pelo atacante, o que pavimentou o caminho para o ataque de callback subsequente.
Durante o processo de troca, devido à lógica de callback contida no contrato Token do atacante, cada operação de transferência desencadeia uma chamada de reentrada ao método depositAsset do contrato ExchangeWithAtomic. Isso resulta na adição incorreta do montante depositado, permitindo, no final, que o atacante retire fundos que excedem o valor que realmente depositou.
Fonte da vulnerabilidade
O problema central reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance após a execução da transferência de tokens, mas não possuem medidas para prevenir ataques de reentrada. Um atacante aproveita o callback do método transfer do Token personalizado para chamar o método depositAsset, resultando em uma atualização incorreta do curBalance, permitindo a retirada de fundos em excesso após o reembolso do empréstimo relâmpago.
Fluxo de Capital
Os fundos iniciais do atacante vêm da hot wallet de uma plataforma de negociação. Dos 1.651 ETH ganhos com o ataque, 657,5 ETH ainda estão na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve prestar atenção aos seguintes pontos:
Ao implementar a funcionalidade de troca de moeda, é necessário considerar os riscos de segurança que diferentes tipos de Tokens e caminhos de troca podem trazer.
Seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions) ao escrever código de contrato, ou seja, primeiro realizar a verificação das condições, em seguida atualizar as variáveis de estado e, por último, interagir com contratos externos.
Utilizar locks de reentrada ou mecanismos semelhantes em funções críticas para prevenir ataques de reentrada.
Para chamadas externas, especialmente aquelas que envolvem operações de transferência de fundos, deve-se ter cuidado redobrado e considerar o uso do modo de pagamento pull em vez do pagamento push.
Realizar auditorias de segurança regularmente para detectar e corrigir vulnerabilidades potenciais de forma oportuna.
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 deve sempre ser 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.
11 gostos
Recompensa
11
4
Partilhar
Comentar
0/400
TokenTherapist
· 15h atrás
Mais alguém não conseguiu lidar com isso?
Ver originalResponder0
LiquidatorFlash
· 16h atrás
A vulnerabilidade de reentrada é realmente o principal assassino das perdas em Defi...
Ver originalResponder0
0xLuckbox
· 16h atrás
Como é que me roubaram novamente este ano?
Ver originalResponder0
TokenSherpa
· 16h atrás
*suspiro* mais um protocolo a falhar nos testes básicos de reentrância... historicamente falando, isto era evitável
OrionProtocol sofreu um ataque de reentrada, com quase 3 milhões de dólares em ativos roubados.
OrionProtocol sofre ataque de reentrada resultando em perdas de quase 3 milhões de dólares
No dia 2 de fevereiro de 2023, o contrato OrionProtocol nas redes Ethereum e Binance sofreu um ataque de reentrada devido a uma vulnerabilidade de segurança. O atacante conseguiu roubar 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 BSC.
Análise do processo de ataque
O atacante primeiro implantou um contrato de Token personalizado e fez os preparativos necessários. Em seguida, o atacante tomou emprestado fundos através do método swap do UNI-V2 e chamou o método swapThroughOrionPool do contrato ExchangeWithAtomic para realizar a troca de tokens. O caminho de troca incluía o endereço do contrato Token criado pelo atacante, o que pavimentou o caminho para o ataque de callback subsequente.
Durante o processo de troca, devido à lógica de callback contida no contrato Token do atacante, cada operação de transferência desencadeia uma chamada de reentrada ao método depositAsset do contrato ExchangeWithAtomic. Isso resulta na adição incorreta do montante depositado, permitindo, no final, que o atacante retire fundos que excedem o valor que realmente depositou.
Fonte da vulnerabilidade
O problema central reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance após a execução da transferência de tokens, mas não possuem medidas para prevenir ataques de reentrada. Um atacante aproveita o callback do método transfer do Token personalizado para chamar o método depositAsset, resultando em uma atualização incorreta do curBalance, permitindo a retirada de fundos em excesso após o reembolso do empréstimo relâmpago.
Fluxo de Capital
Os fundos iniciais do atacante vêm da hot wallet de uma plataforma de negociação. Dos 1.651 ETH ganhos com o ataque, 657,5 ETH ainda estão na carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Sugestões de segurança
Para evitar ataques semelhantes, a equipe do projeto deve prestar atenção aos seguintes pontos:
Ao implementar a funcionalidade de troca de moeda, é necessário considerar os riscos de segurança que diferentes tipos de Tokens e caminhos de troca podem trazer.
Seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions) ao escrever código de contrato, ou seja, primeiro realizar a verificação das condições, em seguida atualizar as variáveis de estado e, por último, interagir com contratos externos.
Utilizar locks de reentrada ou mecanismos semelhantes em funções críticas para prevenir ataques de reentrada.
Para chamadas externas, especialmente aquelas que envolvem operações de transferência de fundos, deve-se ter cuidado redobrado e considerar o uso do modo de pagamento pull em vez do pagamento push.
Realizar auditorias de segurança regularmente para detectar e corrigir vulnerabilidades potenciais de forma oportuna.
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 deve sempre ser a principal preocupação.