Análisis del incidente de ataque por reentrada de OrionProtocol
El 2 de febrero de 2023 a las 15:40:20 UTC, Orion Protocol 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 de la red Ethereum y 191,606 BUSD de Binance Smart Chain, 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 realizó una serie de preparativos. Luego, el atacante tomó prestados fondos a través de la función swap de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio incluía la dirección del contrato de Token creado por el atacante, lo que sembró las semillas para un ataque de callback posterior.
Durante el proceso de intercambio, debido a que el contrato Token del atacante incluye lógica de devolución de llamada, cada transferencia activa múltiples llamadas de reentrada al método ExchangeWithAtomic.depositAsset. Esto conduce a que el monto del depósito se acumule múltiples veces, lo que permite al atacante obtener ganancias excesivas 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. Tras el éxito del ataque, de los 1,651 ETH obtenidos, 657.5 ETH 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 núcleo de la vulnerabilidad radica en las funciones doSwapThroughOrionPool y _doSwapTokens del contrato ExchangeWithAtomic. Estas funciones actualizan la variable curBalance solo después de realizar la transferencia de tokens, lo que brinda a los atacantes la oportunidad de aprovechar un ataque de reentrada. Los atacantes logran que curBalance se actualice incorrectamente al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, lo que les permite extraer fondos adicionales incluso después de reembolsar el préstamo relámpago.
Reproducción del ataque
Los investigadores proporcionaron parte del código POC que simula el proceso de ataque. Los resultados de las pruebas mostraron que el atacante logró aprovechar la vulnerabilidad del contrato para obtener USDT adicional.
Sugerencias de seguridad
Para este tipo de ataques, se recomienda a los proyectos:
Al implementar la función de intercambio de tokens en el contrato, es necesario considerar los riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y las posibles rutas de intercambio.
Seguir estrictamente el patrón de codificación "Checks-Effects-Interactions" (Comprobaciones- Efectos- Interacciones), es decir, primero realizar la comprobación de condiciones, luego actualizar las variables de estado y, por último, ejecutar las llamadas externas.
Utilizar un bloqueo de reentrada o un mecanismo similar antes de actualizar las variables de estado clave para prevenir ataques de reentrada.
Realizar auditorías de código y pruebas de seguridad de forma periódica para detectar y corregir vulnerabilidades potenciales a tiempo.
Este evento destaca nuevamente la importancia de la seguridad en los contratos inteligentes. Los proyectos deben prestar atención continua a los problemas de seguridad y adoptar medidas de protección integrales para garantizar la seguridad de los activos de los usuarios y el desarrollo estable a largo plazo del proyecto.
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.
20 me gusta
Recompensa
20
10
Republicar
Compartir
Comentar
0/400
ColdWalletGuardian
· 08-14 12:21
Las vulnerabilidades son difíciles de prevenir.
Ver originalesResponder0
NestedFox
· 08-14 11:36
¿Esto va a ser un trueno?
Ver originalesResponder0
ImpermanentLossEnjoyer
· 08-14 11:01
La pérdida impermanente diaria.
Ver originalesResponder0
rug_connoisseur
· 08-12 04:38
Otra vez un contratos inteligentes ha fallado.
Ver originalesResponder0
SchroedingerGas
· 08-11 18:57
¿Quién volvió a ser despojado?
Ver originalesResponder0
DAOTruant
· 08-11 18:57
Otra vez un contrato ha sido aprovechado.
Ver originalesResponder0
MainnetDelayedAgain
· 08-11 18:56
Otro caso que entra en la base de datos estadística, realmente no debería.
Ver originalesResponder0
GateUser-5854de8b
· 08-11 18:51
Otra vez el contrato ha sido robado...
Ver originalesResponder0
MEV_Whisperer
· 08-11 18:51
Otra vez reentrada, me voy, me voy.
Ver originalesResponder0
SignatureVerifier
· 08-11 18:37
*suspiro* otro fallo de reentrancia en el libro de texto. estadísticamente inevitable con insuficientes chequeos de validación. lo vi venir, para ser honesto.
OrionProtocol sufrió un ataque de reentrada, con pérdidas de aproximadamente 2.9 millones de dólares.
Análisis del incidente de ataque por reentrada de OrionProtocol
El 2 de febrero de 2023 a las 15:40:20 UTC, Orion Protocol 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 de la red Ethereum y 191,606 BUSD de Binance Smart Chain, 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 realizó una serie de preparativos. Luego, el atacante tomó prestados fondos a través de la función swap de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio incluía la dirección del contrato de Token creado por el atacante, lo que sembró las semillas para un ataque de callback posterior.
Durante el proceso de intercambio, debido a que el contrato Token del atacante incluye lógica de devolución de llamada, cada transferencia activa múltiples llamadas de reentrada al método ExchangeWithAtomic.depositAsset. Esto conduce a que el monto del depósito se acumule múltiples veces, lo que permite al atacante obtener ganancias excesivas 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. Tras el éxito del ataque, de los 1,651 ETH obtenidos, 657.5 ETH 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 núcleo de la vulnerabilidad radica en las funciones doSwapThroughOrionPool y _doSwapTokens del contrato ExchangeWithAtomic. Estas funciones actualizan la variable curBalance solo después de realizar la transferencia de tokens, lo que brinda a los atacantes la oportunidad de aprovechar un ataque de reentrada. Los atacantes logran que curBalance se actualice incorrectamente al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, lo que les permite extraer fondos adicionales incluso después de reembolsar el préstamo relámpago.
Reproducción del ataque
Los investigadores proporcionaron parte del código POC que simula el proceso de ataque. Los resultados de las pruebas mostraron que el atacante logró aprovechar la vulnerabilidad del contrato para obtener USDT adicional.
Sugerencias de seguridad
Para este tipo de ataques, se recomienda a los proyectos:
Este evento destaca nuevamente la importancia de la seguridad en los contratos inteligentes. Los proyectos deben prestar atención continua a los problemas de seguridad y adoptar medidas de protección integrales para garantizar la seguridad de los activos de los usuarios y el desarrollo estable a largo plazo del proyecto.