OrionProtocol sufrió un ataque de reentrada, perdiendo activos por valor de 2.9 millones de dólares.

robot
Generación de resúmenes en curso

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 de ataque de reentrada de OrionProtocol con PoC

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.

Análisis de ataque de reentrada de OrionProtocol con PoC

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 ataque de reingreso de OrionProtocol con PoC

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.

Análisis de ataque de reingreso de OrionProtocol con PoC

Análisis de ataque de reentrada de OrionProtocol con PoC

Análisis de ataque de reentrada de OrionProtocol con PoC

Análisis de ataque de reingreso de OrionProtocol con PoC

Análisis de ataque de reentrada de OrionProtocol con PoC

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.

Análisis de ataque de reentrada de OrionProtocol con PoC

Análisis de ataque de reentrada de OrionProtocol con PoC

Análisis de ataque por reentrada de OrionProtocol con PoC

Sugerencias de seguridad

Para evitar ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos al diseñar el contrato:

  1. 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.

  2. 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.

  3. Utiliza bloqueos de reentrada u otros mecanismos de prevención de reentrada para proteger las funciones críticas.

  4. Realizar auditorías de seguridad periódicas para detectar y corregir posibles vulnerabilidades de manera oportuna.

  5. 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.

Ver originales
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.
  • Recompensa
  • 4
  • Compartir
Comentar
0/400
SleepTradervip
· hace8h
Otro novato en contratos ha sido golpeado.
Ver originalesResponder0
StablecoinEnjoyervip
· hace8h
Otra vez se ha escapado, no aprende la lección.
Ver originalesResponder0
GetRichLeekvip
· hace9h
Diariamente me hacen clip cupones con contratos jajajaja
Ver originalesResponder0
MemeEchoervip
· hace9h
Otra vez tumbado, parece que los contratos inteligentes aún deben ser escritos con seriedad.
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)