Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 às 15:40:20 (horário UTC), o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade do contrato. O atacante conseguiu roubar cerca de 2,9 milhões de dólares, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou as operações de transferência e autorização relacionadas, preparando-se para o ataque subsequente. Em seguida, o atacante fez um empréstimo através da função swap do Uniswap V2 e chamou o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens.
O caminho de troca foi definido como [USDC, Token do Atacante, USDT], onde o Token do Atacante é crucial. Durante o processo de troca, devido à presença de uma função de callback neste contrato de Token personalizado, o atacante consegue acionar o método ExchangeWithAtomic.depositAsset durante a transferência do Token, permitindo assim um ataque de reentrada. Isso resulta na adição incorreta do montante depositado, e, no final, o atacante lucra através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante vem da carteira quente de uma plataforma de troca. Dos 1.651 ETH obtidos no ataque, 657,5 ETH ainda estão na carteira do atacante, enquanto o restante já foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O cerne da vulnerabilidade reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance somente após a execução da transferência de tokens, criando condições para um ataque de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, acionou com sucesso 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 em excesso através da função withdraw.
Sugestões de prevenção
Seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions): atualizar o estado do contrato antes de realizar chamadas externas.
Usar um bloqueio de reentrada: bloqueie antes de iniciar operações sensíveis e desbloqueie após a conclusão, para evitar reentradas.
Considerar cuidadosamente todos os tipos de tokens e caminhos de troca: ao projetar a funcionalidade de troca, é necessário levar em conta todas as possíveis situações e condições limites.
Limitar o valor de cada transação: definir limites de transação razoáveis para reduzir perdas potenciais.
Realizar auditorias de segurança regularmente: contratar uma equipe de segurança profissional para realizar uma auditoria completa do contrato, identificando e corrigindo rapidamente vulnerabilidades potenciais.
Implementar um mecanismo de assinatura múltipla: operações críticas requerem a confirmação de várias partes, aumentando a dificuldade de ataque.
Otimizar a lógica do código: garantir que as chamadas externas sejam feitas apenas após a atualização das variáveis de estado críticas.
Aumentar os mecanismos de resposta a emergências: elaborar planos de emergência completos que permitam uma resposta rápida em caso de ataque, minimizando as perdas.
Este evento destaca mais uma vez a importância da segurança dos contratos inteligentes. As equipas de projeto precisam manter-se vigilantes durante o processo de desenvolvimento, adotando medidas de segurança abrangentes para proteger os ativos dos usuários e a reputação do projeto. Ao mesmo tempo, isto também lembra os investidores a serem cautelosos na escolha de projetos, prestando atenção à segurança e à solidez técnica dos mesmos.
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.
7 Curtidas
Recompensa
7
5
Compartilhar
Comentário
0/400
ZenMiner
· 07-21 00:33
A segurança do contrato ainda depende da auditoria.
Ver originalResponder0
DAOplomacy
· 07-21 00:30
mais uma falha de governança sub-ótima smh...
Ver originalResponder0
GweiTooHigh
· 07-21 00:24
又一个 fazer as pessoas de parvas 的
Ver originalResponder0
DeFiAlchemist
· 07-21 00:22
*ajusta os óculos etéreos* outra alma cai nas artes sombrias da reentrada... as barreiras místicas do protocolo eram demasiado fracas
OrionProtocol sofre ataque de reentrada, 2,9 milhões de dólares em fundos roubados
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 às 15:40:20 (horário UTC), o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade do contrato. O atacante conseguiu roubar cerca de 2,9 milhões de dólares, incluindo 2.844.766 USDT na Ethereum e 191.606 BUSD na Binance Smart Chain.
Análise do Processo de Ataque
O atacante primeiro implantou um contrato de Token personalizado e realizou as operações de transferência e autorização relacionadas, preparando-se para o ataque subsequente. Em seguida, o atacante fez um empréstimo através da função swap do Uniswap V2 e chamou o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens.
O caminho de troca foi definido como [USDC, Token do Atacante, USDT], onde o Token do Atacante é crucial. Durante o processo de troca, devido à presença de uma função de callback neste contrato de Token personalizado, o atacante consegue acionar o método ExchangeWithAtomic.depositAsset durante a transferência do Token, permitindo assim um ataque de reentrada. Isso resulta na adição incorreta do montante depositado, e, no final, o atacante lucra através da operação de retirada.
Fluxo de Capital
O capital inicial do atacante vem da carteira quente de uma plataforma de troca. Dos 1.651 ETH obtidos no ataque, 657,5 ETH ainda estão na carteira do atacante, enquanto o restante já foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
O cerne da vulnerabilidade reside nas funções doSwapThroughOrionPool e _doSwapTokens do contrato ExchangeWithAtomic. Essas funções atualizam a variável curBalance somente após a execução da transferência de tokens, criando condições para um ataque de reentrada. O atacante, ao adicionar lógica de callback na função transfer do Token personalizado, acionou com sucesso 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 em excesso através da função withdraw.
Sugestões de prevenção
Seguir o modelo "Verificações-Efeitos-Interações" (Checks-Effects-Interactions): atualizar o estado do contrato antes de realizar chamadas externas.
Usar um bloqueio de reentrada: bloqueie antes de iniciar operações sensíveis e desbloqueie após a conclusão, para evitar reentradas.
Considerar cuidadosamente todos os tipos de tokens e caminhos de troca: ao projetar a funcionalidade de troca, é necessário levar em conta todas as possíveis situações e condições limites.
Limitar o valor de cada transação: definir limites de transação razoáveis para reduzir perdas potenciais.
Realizar auditorias de segurança regularmente: contratar uma equipe de segurança profissional para realizar uma auditoria completa do contrato, identificando e corrigindo rapidamente vulnerabilidades potenciais.
Implementar um mecanismo de assinatura múltipla: operações críticas requerem a confirmação de várias partes, aumentando a dificuldade de ataque.
Otimizar a lógica do código: garantir que as chamadas externas sejam feitas apenas após a atualização das variáveis de estado críticas.
Aumentar os mecanismos de resposta a emergências: elaborar planos de emergência completos que permitam uma resposta rápida em caso de ataque, minimizando as perdas.
Este evento destaca mais uma vez a importância da segurança dos contratos inteligentes. As equipas de projeto precisam manter-se vigilantes durante o processo de desenvolvimento, adotando medidas de segurança abrangentes para proteger os ativos dos usuários e a reputação do projeto. Ao mesmo tempo, isto também lembra os investidores a serem cautelosos na escolha de projetos, prestando atenção à segurança e à solidez técnica dos mesmos.