Análise do incidente de ataque de reentrada ao OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o projeto OrionProtocol na Ethereum e na Binance Smart Chain foi alvo de um ataque de reentrada devido a uma falha no contrato. O atacante roubou aproximadamente 2,84 milhões de USDT da cadeia Ethereum e cerca de 190 mil BUSD da Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
Os atacantes primeiro implementaram um contrato de Token personalizado e realizaram uma série de preparações. Em seguida, os atacantes tomaram emprestado fundos através da funcionalidade de swap de um DEX, chamando o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho da troca incluía o endereço do contrato de Token criado pelos atacantes.
Durante o processo de troca, o atacante explorou a funcionalidade de retorno do contrato Token personalizado, chamando repetidamente o método ExchangeWithAtomic.depositAsset, o que resultou na adição múltipla do valor depositado. No final, o atacante obteve lucro através da operação de retirada.
Fluxo de Fundos
De acordo com o rastreamento, os fundos iniciais do atacante vieram de uma carteira quente de uma plataforma de negociação. Dos 1651 ETH obtidos com o ataque, cerca de 657,5 ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
A questão central reside 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, o que cria uma oportunidade de reentrada para o atacante. O atacante, adicionando lógica de callback na função transfer do Token personalizado, chama repetidamente a função depositAsset, resultando em uma atualização incorreta de curBalance.
Os atacantes exploraram esta vulnerabilidade e conseguiram retirar fundos em excesso após a devolução do empréstimo relâmpago.
Reproduzindo o Ataque
Os pesquisadores forneceram parte do código PoC que simula o processo de ataque. O código inclui etapas como a criação de Token personalizado, a criação de um pool de liquidez, a autorização de operações e a execução do ataque. Os resultados dos testes mostram que o ataque foi reproduzido com sucesso, consistente com os resultados da pilha de chamadas do ataque real.
Sugestões de segurança
No design de contratos, é necessário considerar os riscos de segurança que podem surgir de diversos Tokens e caminhos de troca.
Seguir o padrão de codificação "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), ou seja, realizar primeiro a verificação das condições, depois atualizar as variáveis de estado e, por último, interagir com contratos externos.
Deve ter especial cuidado ao lidar com chamadas externas, especialmente em operações que envolvem transferências de fundos.
Realizar auditorias de segurança regularmente para identificar e corrigir vulnerabilidades potenciais.
Implementar um controle de permissões e um mecanismo de limites razoáveis para reduzir as perdas potenciais de um único ataque.
Este evento lembra novamente as equipas de desenvolvimento de projetos Web3 que, ao buscar inovação, devem dar especial atenção à segurança dos contratos inteligentes. Somente construindo infraestruturas mais seguras e fiáveis é que podemos promover o desenvolvimento saudável de toda a indústria.
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.
8 Curtidas
Recompensa
8
8
Compartilhar
Comentário
0/400
ShadowStaker
· 07-08 21:29
mais um dia, mais uma exploração de defi... quando é que os desenvolvedores aprenderão a verificar a reentrância smh
Ver originalResponder0
TokenTherapist
· 07-07 15:54
Mais um que caiu.
Ver originalResponder0
GasWaster
· 07-06 14:26
Outra vez foi roubado.
Ver originalResponder0
SigmaBrain
· 07-05 22:13
Outra vez um ataque de reentrada, a situação está vulnerável.
Ver originalResponder0
ponzi_poet
· 07-05 22:13
E a segurança? Para onde foi?
Ver originalResponder0
GetRichLeek
· 07-05 22:13
Na frente a comer melancia, nem conseguem fazer uma auditoria de contrato, estão a perder muito.
Ver originalResponder0
BearMarketGardener
· 07-05 22:07
O contrato explodiu novamente, ai.
Ver originalResponder0
DaoGovernanceOfficer
· 07-05 22:00
*suspiro* empiricamente falando, 99% desses hacks decorrem de descuidos básicos na gestão de estado...
Análise profunda da perda de 2,9 milhões de dólares devido a um ataque de reentrada ao OrionProtocol
Análise do incidente de ataque de reentrada ao OrionProtocol
No dia 2 de fevereiro de 2023, à tarde, o projeto OrionProtocol na Ethereum e na Binance Smart Chain foi alvo de um ataque de reentrada devido a uma falha no contrato. O atacante roubou aproximadamente 2,84 milhões de USDT da cadeia Ethereum e cerca de 190 mil BUSD da Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
Os atacantes primeiro implementaram um contrato de Token personalizado e realizaram uma série de preparações. Em seguida, os atacantes tomaram emprestado fundos através da funcionalidade de swap de um DEX, chamando o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho da troca incluía o endereço do contrato de Token criado pelos atacantes.
Durante o processo de troca, o atacante explorou a funcionalidade de retorno do contrato Token personalizado, chamando repetidamente o método ExchangeWithAtomic.depositAsset, o que resultou na adição múltipla do valor depositado. No final, o atacante obteve lucro através da operação de retirada.
Fluxo de Fundos
De acordo com o rastreamento, os fundos iniciais do atacante vieram de uma carteira quente de uma plataforma de negociação. Dos 1651 ETH obtidos com o ataque, cerca de 657,5 ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.
Análise de Vulnerabilidades
A questão central reside 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, o que cria uma oportunidade de reentrada para o atacante. O atacante, adicionando lógica de callback na função transfer do Token personalizado, chama repetidamente a função depositAsset, resultando em uma atualização incorreta de curBalance.
Os atacantes exploraram esta vulnerabilidade e conseguiram retirar fundos em excesso após a devolução do empréstimo relâmpago.
Reproduzindo o Ataque
Os pesquisadores forneceram parte do código PoC que simula o processo de ataque. O código inclui etapas como a criação de Token personalizado, a criação de um pool de liquidez, a autorização de operações e a execução do ataque. Os resultados dos testes mostram que o ataque foi reproduzido com sucesso, consistente com os resultados da pilha de chamadas do ataque real.
Sugestões de segurança
No design de contratos, é necessário considerar os riscos de segurança que podem surgir de diversos Tokens e caminhos de troca.
Seguir o padrão de codificação "Verificações-Efeitos-Interações" (Checks-Effects-Interactions), ou seja, realizar primeiro a verificação das condições, depois atualizar as variáveis de estado e, por último, interagir com contratos externos.
Deve ter especial cuidado ao lidar com chamadas externas, especialmente em operações que envolvem transferências de fundos.
Realizar auditorias de segurança regularmente para identificar e corrigir vulnerabilidades potenciais.
Implementar um controle de permissões e um mecanismo de limites razoáveis para reduzir as perdas potenciais de um único ataque.
Este evento lembra novamente as equipas de desenvolvimento de projetos Web3 que, ao buscar inovação, devem dar especial atenção à segurança dos contratos inteligentes. Somente construindo infraestruturas mais seguras e fiáveis é que podemos promover o desenvolvimento saudável de toda a indústria.