Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o projeto OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma falha de 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 (Ethereum) e 191.606 BUSD (BSC).
Análise do Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram as operações de transferência e autorização correspondentes, preparando-se para o ataque subsequente. Em seguida, os atacantes pegaram fundos emprestados através da funcionalidade de swap de uma troca descentralizada e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca foi definido como USDC → Token personalizado do atacante → USDT.
Durante o processo de troca, o atacante utiliza a função de callback no contrato Token personalizado para chamar repetidamente o método ExchangeWithAtomic.depositAsset, levando à acumulação do montante depositado. No final, o atacante completou o lucro através da operação de retirada.
Fluxo de Capital
A fonte inicial de fundos do atacante vem de uma carteira quente de uma grande plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido por meio de ferramentas de mistura.
Análise de Vulnerabilidades
O problema central está na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função atualiza a variável curBalance após a execução da transferência de tokens, criando condições para um ataque de reentrada. O atacante adiciona lógica de callback na função transfer do Token personalizado, chamando repetidamente a função depositAsset, resultando na atualização incorreta de curBalance. No final, após reembolsar o empréstimo relâmpago, o atacante retirou fundos excedentes através da função withdraw.
Sugestões de prevenção
O desenvolvimento de contratos deve seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), evitando chamadas externas antes da atualização do estado.
Ao implementar a funcionalidade de troca de tokens, é necessário considerar os riscos de segurança que diferentes tipos de tokens e caminhos de troca podem trazer.
Adicionar mecanismos de segurança, como locks de reentrada, para prevenir ataques de reentrada.
Implementar controles de acesso e medidas de limite para operações críticas.
Realizar uma auditoria de segurança completa, com especial atenção às funções centrais relacionadas com a operação de fundos.
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem manter um foco contínuo na segurança dos contratos, realizando auditorias de código e correções de vulnerabilidades regularmente, para garantir a segurança dos ativos dos usuários. Ao mesmo tempo, os usuários devem permanecer vigilantes ao participar de novos projetos, prestando atenção à situação de segurança do projeto e aos relatórios de auditoria.
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.
13 Curtidas
Recompensa
13
6
Repostar
Compartilhar
Comentário
0/400
ShamedApeSeller
· 07-24 12:02
Mais um friozinho.
Ver originalResponder0
CoffeeOnChain
· 07-24 09:46
Não fazem auditoria dos contratos? Merecem ser explorados.
Ver originalResponder0
FlippedSignal
· 07-23 09:34
Outra vez fui hackeado.
Ver originalResponder0
SchrodingersFOMO
· 07-23 09:26
Ainda não acabaste de negociar a moeda e já a moeda explodiu?
Ver originalResponder0
ETHReserveBank
· 07-23 09:25
Mais uma aula online com o mestre do 0day
Ver originalResponder0
FlatlineTrader
· 07-23 09:15
Ainda não sabe como prevenir ataques de reentrada? Que fraco!
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 projeto OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma falha de 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 (Ethereum) e 191.606 BUSD (BSC).
Análise do Processo de Ataque
Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram as operações de transferência e autorização correspondentes, preparando-se para o ataque subsequente. Em seguida, os atacantes pegaram fundos emprestados através da funcionalidade de swap de uma troca descentralizada e chamaram o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca foi definido como USDC → Token personalizado do atacante → USDT.
Durante o processo de troca, o atacante utiliza a função de callback no contrato Token personalizado para chamar repetidamente o método ExchangeWithAtomic.depositAsset, levando à acumulação do montante depositado. No final, o atacante completou o lucro através da operação de retirada.
Fluxo de Capital
A fonte inicial de fundos do atacante vem de uma carteira quente de uma grande plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido por meio de ferramentas de mistura.
Análise de Vulnerabilidades
O problema central está na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função atualiza a variável curBalance após a execução da transferência de tokens, criando condições para um ataque de reentrada. O atacante adiciona lógica de callback na função transfer do Token personalizado, chamando repetidamente a função depositAsset, resultando na atualização incorreta de curBalance. No final, após reembolsar o empréstimo relâmpago, o atacante retirou fundos excedentes através da função withdraw.
Sugestões de prevenção
O desenvolvimento de contratos deve seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), evitando chamadas externas antes da atualização do estado.
Ao implementar a funcionalidade de troca de tokens, é necessário considerar os riscos de segurança que diferentes tipos de tokens e caminhos de troca podem trazer.
Adicionar mecanismos de segurança, como locks de reentrada, para prevenir ataques de reentrada.
Implementar controles de acesso e medidas de limite para operações críticas.
Realizar uma auditoria de segurança completa, com especial atenção às funções centrais relacionadas com a operação de fundos.
Este evento destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem manter um foco contínuo na segurança dos contratos, realizando auditorias de código e correções de vulnerabilidades regularmente, para garantir a segurança dos ativos dos usuários. Ao mesmo tempo, os usuários devem permanecer vigilantes ao participar de novos projetos, prestando atenção à situação de segurança do projeto e aos relatórios de auditoria.