Análisis del evento de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, OrionProtocol sufrió un ataque de reingreso en Ethereum y Binance Smart Chain debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2.9 millones de dólares. Las pérdidas específicas incluyen 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó las operaciones de transferencia y autorización correspondientes, preparándose para el ataque posterior. Luego, el atacante tomó un préstamo a través del método swap de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool para intercambiar tokens. La ruta de intercambio se configuró como [USDC, Token del atacante, USDT].
Durante el proceso de intercambio, un atacante aprovechó la función de callback del contrato de Token personalizado, llamando repetidamente a la función ExchangeWithAtomic.depositAsset mediante el método Token.Transfer, lo que provocó que el monto del depósito se acumulara constantemente. Finalmente, el atacante completó su ganancia a través de una operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de una cuenta de monedero 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 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 central radica en la función doSwapThroughOrionPool. Esta función llama a la función _doSwapTokens, que actualiza la variable curBalance después de realizar la transferencia de tokens. El atacante añadió lógica de callback en la función transfer de un Token personalizado, llamando a la función depositAsset, lo que provocó una actualización incorrecta de curBalance. Posteriormente, el atacante llamó a la función withdraw para retirar fondos tras reembolsar el préstamo relámpago, completando así el ataque.
Reproducción de ataques
Los atacantes llevan a cabo un ataque creando un contrato de token ERC20 personalizado y utilizando la función de préstamo relámpago de algún DEX. Los pasos principales incluyen:
Crear un Token personalizado y establecer pares de negociación con USDC y USDT
Preparar capital inicial y proporcionar liquidez
Llamar a las funciones depositAsset y swapThroughOrionPool del contrato ExchangeWithAtomic
Agregar lógica de callback en la función transfer del Token personalizado
Finalmente, extraer fondos de ganancias a través de la función withdraw.
Sugerencias de seguridad
Para evitar ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos:
En el diseño del contrato se deben considerar los riesgos de seguridad que pueden surgir de la multiplicidad de tokens y caminos de intercambio.
Seguir la norma de codificación "verificar primero, luego efectos, y después interacciones" (Checks-Effects-Interactions)
Implementar auditorías de seguridad completas, prestando especial atención al riesgo de ataques de reentrada.
Considerar el uso de mecanismos de seguridad como los bloqueos de reentrada.
Realizar escaneos de vulnerabilidades de contratos y evaluaciones de seguridad de forma periódica
Este evento enfatiza nuevamente la importancia de la seguridad de los contratos inteligentes; los proyectos deben seguir prestando atención y mejorando sus medidas de seguridad para proteger los activos de los usuarios y mantener la reputación de la plataforma.
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 de 2.9 millones, los fondos ya han sido parcialmente transferidos a cripto tumbler.
Análisis del evento de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, OrionProtocol sufrió un ataque de reingreso en Ethereum y Binance Smart Chain debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2.9 millones de dólares. Las pérdidas específicas incluyen 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena de Binance Smart.
Análisis del proceso de ataque
El atacante primero desplegó un contrato de Token personalizado y realizó las operaciones de transferencia y autorización correspondientes, preparándose para el ataque posterior. Luego, el atacante tomó un préstamo a través del método swap de un DEX y llamó al método ExchangeWithAtomic.swapThroughOrionPool para intercambiar tokens. La ruta de intercambio se configuró como [USDC, Token del atacante, USDT].
Durante el proceso de intercambio, un atacante aprovechó la función de callback del contrato de Token personalizado, llamando repetidamente a la función ExchangeWithAtomic.depositAsset mediante el método Token.Transfer, lo que provocó que el monto del depósito se acumulara constantemente. Finalmente, el atacante completó su ganancia a través de una operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de una cuenta de monedero 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 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 central radica en la función doSwapThroughOrionPool. Esta función llama a la función _doSwapTokens, que actualiza la variable curBalance después de realizar la transferencia de tokens. El atacante añadió lógica de callback en la función transfer de un Token personalizado, llamando a la función depositAsset, lo que provocó una actualización incorrecta de curBalance. Posteriormente, el atacante llamó a la función withdraw para retirar fondos tras reembolsar el préstamo relámpago, completando así el ataque.
Reproducción de ataques
Los atacantes llevan a cabo un ataque creando un contrato de token ERC20 personalizado y utilizando la función de préstamo relámpago de algún DEX. Los pasos principales incluyen:
Sugerencias de seguridad
Para evitar ataques similares, el equipo del proyecto debe tener en cuenta los siguientes puntos:
Este evento enfatiza nuevamente la importancia de la seguridad de los contratos inteligentes; los proyectos deben seguir prestando atención y mejorando sus medidas de seguridad para proteger los activos de los usuarios y mantener la reputación de la plataforma.