Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, una plataforma DEX sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato en Ethereum y Binance Smart Chain, con una pérdida total de aproximadamente 2.9 millones de dólares en activos criptográficos, que incluía 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Resumen del proceso de ataque
El atacante primero implementó un contrato de token personalizado y realizó las operaciones de transferencia y autorización correspondientes. Luego, el atacante tomó prestados fondos a través de la función de intercambio de algún DEX y llamó al método swapThroughOrionPool de la plataforma objetivo para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato de token creado por el atacante, lo que le permitió ejecutar operaciones de callback durante el proceso de transacción.
Durante el proceso de intercambio, el atacante aprovechó la función de callback en el contrato de token que creó, llamando repetidamente al método depositAsset de la plataforma objetivo, lo que llevó a una acumulación del monto depositado. Finalmente, el atacante completó la obtención de ganancias a través de una operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos por el ataque, 657.5 ETH 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 de la vulnerabilidad se encuentra en la función doSwapThroughOrionPool. Esta función actualiza la variable curBalance después de realizar la transferencia de tokens, pero no considera el posible riesgo de ataque de reentrada. Un atacante logró realizar una llamada de reentrada a la función depositAsset al agregar lógica de callback en la función transfer del token personalizado, lo que provocó que la variable curBalance se actualizara incorrectamente.
Reproducción de ataques
Los investigadores han logrado reproducir el proceso de ataque y han proporcionado el código POC correspondiente. Los resultados de las pruebas muestran que los atacantes pueden obtener fondos adicionales aprovechando las vulnerabilidades del contrato.
Consejos de seguridad
Para los contratos inteligentes con funcionalidad de intercambio de tokens, los desarrolladores deben considerar los siguientes puntos:
Considerar plenamente las posibles eventualidades que pueden surgir de los diferentes tipos de tokens y rutas de intercambio.
Seguir el patrón de codificación "Checks-Effects-Interactions", es decir, primero realizar la verificación del estado, luego actualizar el estado del contrato y finalmente interactuar con contratos externos.
Implementar mecanismos de seguridad como el bloqueo de reentrada para prevenir ataques de reentrada.
Para las llamadas externas, especialmente aquellas que implican la transferencia de fondos, se debe tener especial cuidado y realizar una auditoría de seguridad completa.
Al tomar estas medidas, se puede reducir significativamente el riesgo de que los contratos inteligentes sean atacados, mejorando la seguridad y estabilidad del proyecto. En el ecosistema Web3, garantizar la seguridad de los contratos es crucial para mantener la confianza de los usuarios y la seguridad de los activos.
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.
20 me gusta
Recompensa
20
7
Republicar
Compartir
Comentar
0/400
NftRegretMachine
· 08-09 01:43
Ataque de reentrada nuevamente
Ver originalesResponder0
AirDropMissed
· 08-08 20:39
¿El auditor está aturdido?
Ver originalesResponder0
TokenVelocity
· 08-07 01:39
Sin palabras, me han estafado.
Ver originalesResponder0
LiquidatedNotStirred
· 08-06 03:45
La vulnerabilidad de reentrada es realmente dolorosa.
OrionProtocol sufrió un ataque de reentrada, con pérdidas de 2.9 millones de dólares en encriptación.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, una plataforma DEX sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato en Ethereum y Binance Smart Chain, con una pérdida total de aproximadamente 2.9 millones de dólares en activos criptográficos, que incluía 2,844,766 USDT en Ethereum y 191,606 BUSD en Binance Smart Chain.
Resumen del proceso de ataque
El atacante primero implementó un contrato de token personalizado y realizó las operaciones de transferencia y autorización correspondientes. Luego, el atacante tomó prestados fondos a través de la función de intercambio de algún DEX y llamó al método swapThroughOrionPool de la plataforma objetivo para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato de token creado por el atacante, lo que le permitió ejecutar operaciones de callback durante el proceso de transacción.
Durante el proceso de intercambio, el atacante aprovechó la función de callback en el contrato de token que creó, llamando repetidamente al método depositAsset de la plataforma objetivo, lo que llevó a una acumulación del monto depositado. Finalmente, el atacante completó la obtención de ganancias a través de una operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos por el ataque, 657.5 ETH 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 de la vulnerabilidad se encuentra en la función doSwapThroughOrionPool. Esta función actualiza la variable curBalance después de realizar la transferencia de tokens, pero no considera el posible riesgo de ataque de reentrada. Un atacante logró realizar una llamada de reentrada a la función depositAsset al agregar lógica de callback en la función transfer del token personalizado, lo que provocó que la variable curBalance se actualizara incorrectamente.
Reproducción de ataques
Los investigadores han logrado reproducir el proceso de ataque y han proporcionado el código POC correspondiente. Los resultados de las pruebas muestran que los atacantes pueden obtener fondos adicionales aprovechando las vulnerabilidades del contrato.
Consejos de seguridad
Para los contratos inteligentes con funcionalidad de intercambio de tokens, los desarrolladores deben considerar los siguientes puntos:
Al tomar estas medidas, se puede reducir significativamente el riesgo de que los contratos inteligentes sean atacados, mejorando la seguridad y estabilidad del proyecto. En el ecosistema Web3, garantizar la seguridad de los contratos es crucial para mantener la confianza de los usuarios y la seguridad de los activos.