Análisis del evento de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023, OrionProtocol sufrió un ataque de reentrada en Ethereum y Binance Smart Chain, con pérdidas totales de aproximadamente 2.9 millones de dólares. Los atacantes aprovecharon una vulnerabilidad del contrato para robar 2,844,766 USDT en la red de Ethereum y 191,606 BUSD en Binance Smart Chain.
Proceso de ataque
Los atacantes primero desplegaron un contrato de Token personalizado y realizaron las operaciones de transferencia y autorización relacionadas, preparando el terreno para el ataque posterior. Luego, los atacantes tomaron un préstamo mediante el método swap de UNI-V2 y llamaron al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens.
La ruta de intercambio se configura como [USDC, Token del atacante, USDT]. La clave es que el contrato del Token creado por el atacante incluye una función de callback. Durante el proceso de intercambio, el atacante utiliza el método Token.Transfer para llamar a la función ExchangeWithAtomic.depositAsset, llevando a cabo un ataque de reentrada, lo que provoca que el monto del depósito se acumule continuamente. Al final, el atacante completa sus ganancias a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la cuenta de la billetera caliente de una plataforma de intercambio. De las 1,651 ETH obtenidas, 657.5 aún 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 radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función, al ejecutar la operación _doSwapTokens, realiza primero la transferencia y luego actualiza la variable curBalance. El atacante, al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, provoca una actualización incorrecta de curBalance. Esto permite al atacante retirar fondos excesivos a través de la función withdraw después de reembolsar el préstamo relámpago.
Sugerencias de prevención
El diseño del contrato debe seguir el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions), primero actualizar las variables de estado y luego realizar llamadas externas.
Implementar mecanismos de prevención de reentrada como cerrojos de reentrada.
Para las funciones que implican el intercambio de tokens, es necesario considerar de manera integral los posibles riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y rutas de intercambio.
Fortalecer la auditoría de código, prestando especial atención a las funciones clave que implican operaciones financieras.
Considerar la introducción de límites de monto de transacción o medidas de seguridad adicionales como bloqueos temporales.
Realizar evaluaciones de seguridad y pruebas de penetración de manera regular para detectar y corregir posibles vulnerabilidades a tiempo.
Este evento destaca una vez más la importancia de la seguridad de los contratos inteligentes. Los equipos de proyecto deben prestar atención continua a la seguridad de los contratos y adoptar múltiples medidas de protección para minimizar al máximo los riesgos de seguridad.
Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
24 me gusta
Recompensa
24
6
Compartir
Comentar
0/400
NewPumpamentals
· 07-11 03:48
Todos los días atacan y hacen Rug Pull.
Ver originalesResponder0
HodlBeliever
· 07-08 12:16
Riesgos típicos de los contratos
Ver originalesResponder0
0xSoulless
· 07-08 08:06
La reentrada siempre es un punto doloroso
Ver originalesResponder0
PaperHandSister
· 07-08 08:03
quedarse fuera la hermana hoy lloró mucho
Ver originalesResponder0
AirdropHunterXM
· 07-08 08:02
Otro incidente de ataque por reentrada
Ver originalesResponder0
ChainWatcher
· 07-08 07:55
Otra empresa a la que le han sacado cupones de clip.
OrionProtocol sufrió un ataque de reentrada, con una pérdida de 2.9 millones de USDT y BUSD.
Análisis del evento de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023, OrionProtocol sufrió un ataque de reentrada en Ethereum y Binance Smart Chain, con pérdidas totales de aproximadamente 2.9 millones de dólares. Los atacantes aprovecharon una vulnerabilidad del contrato para robar 2,844,766 USDT en la red de Ethereum y 191,606 BUSD en Binance Smart Chain.
Proceso de ataque
Los atacantes primero desplegaron un contrato de Token personalizado y realizaron las operaciones de transferencia y autorización relacionadas, preparando el terreno para el ataque posterior. Luego, los atacantes tomaron un préstamo mediante el método swap de UNI-V2 y llamaron al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens.
La ruta de intercambio se configura como [USDC, Token del atacante, USDT]. La clave es que el contrato del Token creado por el atacante incluye una función de callback. Durante el proceso de intercambio, el atacante utiliza el método Token.Transfer para llamar a la función ExchangeWithAtomic.depositAsset, llevando a cabo un ataque de reentrada, lo que provoca que el monto del depósito se acumule continuamente. Al final, el atacante completa sus ganancias a través de la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la cuenta de la billetera caliente de una plataforma de intercambio. De las 1,651 ETH obtenidas, 657.5 aún 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 radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función, al ejecutar la operación _doSwapTokens, realiza primero la transferencia y luego actualiza la variable curBalance. El atacante, al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, provoca una actualización incorrecta de curBalance. Esto permite al atacante retirar fondos excesivos a través de la función withdraw después de reembolsar el préstamo relámpago.
Sugerencias de prevención
El diseño del contrato debe seguir el patrón "Comprobaciones-Efectos-Interacciones" (Checks-Effects-Interactions), primero actualizar las variables de estado y luego realizar llamadas externas.
Implementar mecanismos de prevención de reentrada como cerrojos de reentrada.
Para las funciones que implican el intercambio de tokens, es necesario considerar de manera integral los posibles riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y rutas de intercambio.
Fortalecer la auditoría de código, prestando especial atención a las funciones clave que implican operaciones financieras.
Considerar la introducción de límites de monto de transacción o medidas de seguridad adicionales como bloqueos temporales.
Realizar evaluaciones de seguridad y pruebas de penetración de manera regular para detectar y corregir posibles vulnerabilidades a tiempo.
Este evento destaca una vez más la importancia de la seguridad de los contratos inteligentes. Los equipos de proyecto deben prestar atención continua a la seguridad de los contratos y adoptar múltiples medidas de protección para minimizar al máximo los riesgos de seguridad.