OrionProtocol sufrió un ataque de reentrada que resultó en pérdidas de casi 3 millones de dólares.
El 2 de febrero de 2023, el contrato Orion Protocol en Ethereum y Binance Chain sufrió un ataque de reentrada debido a una vulnerabilidad de seguridad. El atacante logró robar aproximadamente 2,9 millones de dólares en activos criptográficos, que incluían 2,844,766 USDT en Ethereum y 191,606 BUSD en BSC.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó los preparativos necesarios. Luego, el atacante tomó prestado dinero a través del método swap de UNI-V2 y llamó al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato Token creado por el atacante, lo que allanó el camino para el posterior ataque de callback.
Durante el proceso de intercambio, debido a que el contrato Token del atacante contiene lógica de callback, cada operación de transferencia activa una llamada de reentrada al método depositAsset del contrato ExchangeWithAtomic. Esto provoca que el monto del depósito se acumule incorrectamente, lo que finalmente permite al atacante retirar fondos que superan la cantidad que realmente depositó.
Origen de la vulnerabilidad
El problema central radica en los contratos ExchangeWithAtomic en las funciones doSwapThroughOrionPool y _doSwapTokens. Estas funciones actualizan la variable curBalance después de realizar la transferencia de tokens, pero no implementan medidas para prevenir ataques de reentrada. Los atacantes aprovechan la función de transferencia del Token personalizado para invocar el método depositAsset, lo que provoca que curBalance se actualice incorrectamente, permitiendo así la extracción de fondos excesivos después de reembolsar el préstamo relámpago.
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.
Sugerencias de seguridad
Para prevenir ataques similares, el equipo del proyecto debe prestar atención a los siguientes puntos:
Al implementar la función de intercambio de monedas digitales, es necesario considerar los riesgos de seguridad que pueden surgir de los diversos tipos de Token y las posibles rutas de intercambio.
Escribir el código del contrato siguiendo el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions), es decir, primero realizar la comprobación de condiciones, luego actualizar las variables de estado y finalmente interactuar con contratos externos.
Utilizar un bloqueo de reentrada o mecanismos similares en funciones clave para prevenir ataques de reentrada.
Para las llamadas externas, especialmente aquellas que implican la transferencia de fondos, se debe tener un cuidado especial y considerar el uso del modo de pago pull en lugar del modo de pago push.
Realizar auditorías de seguridad periódicas para detectar y reparar vulnerabilidades potenciales de manera oportuna.
Al adoptar estas medidas, se puede mejorar significativamente la seguridad de los contratos inteligentes y reducir el riesgo de sufrir ataques. En el ecosistema Web3, la seguridad siempre debe ser la principal prioridad.
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.
11 me gusta
Recompensa
11
4
Compartir
Comentar
0/400
TokenTherapist
· hace15h
¿Alguien más se ha deprimido?
Ver originalesResponder0
LiquidatorFlash
· hace15h
Las vulnerabilidades de reentrada son realmente el principal asesino de las pérdidas en DeFi...
Ver originalesResponder0
0xLuckbox
· hace15h
¿Cómo es que me han robado otra vez en estos tiempos?
Ver originalesResponder0
TokenSherpa
· hace15h
*sigh* otro protocolo fallando en las comprobaciones básicas de reentrancia... hablando históricamente, esto era prevenible
OrionProtocol sufrió un ataque de reentrada, se robaron casi 3 millones de dólares en activos.
OrionProtocol sufrió un ataque de reentrada que resultó en pérdidas de casi 3 millones de dólares.
El 2 de febrero de 2023, el contrato Orion Protocol en Ethereum y Binance Chain sufrió un ataque de reentrada debido a una vulnerabilidad de seguridad. El atacante logró robar aproximadamente 2,9 millones de dólares en activos criptográficos, que incluían 2,844,766 USDT en Ethereum y 191,606 BUSD en BSC.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó los preparativos necesarios. Luego, el atacante tomó prestado dinero a través del método swap de UNI-V2 y llamó al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato Token creado por el atacante, lo que allanó el camino para el posterior ataque de callback.
Durante el proceso de intercambio, debido a que el contrato Token del atacante contiene lógica de callback, cada operación de transferencia activa una llamada de reentrada al método depositAsset del contrato ExchangeWithAtomic. Esto provoca que el monto del depósito se acumule incorrectamente, lo que finalmente permite al atacante retirar fondos que superan la cantidad que realmente depositó.
Origen de la vulnerabilidad
El problema central radica en los contratos ExchangeWithAtomic en las funciones doSwapThroughOrionPool y _doSwapTokens. Estas funciones actualizan la variable curBalance después de realizar la transferencia de tokens, pero no implementan medidas para prevenir ataques de reentrada. Los atacantes aprovechan la función de transferencia del Token personalizado para invocar el método depositAsset, lo que provoca que curBalance se actualice incorrectamente, permitiendo así la extracción de fondos excesivos después de reembolsar el préstamo relámpago.
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.
Sugerencias de seguridad
Para prevenir ataques similares, el equipo del proyecto debe prestar atención a los siguientes puntos:
Al implementar la función de intercambio de monedas digitales, es necesario considerar los riesgos de seguridad que pueden surgir de los diversos tipos de Token y las posibles rutas de intercambio.
Escribir el código del contrato siguiendo el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions), es decir, primero realizar la comprobación de condiciones, luego actualizar las variables de estado y finalmente interactuar con contratos externos.
Utilizar un bloqueo de reentrada o mecanismos similares en funciones clave para prevenir ataques de reentrada.
Para las llamadas externas, especialmente aquellas que implican la transferencia de fondos, se debe tener un cuidado especial y considerar el uso del modo de pago pull en lugar del modo de pago push.
Realizar auditorías de seguridad periódicas para detectar y reparar vulnerabilidades potenciales de manera oportuna.
Al adoptar estas medidas, se puede mejorar significativamente la seguridad de los contratos inteligentes y reducir el riesgo de sufrir ataques. En el ecosistema Web3, la seguridad siempre debe ser la principal prioridad.