Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, às 15:40:20 UTC, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro implementou um contrato de Token personalizado e realizou os preparativos necessários. Em seguida, o atacante tomou emprestado fundos através da função swap de um determinado DEX, chamando o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para realizar a troca de tokens. O caminho de troca inclui o endereço do contrato Token criado pelo atacante.
Durante o processo de troca, o atacante utiliza a funcionalidade de callback do contrato Token personalizado, chamando repetidamente o método ExchangeWithAtomic.depositAsset, levando a um acúmulo contínuo do montante depositado. No final, o atacante completa o lucro através da operação de retirada.
Fluxo de Capital
Os fundos iniciais do atacante vieram da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos com o ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
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, violando o padrão "Checks-Effects-Interactions" (. Um atacante pode adicionar lógica de callback na função transfer do Token personalizado, levando à atualização incorreta de curBalance e, assim, permitindo um ataque de reentrada.
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
Repetição de Ataque
Os pesquisadores forneceram parte do código POC, demonstrando como explorar a vulnerabilidade para realizar ataques. Os resultados dos testes mostraram que os atacantes conseguiram obter USDT adicional.
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
![Análise de Ataque de Reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
![Análise de Ataques de Reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
Recomendações de Segurança
A equipe do projeto, ao implementar a funcionalidade de troca de tokens, deve considerar os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Seguir rigorosamente a norma de codificação "verificação-efetivação-interação", garantindo que a atualização das variáveis de estado seja concluída antes das chamadas externas.
Implementar mecanismos de segurança como bloqueios de reentrância para prevenir ataques de reentrância.
Realizar auditorias de código e testes de segurança regularmente, para identificar e corrigir potenciais vulnerabilidades a tempo.
Considerar a introdução de um mecanismo de limite, controlando o valor máximo de uma única transação, para reduzir perdas potenciais.
Este evento lembra-nos mais uma vez que devemos estar sempre atentos ao desenvolver contratos inteligentes e dar importância à segurança. Apenas ao aprimorar continuamente as medidas de segurança podemos garantir um desenvolvimento saudável do ecossistema Web3.
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.
OrionProtocol sofreu um ataque de reentrada, perda de 2,9 milhões de dólares.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023, às 15:40:20 UTC, o OrionProtocol na Ethereum e na Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato. O atacante lucrou 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na Binance Smart Chain, totalizando uma perda de cerca de 2,9 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro implementou um contrato de Token personalizado e realizou os preparativos necessários. Em seguida, o atacante tomou emprestado fundos através da função swap de um determinado DEX, chamando o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para realizar a troca de tokens. O caminho de troca inclui o endereço do contrato Token criado pelo atacante.
Durante o processo de troca, o atacante utiliza a funcionalidade de callback do contrato Token personalizado, chamando repetidamente o método ExchangeWithAtomic.depositAsset, levando a um acúmulo contínuo do montante depositado. No final, o atacante completa o lucro através da operação de retirada.
Fluxo de Capital
Os fundos iniciais do atacante vieram da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos com o ataque, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
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, violando o padrão "Checks-Effects-Interactions" (. Um atacante pode adicionar lógica de callback na função transfer do Token personalizado, levando à atualização incorreta de curBalance e, assim, permitindo um ataque de reentrada.
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
Repetição de Ataque
Os pesquisadores forneceram parte do código POC, demonstrando como explorar a vulnerabilidade para realizar ataques. Os resultados dos testes mostraram que os atacantes conseguiram obter USDT adicional.
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
![Análise de Ataque de Reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
![Análise de Ataques de Reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
![Análise de ataque de reentrada do OrionProtocol com PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
Recomendações de Segurança
A equipe do projeto, ao implementar a funcionalidade de troca de tokens, deve considerar os riscos de segurança que diferentes tipos de Token e caminhos de troca podem trazer.
Seguir rigorosamente a norma de codificação "verificação-efetivação-interação", garantindo que a atualização das variáveis de estado seja concluída antes das chamadas externas.
Implementar mecanismos de segurança como bloqueios de reentrância para prevenir ataques de reentrância.
Realizar auditorias de código e testes de segurança regularmente, para identificar e corrigir potenciais vulnerabilidades a tempo.
Considerar a introdução de um mecanismo de limite, controlando o valor máximo de uma única transação, para reduzir perdas potenciais.
Este evento lembra-nos mais uma vez que devemos estar sempre atentos ao desenvolver contratos inteligentes e dar importância à segurança. Apenas ao aprimorar continuamente as medidas de segurança podemos garantir um desenvolvimento saudável do ecossistema Web3.