Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, el proyecto OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a un fallo en el contrato, con una pérdida total de aproximadamente 2,9 millones de dólares en activos, que incluyen 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token especial y realizó una serie de preparativos. Luego, el atacante tomó prestados fondos a través de la función de intercambio de algún 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 preparó el terreno para el ataque de retroalimentación posterior.
Durante el proceso de intercambio, debido a que el contrato de Token del atacante contiene lógica de devolución de llamada, se activó una llamada repetida al método ExchangeWithAtomic.depositAsset durante la operación de transferencia. Este ataque de reentrada hizo que la cantidad depositada se acumulara repetidamente, y finalmente el atacante obtuvo fondos que superaban el límite normal 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 herramientas de mezcla.
Análisis de Vulnerabilidades
El problema central del ataque radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función, al manejar el intercambio de tokens, no gestiona correctamente la posible situación de reentrada. En concreto, en la función _doSwapTokens, la variable curBalance se actualiza solo después de la operación de transferencia de tokens, lo que brinda una oportunidad al atacante.
El atacante, al agregar lógica de callback en la función transfer del Token personalizado, provoca la llamada a la función depositAsset en cada transferencia, lo que lleva a una actualización incorrecta de la variable curBalance. Al final, el atacante, después de devolver el préstamo relámpago, extrajo fondos en exceso a través de la función withdraw.
Reproducción de vulnerabilidades
Los investigadores proporcionaron parte del código POC, que muestra cómo aprovechar la vulnerabilidad para realizar un ataque. El código simula principalmente el flujo de operaciones del atacante, incluidos los pasos para crear un Token falso, establecer un fondo de liquidez, realizar un préstamo rápido y ejecutar un ataque de reentrada.
Sugerencias de seguridad
Para evitar ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos al diseñar el contrato:
Al implementar la función de intercambio de tokens, es necesario considerar los posibles riesgos que pueden surgir de los diferentes tipos de tokens y rutas de intercambio.
Escribir el código del contrato siguiendo el patrón "Checks-Effects-Interactions" (Comprobaciones- Efectos- Interacciones), es decir, primero realizar la comprobación de condiciones, luego actualizar las variables de estado y finalmente ejecutar las llamadas externas.
Utiliza bloqueos de reentrada u otros mecanismos de prevención de reentrada para proteger las funciones críticas.
Realizar auditorías de seguridad periódicas para detectar y corregir posibles vulnerabilidades de manera oportuna.
Considerar la introducción de límites en la cantidad de transacciones o en la frecuencia de transacciones para reducir el impacto de posibles ataques.
Al adoptar estas medidas, el proyecto puede mejorar significativamente la seguridad del contrato y reducir el riesgo de ataques. En el ecosistema Web3, la seguridad siempre debe ser la principal consideración.
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.
10 me gusta
Recompensa
10
4
Compartir
Comentar
0/400
SleepTrader
· hace8h
Otro novato en contratos ha sido golpeado.
Ver originalesResponder0
StablecoinEnjoyer
· hace8h
Otra vez se ha escapado, no aprende la lección.
Ver originalesResponder0
GetRichLeek
· hace9h
Diariamente me hacen clip cupones con contratos jajajaja
Ver originalesResponder0
MemeEchoer
· hace9h
Otra vez tumbado, parece que los contratos inteligentes aún deben ser escritos con seriedad.
OrionProtocol sufrió un ataque de reentrada, perdiendo activos por valor de 2.9 millones de dólares.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, el proyecto OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a un fallo en el contrato, con una pérdida total de aproximadamente 2,9 millones de dólares en activos, que incluyen 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token especial y realizó una serie de preparativos. Luego, el atacante tomó prestados fondos a través de la función de intercambio de algún 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 preparó el terreno para el ataque de retroalimentación posterior.
Durante el proceso de intercambio, debido a que el contrato de Token del atacante contiene lógica de devolución de llamada, se activó una llamada repetida al método ExchangeWithAtomic.depositAsset durante la operación de transferencia. Este ataque de reentrada hizo que la cantidad depositada se acumulara repetidamente, y finalmente el atacante obtuvo fondos que superaban el límite normal 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 herramientas de mezcla.
Análisis de Vulnerabilidades
El problema central del ataque radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función, al manejar el intercambio de tokens, no gestiona correctamente la posible situación de reentrada. En concreto, en la función _doSwapTokens, la variable curBalance se actualiza solo después de la operación de transferencia de tokens, lo que brinda una oportunidad al atacante.
El atacante, al agregar lógica de callback en la función transfer del Token personalizado, provoca la llamada a la función depositAsset en cada transferencia, lo que lleva a una actualización incorrecta de la variable curBalance. Al final, el atacante, después de devolver el préstamo relámpago, extrajo fondos en exceso a través de la función withdraw.
Reproducción de vulnerabilidades
Los investigadores proporcionaron parte del código POC, que muestra cómo aprovechar la vulnerabilidad para realizar un ataque. El código simula principalmente el flujo de operaciones del atacante, incluidos los pasos para crear un Token falso, establecer un fondo de liquidez, realizar un préstamo rápido y ejecutar un ataque de reentrada.
Sugerencias de seguridad
Para evitar ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos al diseñar el contrato:
Al implementar la función de intercambio de tokens, es necesario considerar los posibles riesgos que pueden surgir de los diferentes tipos de tokens y rutas de intercambio.
Escribir el código del contrato siguiendo el patrón "Checks-Effects-Interactions" (Comprobaciones- Efectos- Interacciones), es decir, primero realizar la comprobación de condiciones, luego actualizar las variables de estado y finalmente ejecutar las llamadas externas.
Utiliza bloqueos de reentrada u otros mecanismos de prevención de reentrada para proteger las funciones críticas.
Realizar auditorías de seguridad periódicas para detectar y corregir posibles vulnerabilidades de manera oportuna.
Considerar la introducción de límites en la cantidad de transacciones o en la frecuencia de transacciones para reducir el impacto de posibles ataques.
Al adoptar estas medidas, el proyecto puede mejorar significativamente la seguridad del contrato y reducir el riesgo de ataques. En el ecosistema Web3, la seguridad siempre debe ser la principal consideración.