Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, el contrato de OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reingreso debido a una vulnerabilidad. El atacante logró robar aproximadamente 2.9 millones de dólares en fondos, que incluían 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó operaciones de transferencia y autorización de ese Token, preparando así el terreno para el ataque posterior. Luego, el atacante utilizó la función de intercambio de Uniswap V2 para realizar préstamos y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para intercambiar tokens.
La ruta de intercambio se establece como: USDC → Token personalizado del atacante → USDT
Durante el proceso de intercambio, debido a que el contrato Token personalizado del atacante incluye una función de devolución de llamada, se puede volver a invocar el método ExchangeWithAtomic.depositAsset al transferir el Token. Este ataque de reentrada provoca que el monto del depósito se calcule varias veces, lo que permite al atacante retirar fondos que superan el monto realmente depositado.
Flujo de fondos
Los fondos iniciales del atacante provienen de una billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos en el ataque, 657.5 ETH todavía 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 de la vulnerabilidad se presenta en la función doSwapThroughOrionPool. Esta función actualiza la variable curBalance después de ejecutar la transferencia de tokens, lo que crea condiciones para un ataque de reentrada. Un atacante puede agregar lógica de devolución de llamada en la función transfer de un Token personalizado, lo que permite que la función depositAsset se llame repetidamente antes de que se actualice curBalance, lo que resulta en un cálculo incorrecto del saldo.
Sugerencias de prevención
Para prevenir ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos:
Implementar un control de acceso y gestión de permisos estrictos.
Escribir contratos inteligentes siguiendo el patrón "Comprobaciones- Efectos- Interacciones" (Checks-Effects-Interactions).
Utilizar un candado de reentrada o un mecanismo similar para prevenir ataques de reentrada.
Para las funciones que implican el intercambio de tokens, se deben considerar los posibles riesgos de seguridad que pueden surgir de los diferentes tipos de token y las rutas de intercambio.
Realizar una auditoría de seguridad integral, que incluya análisis estático, pruebas dinámicas y revisión manual.
Monitorear continuamente las actividades del contrato y establecer un mecanismo de respuesta rápida.
Este evento subraya nuevamente que la seguridad debe ser siempre la principal consideración al desarrollar y desplegar contratos inteligentes. Los desarrolladores del proyecto deben seguir mejorando las medidas de seguridad para proteger los activos de los usuarios y mantener la reputación de la plataforma.
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
CryptoCrazyGF
· hace18h
Otra vez robados monedas, no es de extrañar que sea un Mercado bajista para cumplir con los resultados.
Ver originalesResponder0
FUD_Vaccinated
· 08-14 03:57
Otra vez vienen a tomar a la gente por tonta.
Ver originalesResponder0
GateUser-aa7df71e
· 08-13 22:35
Otra vez un tonto con una guadaña. Mira mi análisis en la clase pequeña detrás de mí.
Ver originalesResponder0
CoinBasedThinking
· 08-13 22:34
Otra vez el viejo truco de reentrada
Ver originalesResponder0
HalfBuddhaMoney
· 08-13 22:29
Otra clásica caída de contratos inteligentes, el dinero de los tontos no está a salvo.
Ver originalesResponder0
NewPumpamentals
· 08-13 22:26
Otra vez un ataque de reentrada, ¿cuándo terminará esto?
OrionProtocol fue objeto de un ataque de reentrada de 2.9 millones de dólares. Análisis del robo de fondos y recomendaciones de prevención.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, el contrato de OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reingreso debido a una vulnerabilidad. El atacante logró robar aproximadamente 2.9 millones de dólares en fondos, que incluían 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó operaciones de transferencia y autorización de ese Token, preparando así el terreno para el ataque posterior. Luego, el atacante utilizó la función de intercambio de Uniswap V2 para realizar préstamos y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para intercambiar tokens.
La ruta de intercambio se establece como: USDC → Token personalizado del atacante → USDT
Durante el proceso de intercambio, debido a que el contrato Token personalizado del atacante incluye una función de devolución de llamada, se puede volver a invocar el método ExchangeWithAtomic.depositAsset al transferir el Token. Este ataque de reentrada provoca que el monto del depósito se calcule varias veces, lo que permite al atacante retirar fondos que superan el monto realmente depositado.
Flujo de fondos
Los fondos iniciales del atacante provienen de una billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos en el ataque, 657.5 ETH todavía 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 de la vulnerabilidad se presenta en la función doSwapThroughOrionPool. Esta función actualiza la variable curBalance después de ejecutar la transferencia de tokens, lo que crea condiciones para un ataque de reentrada. Un atacante puede agregar lógica de devolución de llamada en la función transfer de un Token personalizado, lo que permite que la función depositAsset se llame repetidamente antes de que se actualice curBalance, lo que resulta en un cálculo incorrecto del saldo.
Sugerencias de prevención
Para prevenir ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos:
Este evento subraya nuevamente que la seguridad debe ser siempre la principal consideración al desarrollar y desplegar contratos inteligentes. Los desarrolladores del proyecto deben seguir mejorando las medidas de seguridad para proteger los activos de los usuarios y mantener la reputación de la plataforma.