Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 a las 15:40:20 UTC, OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato. El atacante obtuvo ganancias de 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart, con una pérdida total de aproximadamente 2.9 millones de dólares.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y llevó a cabo la preparación necesaria. Luego, el atacante tomó prestados fondos a través de la función de swap de un DEX, llamando al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio incluye la dirección del contrato Token creado por el atacante.
Durante el proceso de intercambio, un atacante utiliza la función de callback del contrato Token personalizado para llamar repetidamente al método ExchangeWithAtomic.depositAsset, lo que provoca que el monto del depósito siga acumulándose. Finalmente, el atacante completa su ganancia a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos por el ataque, 657.5 ETH aún permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de un servicio de mezcla.
Análisis de vulnerabilidades
El problema central radica en las funciones doSwapThroughOrionPool y _doSwapTokens del contrato ExchangeWithAtomic. Estas funciones actualizan la variable curBalance después de realizar la transferencia de tokens, violando el patrón "Checks-Effects-Interactions"(Checks-Effects-Interactions). Los atacantes logran una ataque de reentrada al añadir lógica de callback en la función transfer de un Token personalizado, lo que provoca una actualización incorrecta de curBalance.
Reproducción del ataque
Los investigadores proporcionaron parte del código POC que demuestra cómo aprovechar esta vulnerabilidad para realizar ataques. Los resultados de las pruebas mostraron que los atacantes lograron obtener USDT adicional.
Sugerencias de seguridad
Al implementar la función de intercambio de tokens, el equipo del proyecto debe considerar los riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y las posibles rutas de intercambio.
Seguir estrictamente la norma de codificación "verificación-efectividad-interacción" para asegurar que la actualización de las variables de estado se complete antes de la llamada externa.
Implementar mecanismos de seguridad como bloqueos de reentrada para prevenir ataques de reentrada.
Realizar auditorías de código y pruebas de seguridad de manera regular para detectar y corregir vulnerabilidades potenciales a tiempo.
Considerar la introducción de un mecanismo de límite para controlar el monto máximo de una sola transacción y reducir las pérdidas potenciales.
Este incidente nos recuerda una vez más que debemos mantenernos alerta en el desarrollo de contratos inteligentes y dar importancia a la seguridad. Solo al mejorar continuamente las medidas de seguridad podemos proporcionar una fuerte garantía para el desarrollo saludable del ecosistema Web3.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
13 me gusta
Recompensa
13
7
Republicar
Compartir
Comentar
0/400
LadderToolGuy
· hace2h
La seguridad de los contratos es muy importante.
Ver originalesResponder0
GreenCandleCollector
· hace7h
Otra cabeza de tontos ha sido eliminada
Ver originalesResponder0
LowCapGemHunter
· hace12h
El equipo detrás del proyecto fue demasiado descuidado.
OrionProtocol sufrió un ataque de reingreso, con pérdidas de 2.9 millones de dólares.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 a las 15:40:20 UTC, OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato. El atacante obtuvo ganancias de 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart, con una pérdida total de aproximadamente 2.9 millones de dólares.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y llevó a cabo la preparación necesaria. Luego, el atacante tomó prestados fondos a través de la función de swap de un DEX, llamando al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio incluye la dirección del contrato Token creado por el atacante.
Durante el proceso de intercambio, un atacante utiliza la función de callback del contrato Token personalizado para llamar repetidamente al método ExchangeWithAtomic.depositAsset, lo que provoca que el monto del depósito siga acumulándose. Finalmente, el atacante completa su ganancia a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos por el ataque, 657.5 ETH aún permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de un servicio de mezcla.
Análisis de vulnerabilidades
El problema central radica en las funciones doSwapThroughOrionPool y _doSwapTokens del contrato ExchangeWithAtomic. Estas funciones actualizan la variable curBalance después de realizar la transferencia de tokens, violando el patrón "Checks-Effects-Interactions"(Checks-Effects-Interactions). Los atacantes logran una ataque de reentrada al añadir lógica de callback en la función transfer de un Token personalizado, lo que provoca una actualización incorrecta de curBalance.
Reproducción del ataque
Los investigadores proporcionaron parte del código POC que demuestra cómo aprovechar esta vulnerabilidad para realizar ataques. Los resultados de las pruebas mostraron que los atacantes lograron obtener USDT adicional.
Sugerencias de seguridad
Al implementar la función de intercambio de tokens, el equipo del proyecto debe considerar los riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y las posibles rutas de intercambio.
Seguir estrictamente la norma de codificación "verificación-efectividad-interacción" para asegurar que la actualización de las variables de estado se complete antes de la llamada externa.
Implementar mecanismos de seguridad como bloqueos de reentrada para prevenir ataques de reentrada.
Realizar auditorías de código y pruebas de seguridad de manera regular para detectar y corregir vulnerabilidades potenciales a tiempo.
Considerar la introducción de un mecanismo de límite para controlar el monto máximo de una sola transacción y reducir las pérdidas potenciales.
Este incidente nos recuerda una vez más que debemos mantenernos alerta en el desarrollo de contratos inteligentes y dar importancia a la seguridad. Solo al mejorar continuamente las medidas de seguridad podemos proporcionar una fuerte garantía para el desarrollo saludable del ecosistema Web3.