Se robaron más de 1.900 ETH y cómo piratearon Radiant Capital para robar 4,5 millones de dólares

ForesightNews

El 3 de enero de 2024, el proyecto Radiant Capital sufrió un ataque de préstamo rápido por parte de un atacante. El atacante robó más de 1.900 ETH a través de 3 transacciones, por un valor de más de 4,5 millones de dólares estadounidenses. Los fondos robados todavía están almacenados en la dirección del atacante .

Escrito por: Beosin

El 3 de enero de 2024, según el seguimiento realizado por la plataforma de bloqueo, alerta temprana y monitoreo de riesgos de seguridad EagleEye de Beosin, el proyecto **Radiant Capital sufrió un ataque de préstamo rápido por parte de un atacante. El atacante robó más de 1.900 ETH a través de 3 transacciones, por un valor de más de 4,5 millones de dólares estadounidenses. Los fondos robados todavía están almacenados en la dirección del atacante. **El equipo de seguridad de Beosin analizó este incidente de inmediato.

Análisis de vulnerabilidad

La causa principal de este incidente es que el proyecto Radiant Capital utilizó expansión de precisión y redondeo en el proceso de calcular el número de tokens, lo que permitió al atacante expandir las ganancias controlando la precisión y combinándola con el redondeo. Haga clic para atacar. **

Al observar el código anterior, la función rayDiv pasa dos datos uint256 a y b. Todo el proceso se puede abreviar como (a*RAY+b/2)/b, donde RAY son los datos extendidos de precisión, que son 10^27 , Entonces el resultado es bastante En a*RAY/b+0.5, se implementa la función de redondeo y el error de este método de cálculo proviene principalmente de b. Si b es extremadamente pequeño en relación con a, entonces el error será insignificante. pero si b tiene el mismo orden de magnitud que a, entonces el error puede alcanzar a a mismo.

Por ejemplo: si a*RAY=10000, b=3, entonces el resultado calculado es 3333, que es 1/10000 menor que el valor real; y si a*RAY=10000, b=3000, el resultado calculado es 3, 1/10 más pequeño que el valor real.

En este incidente, el atacante manipuló el valor de b para que el valor de b y el valor de a tengan el mismo orden de magnitud, haciendo que el cálculo sea equivalente a 3/2.0001=1, y el valor calculado es 1/3 menor que el valor real.

Proceso de ataque

Echemos un vistazo al proceso de ataque del hacker:

  1. El atacante primero pidió prestados 3 millones de USDC a través del préstamo rápido de AAVE, que se utilizó para financiar el ataque.

  1. El atacante prometió 2 millones de USDC al contrato Radiant y obtuvo 2 millones de tokens de certificado rUSDCn.

  1. El atacante realiza un préstamo rápido a través del contrato Radiant, toma prestados 2 millones de USDC, devuelve los 2 millones de USDC en la función de devolución de llamada y extrae el USDC prometido en el segundo paso. Finalmente, la función de préstamo rápido llamará a la función transferfrom con interés Transfiera el USDC del atacante al contrato. **En este momento, se cobrará una tarifa de manejo de 9/10000 y la tarifa de manejo cobrada se convertirá en la liquidez del grupo. **

  1. Al repetir el paso 3 muchas veces, el atacante controla que el liquidityIndex sea muy grande, liquidityIndex=2718000000009999999999999998631966035920.

  1. A continuación, el atacante crea un nuevo contrato y coloca 543,600 USDC en él, **porque 5436 (valor en USDC) es exactamente el doble de 2718 (valor del índice de liquidez) en el paso 4, que se puede controlar fácilmente mediante redondeo. **

  1. El atacante hipotecó los 543.600 USDC en el contrato Radiant y obtuvo la misma cantidad de rUSDCn.

  1. El atacante extrajo 407.700 USDC, lo que debería haber destruido 407.700 rUSDCn, pero como se mencionó anteriormente, la función de grabación realizó cálculos de redondeo y expansión de precisión.

407700000000000000000000000000000000000000000/271800000000999999999999998631966035920=1.49999999, y el resultado del redondeo es 1, lo que hace que el resultado sea 1/3 más pequeño.

Como se muestra en la imagen a continuación, se deberían haber destruido 407,700 USDC, pero quedaron 271,800, lo que indica que solo se destruyeron 271,800 y el atacante retiró 407,700 USDC.

  1. El atacante aprovecha la vulnerabilidad en el paso 7 para repetir la operación de retiro de promesa, y el retiro siempre es 1/3 mayor que el monto de la promesa, y finalmente intercambia todos los USDC en el grupo. **

Seguimiento de fondos

Al cierre de esta edición, los 1.902 ETH robados se han almacenado en la dirección del hacker y no se han movido. Beosin Trace continuará monitoreando los fondos. **

A principios de 2024, ya hemos sido testigos de dos casos de robos a gran escala. (Revisión de los incidentes de seguridad de ayer: ¿Qué pasó con el primer caso del año, el incidente de Orbit Chain robado por valor de 80 millones de dólares?) Esta serie de eventos nos recuerda una vez más que en el ecosistema Web3, las precauciones de seguridad siguen siendo ¡muy importantes! **

Aviso legal: La información de esta página puede proceder de terceros y no representa los puntos de vista ni las opiniones de Gate. El contenido que aparece en esta página es solo para fines informativos y no constituye ningún tipo de asesoramiento financiero, de inversión o legal. Gate no garantiza la exactitud ni la integridad de la información y no se hace responsable de ninguna pérdida derivada del uso de esta información. Las inversiones en activos virtuales conllevan riesgos elevados y están sujetas a una volatilidad significativa de los precios. Podrías perder todo el capital invertido. Asegúrate de entender completamente los riesgos asociados y toma decisiones prudentes de acuerdo con tu situación financiera y tu tolerancia al riesgo. Para obtener más información, consulta el Aviso legal.
Comentar
0/400
Sin comentarios