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ú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.
6 gostos
Recompensa
6
5
Partilhar
Comentar
0/400
ZenMiner
· 12h atrás
A segurança do contrato ainda depende da auditoria.
Ver originalResponder0
DAOplomacy
· 12h atrás
mais uma falha de governança sub-ótima smh...
Ver originalResponder0
GweiTooHigh
· 12h atrás
又一个 fazer as pessoas de parvas 的
Ver originalResponder0
DeFiAlchemist
· 12h atrás
*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.