Análisis del incidente de ataque por reentrada de OrionProtocol
El 2 de febrero de 2023, Orion Protocol en Ethereum y Binance Smart Chain sufrió un ataque de reingreso debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2,9 millones de dólares en activos criptográficos, que incluye 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Análisis del proceso de ataque
El atacante primero implementó un contrato de Token personalizado y realizó las transferencias y autorizaciones necesarias para preparar el ataque posterior. Luego, el atacante tomó prestados fondos a través de la función de intercambio de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio se estableció como [USDC, Token del atacante, USDT].
Durante el proceso de intercambio, el contrato de Token del atacante utilizó su función transfer para hacer una llamada de retorno al método ExchangeWithAtomic.depositAsset, lo que permitió un ataque de reentrada. Esto provocó que el monto del depósito se calculara varias veces, y el atacante luego obtuvo ganancias excesivas a través de operaciones 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 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
La vulnerabilidad central existe en las funciones doSwapThroughOrionPool y _doSwapTokens. El problema clave radica en que el contrato actualiza la variable curBalance solo después de realizar la operación de transferencia, lo que crea condiciones para un ataque de reentrada. Un atacante puede agregar lógica de devolución en la función transfer de un Token personalizado, lo que provoca que la función depositAsset se llame repetidamente, lo que resulta en una actualización incorrecta de curBalance.
Sugerencias de prevención
Seguir el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions) para asegurar que la actualización de las variables de estado ocurra antes de las llamadas externas.
Implementar un bloqueo de reentrada para evitar que la función sea llamada nuevamente durante su ejecución.
Considerar exhaustivamente los posibles riesgos de seguridad que pueden surgir de los diversos tipos de Token y rutas de intercambio.
Fortalecer las restricciones y el monitoreo de las llamadas externas, especialmente las operaciones que involucran transferencias de fondos.
Realizar auditorías de seguridad periódicas para detectar y corregir a tiempo posibles vulnerabilidades.
Este evento enfatiza nuevamente la importancia de adherirse estrictamente a las normas de codificación de seguridad al desarrollar contratos inteligentes. Las partes del proyecto deben prestar atención continua a la seguridad del contrato y tomar múltiples medidas de protección para minimizar el riesgo de sufrir ataques.
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.
OrionProtocol sufrió un ataque de reentrada, perdiendo 2.9 millones de dólares en encriptación.
Análisis del incidente de ataque por reentrada de OrionProtocol
El 2 de febrero de 2023, Orion Protocol en Ethereum y Binance Smart Chain sufrió un ataque de reingreso debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2,9 millones de dólares en activos criptográficos, que incluye 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Análisis del proceso de ataque
El atacante primero implementó un contrato de Token personalizado y realizó las transferencias y autorizaciones necesarias para preparar el ataque posterior. Luego, el atacante tomó prestados fondos a través de la función de intercambio de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio se estableció como [USDC, Token del atacante, USDT].
Durante el proceso de intercambio, el contrato de Token del atacante utilizó su función transfer para hacer una llamada de retorno al método ExchangeWithAtomic.depositAsset, lo que permitió un ataque de reentrada. Esto provocó que el monto del depósito se calculara varias veces, y el atacante luego obtuvo ganancias excesivas a través de operaciones 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 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
La vulnerabilidad central existe en las funciones doSwapThroughOrionPool y _doSwapTokens. El problema clave radica en que el contrato actualiza la variable curBalance solo después de realizar la operación de transferencia, lo que crea condiciones para un ataque de reentrada. Un atacante puede agregar lógica de devolución en la función transfer de un Token personalizado, lo que provoca que la función depositAsset se llame repetidamente, lo que resulta en una actualización incorrecta de curBalance.
Sugerencias de prevención
Seguir el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions) para asegurar que la actualización de las variables de estado ocurra antes de las llamadas externas.
Implementar un bloqueo de reentrada para evitar que la función sea llamada nuevamente durante su ejecución.
Considerar exhaustivamente los posibles riesgos de seguridad que pueden surgir de los diversos tipos de Token y rutas de intercambio.
Fortalecer las restricciones y el monitoreo de las llamadas externas, especialmente las operaciones que involucran transferencias de fondos.
Realizar auditorías de seguridad periódicas para detectar y corregir a tiempo posibles vulnerabilidades.
Este evento enfatiza nuevamente la importancia de adherirse estrictamente a las normas de codificación de seguridad al desarrollar contratos inteligentes. Las partes del proyecto deben prestar atención continua a la seguridad del contrato y tomar múltiples medidas de protección para minimizar el riesgo de sufrir ataques.