Análisis del ataque de reentrada de Flash Loans a Jarvis Network
El 15 de enero de 2023, el proyecto Jarvis_Network sufrió un importante ataque que resultó en la pérdida de 663,101 MATIC. Este ataque utilizó una combinación de Flash Loans y técnicas de reingreso, exponiendo graves vulnerabilidades en el contrato del proyecto.
El atacante aprovechó astutamente una vulnerabilidad en la función remove_liquidity. Esta función devuelve los tokens que el usuario añadió al retirar liquidez. Dado que la cadena Polygon es compatible con EVM, cuando se transfieren MATIC al contrato, se activa la lógica de reentrada del contrato.
El análisis revela que la clave del ataque radica en la llamada a la función getUnderlyingPrice. Esta función devuelve precios significativamente diferentes antes y después de la reentrada: 1002157321772769944 antes de la reentrada y 10091002696492234934 después, con una diferencia de casi 10 veces.
La raíz del problema radica en el momento inapropiado de la actualización de la variable self.D en el contrato. El orden de ejecución de la función remove_liquidity es: 1) destruir los tokens LP del usuario; 2) enviar los fondos apostados al usuario; 3) actualizar self.D. El atacante realizó una reentrada en el segundo paso, aprovechando el valor de self.D que aún no se había actualizado para obtener información de precios incorrecta, lo que le permitió realizar operaciones de préstamo lucrativas.
Aunque la función remove_liquidity utiliza el decorador @nonreentrant('lock') para prevenir la reentrada, esta medida de protección no funcionó debido a que el ataque involucró operaciones entre contratos.
Este evento destaca varios principios clave de seguridad:
Las modificaciones de variables deben completarse antes de la llamada externa para evitar inconsistencias en el estado.
El mecanismo de obtención de precios debe adoptar un enfoque de múltiples fuentes de datos para aumentar la fiabilidad.
La lógica del código debe seguir el patrón "Checks-Effects-Interactions"(, es decir, primero realizar la verificación de condiciones, luego modificar las variables de estado y finalmente hacer las llamadas externas.
![Análisis del evento de ataque por reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-a0f03c13dd2d37ba67ccf538fec62aa0.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-fcd66f4cc03bb8e822c9414526681442.webp(
![Análisis del evento de ataque por reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
Este ataque demuestra una vez más que la auditoría de seguridad de los contratos inteligentes es crucial. Los equipos de proyecto deben prestar más atención a la seguridad de los contratos, asegurándose de que el código haya pasado por una revisión exhaustiva y rigurosa para prevenir la aparición de vulnerabilidades similares.
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(
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.
Jarvis Network sufrió un ataque de reentrada de Flash Loans, perdiendo 66 mil MATIC.
Análisis del ataque de reentrada de Flash Loans a Jarvis Network
El 15 de enero de 2023, el proyecto Jarvis_Network sufrió un importante ataque que resultó en la pérdida de 663,101 MATIC. Este ataque utilizó una combinación de Flash Loans y técnicas de reingreso, exponiendo graves vulnerabilidades en el contrato del proyecto.
El atacante aprovechó astutamente una vulnerabilidad en la función remove_liquidity. Esta función devuelve los tokens que el usuario añadió al retirar liquidez. Dado que la cadena Polygon es compatible con EVM, cuando se transfieren MATIC al contrato, se activa la lógica de reentrada del contrato.
El análisis revela que la clave del ataque radica en la llamada a la función getUnderlyingPrice. Esta función devuelve precios significativamente diferentes antes y después de la reentrada: 1002157321772769944 antes de la reentrada y 10091002696492234934 después, con una diferencia de casi 10 veces.
La raíz del problema radica en el momento inapropiado de la actualización de la variable self.D en el contrato. El orden de ejecución de la función remove_liquidity es: 1) destruir los tokens LP del usuario; 2) enviar los fondos apostados al usuario; 3) actualizar self.D. El atacante realizó una reentrada en el segundo paso, aprovechando el valor de self.D que aún no se había actualizado para obtener información de precios incorrecta, lo que le permitió realizar operaciones de préstamo lucrativas.
Aunque la función remove_liquidity utiliza el decorador @nonreentrant('lock') para prevenir la reentrada, esta medida de protección no funcionó debido a que el ataque involucró operaciones entre contratos.
Este evento destaca varios principios clave de seguridad:
![Análisis del evento de ataque por reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-a0f03c13dd2d37ba67ccf538fec62aa0.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-fcd66f4cc03bb8e822c9414526681442.webp(
![Análisis del evento de ataque por reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
Este ataque demuestra una vez más que la auditoría de seguridad de los contratos inteligentes es crucial. Los equipos de proyecto deben prestar más atención a la seguridad de los contratos, asegurándose de que el código haya pasado por una revisión exhaustiva y rigurosa para prevenir la aparición de vulnerabilidades similares.
![Análisis del evento de ataque de reentrada de Flash Loans de Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(