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.
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.
Echemos un vistazo al proceso de ataque del hacker:






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.


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! **