Análisis del ataque de reentrada por Flash Loans al proyecto Jarvis Network
El 15 de enero de 2023, el proyecto Jarvis_Network fue atacado, perdiendo 663,101 MATIC. Este ataque aprovechó principalmente los Flash Loans y una vulnerabilidad de reentrada, lo que llevó a la pérdida de fondos del proyecto.
Al analizar la pila de llamadas de la transacción, se descubrió que el atacante llevó a cabo un ataque de reentrada en la función remove_liquidity. Esta función es responsable de eliminar la liquidez y devolver los tokens al usuario. Debido a que Polygon tiene una estructura similar a la cadena EVM, se activó la reentrada del contrato durante el proceso de transferencia de MATIC.
El ataque de reentrada ocurre en la etapa de consulta de precios. Cuando el atacante retira liquidez, MATIC se transfiere al contrato del atacante. Durante el proceso de callback, el atacante consulta primero el precio de un token. Debido a que la actualización de la variable self.D en el contrato se retrasa respecto a la operación de transferencia, se produce un error en la obtención del precio inicial.
El flujo de ejecución de la función remove_liquidity es el siguiente:
Destruir los tokens LP de los usuarios
Enviar fondos de participación al usuario
Actualizar la variable self.D
self.D variable se utiliza para el cálculo de precios y se actualiza tanto al agregar como al retirar liquidez. Un atacante aprovechó una operación de grandes fondos, lo que llevó a un aumento significativo del valor de self.D al agregar liquidez, mientras que no se actualizó a tiempo al retirar.
Aunque la función remove_liquidity utiliza el decorador @nonreentrant('lock') para prevenir reentradas, un atacante logró eludir esta restricción mediante préstamos intercontractuales.
Este ataque expuso las vulnerabilidades de seguridad en el código del proyecto. Para evitar problemas similares, se recomienda que el equipo del proyecto tome las siguientes medidas:
Realizar auditorías de seguridad estrictas
Colocar la operación de modificación de la variable antes de la llamada externa
Utilizar múltiples fuentes de datos para la obtención de precios
Seguir la norma de codificación "Checks-Effects-Interactions"
A través de la optimización de la lógica del código y el refuerzo de las medidas de seguridad, se puede mejorar eficazmente la seguridad y estabilidad del proyecto, evitando que ataques similares ocurran nuevamente.
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.
23 me gusta
Recompensa
23
9
Compartir
Comentar
0/400
MEV_Whisperer
· 07-22 15:42
Esta olla solo puede ser soportada por el desarrollo.
Ver originalesResponder0
AirdropCollector
· 07-22 15:27
Una vez que lo ves, ya no quieres comprarlo.
Ver originalesResponder0
GateUser-e87b21ee
· 07-20 04:01
El equipo detrás del proyecto no está protegiendo adecuadamente.
Ver originalesResponder0
StakeOrRegret
· 07-19 19:17
Otra empresa de proyectos ha sido desmantelada...
Ver originalesResponder0
ZenMiner
· 07-19 19:09
¿Qué está haciendo este guardia?
Ver originalesResponder0
LayerZeroEnjoyer
· 07-19 19:09
Ay, otra vez la reentrada, el mismo truco.
Ver originalesResponder0
LiquidityOracle
· 07-19 19:05
¿Quién dijo que no se toma en serio escribir código?
Ver originalesResponder0
DecentralizedElder
· 07-19 19:01
Una vez más me han hackeado, realmente no aprendo.
La red Jarvis sufrió un ataque de reentrada mediante Flash Loans, con una pérdida de 663,101 MATIC.
Análisis del ataque de reentrada por Flash Loans al proyecto Jarvis Network
El 15 de enero de 2023, el proyecto Jarvis_Network fue atacado, perdiendo 663,101 MATIC. Este ataque aprovechó principalmente los Flash Loans y una vulnerabilidad de reentrada, lo que llevó a la pérdida de fondos del proyecto.
Al analizar la pila de llamadas de la transacción, se descubrió que el atacante llevó a cabo un ataque de reentrada en la función remove_liquidity. Esta función es responsable de eliminar la liquidez y devolver los tokens al usuario. Debido a que Polygon tiene una estructura similar a la cadena EVM, se activó la reentrada del contrato durante el proceso de transferencia de MATIC.
El ataque de reentrada ocurre en la etapa de consulta de precios. Cuando el atacante retira liquidez, MATIC se transfiere al contrato del atacante. Durante el proceso de callback, el atacante consulta primero el precio de un token. Debido a que la actualización de la variable self.D en el contrato se retrasa respecto a la operación de transferencia, se produce un error en la obtención del precio inicial.
El flujo de ejecución de la función remove_liquidity es el siguiente:
self.D variable se utiliza para el cálculo de precios y se actualiza tanto al agregar como al retirar liquidez. Un atacante aprovechó una operación de grandes fondos, lo que llevó a un aumento significativo del valor de self.D al agregar liquidez, mientras que no se actualizó a tiempo al retirar.
Aunque la función remove_liquidity utiliza el decorador @nonreentrant('lock') para prevenir reentradas, un atacante logró eludir esta restricción mediante préstamos intercontractuales.
Este ataque expuso las vulnerabilidades de seguridad en el código del proyecto. Para evitar problemas similares, se recomienda que el equipo del proyecto tome las siguientes medidas:
A través de la optimización de la lógica del código y el refuerzo de las medidas de seguridad, se puede mejorar eficazmente la seguridad y estabilidad del proyecto, evitando que ataques similares ocurran nuevamente.