Análisis del incidente de ataque de reentrada de OrionProtocol
Resumen del evento
El 2 de febrero de 2023, OrionProtocol sufrió un ataque de reentrada en Ethereum y Binance Smart Chain, lo que resultó en pérdidas de aproximadamente 2.9 millones de dólares. Los atacantes aprovecharon una vulnerabilidad del contrato y robaron 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena inteligente de Binance.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado para preparar el ataque posterior.
Realiza préstamos a través del método swap de UNI-V2 y llama al método ExchangeWithAtomic.swapThroughOrionPool para el intercambio de tokens. La ruta de intercambio incluye la dirección del contrato Token creada por el atacante.
Al ejecutar el método swapThroughOrionPool, un atacante aprovecha la función de callback en el contrato de Token personalizado para llamar repetidamente al método ExchangeWithAtomic.depositAsset, lo que provoca que el monto del depósito se acumule varias veces.
Por último, el atacante completa la obtención de ganancias 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, 657.5 ETH aún permanecen en 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 principal radica en la función doSwapThroughOrionPool. Esta función, al ejecutar _doSwapTokens, primero realiza la operación de transferencia y luego actualiza la variable curBalance. Un atacante aprovecha el callback añadido en la función transfer de un Token personalizado, llamando nuevamente a la función depositAsset antes de que se actualice curBalance, lo que provoca un error en el cálculo del saldo.
Sugerencias de prevención
Al diseñar contratos, se deben considerar los riesgos de seguridad que pueden surgir de la variedad de Tokens y rutas de intercambio.
Sigue el patrón "Checks-Effects-Interactions" al escribir el código del contrato, es decir, primero realiza la verificación de condiciones, luego actualiza las variables de estado y finalmente realiza las llamadas externas.
Añadir mecanismos de seguridad como el bloqueo de reentrada para prevenir ataques de reentrada.
Realizar auditorías de código y escaneos de vulnerabilidades de manera regular, y corregir a tiempo los posibles riesgos de seguridad.
Limitar el monto máximo de una sola transacción, establecer restricciones en la frecuencia de las transacciones y otras medidas para reducir las pérdidas causadas por ataques potenciales.
Al adoptar estas medidas, el equipo del proyecto puede mejorar significativamente la seguridad del contrato y reducir el riesgo de sufrir ataques similares. Mantener una atención constante en la seguridad de los contratos inteligentes es crucial para el desarrollo saludable del ecosistema Web3.
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.
9 me gusta
Recompensa
9
3
Compartir
Comentar
0/400
FreeRider
· 07-12 19:16
Otro nuevo tonto contribuyente
Ver originalesResponder0
WenMoon42
· 07-12 19:09
Otro proyecto ha fracasado.
Ver originalesResponder0
LiquidationSurvivor
· 07-12 19:08
El contrato ha sido otra vez esquilmado, no tengo palabras.
OrionProtocol sufrió un ataque de reentrada de 2.9 millones de dólares, afectando a las cadenas ETH y BSC.
Análisis del incidente de ataque de reentrada de OrionProtocol
Resumen del evento
El 2 de febrero de 2023, OrionProtocol sufrió un ataque de reentrada en Ethereum y Binance Smart Chain, lo que resultó en pérdidas de aproximadamente 2.9 millones de dólares. Los atacantes aprovecharon una vulnerabilidad del contrato y robaron 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena inteligente de Binance.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado para preparar el ataque posterior.
Realiza préstamos a través del método swap de UNI-V2 y llama al método ExchangeWithAtomic.swapThroughOrionPool para el intercambio de tokens. La ruta de intercambio incluye la dirección del contrato Token creada por el atacante.
Al ejecutar el método swapThroughOrionPool, un atacante aprovecha la función de callback en el contrato de Token personalizado para llamar repetidamente al método ExchangeWithAtomic.depositAsset, lo que provoca que el monto del depósito se acumule varias veces.
Por último, el atacante completa la obtención de ganancias 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, 657.5 ETH aún permanecen en 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 principal radica en la función doSwapThroughOrionPool. Esta función, al ejecutar _doSwapTokens, primero realiza la operación de transferencia y luego actualiza la variable curBalance. Un atacante aprovecha el callback añadido en la función transfer de un Token personalizado, llamando nuevamente a la función depositAsset antes de que se actualice curBalance, lo que provoca un error en el cálculo del saldo.
Sugerencias de prevención
Al diseñar contratos, se deben considerar los riesgos de seguridad que pueden surgir de la variedad de Tokens y rutas de intercambio.
Sigue el patrón "Checks-Effects-Interactions" al escribir el código del contrato, es decir, primero realiza la verificación de condiciones, luego actualiza las variables de estado y finalmente realiza las llamadas externas.
Añadir mecanismos de seguridad como el bloqueo de reentrada para prevenir ataques de reentrada.
Realizar auditorías de código y escaneos de vulnerabilidades de manera regular, y corregir a tiempo los posibles riesgos de seguridad.
Limitar el monto máximo de una sola transacción, establecer restricciones en la frecuencia de las transacciones y otras medidas para reducir las pérdidas causadas por ataques potenciales.
Al adoptar estas medidas, el equipo del proyecto puede mejorar significativamente la seguridad del contrato y reducir el riesgo de sufrir ataques similares. Mantener una atención constante en la seguridad de los contratos inteligentes es crucial para el desarrollo saludable del ecosistema Web3.