El 2 de febrero de 2023 por la tarde, el contrato de OrionProtocol en Ethereum y Binance Smart Chain fue objeto de un ataque de reingreso debido a una vulnerabilidad. El atacante obtuvo ganancias de 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart, sumando un total de aproximadamente 2.9 millones de dólares.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó los preparativos pertinentes. Luego, el atacante utilizó la función de swap de un DEX para realizar un préstamo y llamó al método swapThroughOrionPool de OrionProtocol para intercambiar 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 posterior ataque de callback.
Al ejecutar el método swapThroughOrionPool, debido a que el contrato Token del atacante contiene lógica de devolución, se desencadenó un ataque de reentrada durante el proceso de transferencia. El atacante utilizó el método Token.Transfer para llamar repetidamente a la función ExchangeWithAtomic.depositAsset, lo que provocó que la cantidad depositada se acumulase continuamente. Finalmente, el atacante completó su ganancia a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen del monedero caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos en el ataque, 657.5 aún permanecen en la dirección del monedero del atacante, mientras que el resto ha sido transferido a través de un servicio de mezcla.
Análisis de vulnerabilidades
El problema principal radica en la función doSwapThroughOrionPool. Esta función presenta un defecto lógico al ejecutar la operación _doSwapTokens. En concreto, el contrato actualiza la variable curBalance solo después de completar la transferencia, lo que brinda una oportunidad a los atacantes. Los atacantes pueden agregar lógica de retroalimentación en la función transfer de un Token personalizado y llamar repetidamente a la función depositAsset, lo que provoca una actualización incorrecta de curBalance. Finalmente, después de reembolsar el préstamo relámpago, el atacante logró extraer fondos en exceso.
Sugerencias de prevención
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 monedas digitales, es necesario considerar de manera integral los posibles riesgos de seguridad que pueden surgir de los diversos tipos de tokens y caminos de intercambio.
Seguir estrictamente las normas de codificación "Checks-Effects-Interactions" (Comprobaciones-Efectos-Interacciones), es decir, primero realizar la verificación del estado, luego actualizar el estado del contrato y, por último, ejecutar las llamadas externas.
Implementar un candado de reingreso en operaciones clave para prevenir la ocurrencia de ataques de reingreso.
Realizar auditorías de código periódicamente para detectar y corregir de manera oportuna posibles vulnerabilidades de seguridad.
Considerar la introducción de un mecanismo de retiro con retraso para ofrecer la oportunidad de intervención humana en transacciones anómalas.
Al tomar estas medidas, se puede mejorar significativamente la seguridad de los contratos inteligentes y reducir el riesgo de ataques. En el ecosistema Web3, la seguridad siempre es el factor más importante a considerar.
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.
16 me gusta
Recompensa
16
8
Compartir
Comentar
0/400
LidoStakeAddict
· 07-17 03:22
Otra vez un cerdo, eso es.
Ver originalesResponder0
NervousFingers
· 07-14 05:42
Otra vez un proyecto ha sido Cupones de clip...
Ver originalesResponder0
TokenUnlocker
· 07-14 04:00
¿Otra vulnerabilidad de reentrada no bloqueada?
Ver originalesResponder0
GasSavingMaster
· 07-14 03:59
La tecnología actual tampoco es gran cosa.
Ver originalesResponder0
PanicSeller69
· 07-14 03:58
¡Otra vez explotó, vaya hombre!
Ver originalesResponder0
PortfolioAlert
· 07-14 03:37
Otra víctima de un fallo en el contrato...
Ver originalesResponder0
SerumSqueezer
· 07-14 03:36
¿Cuántas veces más va a haber filtraciones y agujeros?
Ver originalesResponder0
ForkTongue
· 07-14 03:33
¿Otra vez un ataque de reentrada? ¿Estos proyectos aún no aprenden la lección?
OrionProtocol sufrió un ataque de reentrada y se robaron 2.9 millones de dólares.
Análisis del ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, el contrato de OrionProtocol en Ethereum y Binance Smart Chain fue objeto de un ataque de reingreso debido a una vulnerabilidad. El atacante obtuvo ganancias de 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart, sumando un total de aproximadamente 2.9 millones de dólares.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó los preparativos pertinentes. Luego, el atacante utilizó la función de swap de un DEX para realizar un préstamo y llamó al método swapThroughOrionPool de OrionProtocol para intercambiar 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 posterior ataque de callback.
Al ejecutar el método swapThroughOrionPool, debido a que el contrato Token del atacante contiene lógica de devolución, se desencadenó un ataque de reentrada durante el proceso de transferencia. El atacante utilizó el método Token.Transfer para llamar repetidamente a la función ExchangeWithAtomic.depositAsset, lo que provocó que la cantidad depositada se acumulase continuamente. Finalmente, el atacante completó su ganancia a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen del monedero caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos en el ataque, 657.5 aún permanecen en la dirección del monedero del atacante, mientras que el resto ha sido transferido a través de un servicio de mezcla.
Análisis de vulnerabilidades
El problema principal radica en la función doSwapThroughOrionPool. Esta función presenta un defecto lógico al ejecutar la operación _doSwapTokens. En concreto, el contrato actualiza la variable curBalance solo después de completar la transferencia, lo que brinda una oportunidad a los atacantes. Los atacantes pueden agregar lógica de retroalimentación en la función transfer de un Token personalizado y llamar repetidamente a la función depositAsset, lo que provoca una actualización incorrecta de curBalance. Finalmente, después de reembolsar el préstamo relámpago, el atacante logró extraer fondos en exceso.
Sugerencias de prevención
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 monedas digitales, es necesario considerar de manera integral los posibles riesgos de seguridad que pueden surgir de los diversos tipos de tokens y caminos de intercambio.
Seguir estrictamente las normas de codificación "Checks-Effects-Interactions" (Comprobaciones-Efectos-Interacciones), es decir, primero realizar la verificación del estado, luego actualizar el estado del contrato y, por último, ejecutar las llamadas externas.
Implementar un candado de reingreso en operaciones clave para prevenir la ocurrencia de ataques de reingreso.
Realizar auditorías de código periódicamente para detectar y corregir de manera oportuna posibles vulnerabilidades de seguridad.
Considerar la introducción de un mecanismo de retiro con retraso para ofrecer la oportunidad de intervención humana en transacciones anómalas.
Al tomar estas medidas, se puede mejorar significativamente la seguridad de los contratos inteligentes y reducir el riesgo de ataques. En el ecosistema Web3, la seguridad siempre es el factor más importante a considerar.