Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, OrionProtocol en Ethereum y Binance Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato, lo que resultó en pérdidas de aproximadamente 2.9 millones de dólares. Las pérdidas específicas incluyen 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Chain.
Análisis del proceso de ataque
El atacante primero creó un contrato de Token y realizó operaciones de transferencia y autorización, preparándose para el ataque posterior. Luego, el atacante tomó un préstamo mediante el método swap de UNI-V2 y llamó al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens.
La ruta de intercambio se establece como [USDC, Token creado por el atacante, USDT]. Durante el proceso de intercambio, debido a la función de callback en el contrato del Token creado por el atacante, este pudo seguir llamando al método depositAsset del contrato ExchangeWithAtomic a través del método Transfer del Token, lo que permitió un ataque de reentrada, acumulando constantemente el monto del depósito. Finalmente, el atacante completó su ganancia mediante la operación de retiro.
Análisis de vulnerabilidades
El núcleo de la vulnerabilidad radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función presenta los siguientes problemas al ejecutar _doSwapTokens:
La variable curBalance se actualiza solo después de la operación de transferencia.
No se siguió el modelo "Checks-Effects-Interactions".
Los atacantes aprovecharon esta vulnerabilidad al agregar una función de callback en el función transfer del contrato Token falsificado, de modo que al realizar la transferencia se llamara a la función depositAsset. Esto provocó que la variable curBalance se actualizara incorrectamente, lo que permitió a los atacantes retirar fondos en exceso a través de la función withdraw después de reembolsar el préstamo relámpago.
Flujo de fondos
Los fondos iniciales del atacante provienen de la cuenta de la billetera caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos, 657.5 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.
Sugerencias de prevención
Para evitar ataques similares, el equipo del proyecto debe prestar atención a los siguientes puntos:
Al diseñar el contrato, se deben considerar las posibles situaciones inesperadas que pueden surgir debido a múltiples tokens y rutas de intercambio.
Seguir estrictamente las normas de codificación "verificación-efecto-interacción", asegurándose de realizar primero la evaluación, luego actualizar las variables de estado y, finalmente, ejecutar las llamadas externas.
Implementar controles de seguridad y restricciones más estrictas para las operaciones clave que implican la transferencia de fondos.
Realizar auditorías de seguridad de contratos de forma periódica para identificar y solucionar posibles vulnerabilidades a tiempo.
Este evento nos recuerda una vez más que la seguridad es crucial en el desarrollo de contratos inteligentes. Las partes del proyecto deben mantenerse siempre alerta y adoptar múltiples medidas de protección para minimizar al máximo los riesgos del contrato.
Ver originales
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.
14 me gusta
Recompensa
14
5
Republicar
Compartir
Comentar
0/400
GateUser-4745f9ce
· 08-18 13:15
¡Otro ataque de reentrada! Se acabó.
Ver originalesResponder0
OptionWhisperer
· 08-16 06:37
Se ha perdido otra vez.
Ver originalesResponder0
CryptoGoldmine
· 08-16 06:37
Las vulnerabilidades son activos de rendimiento negativo.
OrionProtocol sufrió un ataque de reentrada, con pérdidas de 2.9 millones de USDT y BUSD.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, OrionProtocol en Ethereum y Binance Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato, lo que resultó en pérdidas de aproximadamente 2.9 millones de dólares. Las pérdidas específicas incluyen 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Chain.
Análisis del proceso de ataque
El atacante primero creó un contrato de Token y realizó operaciones de transferencia y autorización, preparándose para el ataque posterior. Luego, el atacante tomó un préstamo mediante el método swap de UNI-V2 y llamó al método swapThroughOrionPool del contrato ExchangeWithAtomic para intercambiar tokens.
La ruta de intercambio se establece como [USDC, Token creado por el atacante, USDT]. Durante el proceso de intercambio, debido a la función de callback en el contrato del Token creado por el atacante, este pudo seguir llamando al método depositAsset del contrato ExchangeWithAtomic a través del método Transfer del Token, lo que permitió un ataque de reentrada, acumulando constantemente el monto del depósito. Finalmente, el atacante completó su ganancia mediante la operación de retiro.
Análisis de vulnerabilidades
El núcleo de la vulnerabilidad radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función presenta los siguientes problemas al ejecutar _doSwapTokens:
Los atacantes aprovecharon esta vulnerabilidad al agregar una función de callback en el función transfer del contrato Token falsificado, de modo que al realizar la transferencia se llamara a la función depositAsset. Esto provocó que la variable curBalance se actualizara incorrectamente, lo que permitió a los atacantes retirar fondos en exceso a través de la función withdraw después de reembolsar el préstamo relámpago.
Flujo de fondos
Los fondos iniciales del atacante provienen de la cuenta de la billetera caliente de una plataforma de intercambio. De los 1,651 ETH obtenidos, 657.5 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.
Sugerencias de prevención
Para evitar ataques similares, el equipo del proyecto debe prestar atención a los siguientes puntos:
Este evento nos recuerda una vez más que la seguridad es crucial en el desarrollo de contratos inteligentes. Las partes del proyecto deben mantenerse siempre alerta y adoptar múltiples medidas de protección para minimizar al máximo los riesgos del contrato.