El 3 de enero, el proyecto Radiant Capital sufrió un grave ataque de préstamo urgente, lo que resultó en la pérdida de 1.900 ETH (aproximadamente 4,5 millones de dólares). Radiant Capital es un protocolo descentralizado de préstamos entre cadenas que permite a los usuarios depositar y prestar varios activos en diferentes cadenas de bloques, eliminando silos de liquidez.
Según los datos de la cadena, el hacker aprovechó una ventana de tiempo para la activación de un nuevo mercado y un problema de redondeo en el código base de Compound/Aave para ejecutar un ataque de préstamo rápido. Este método de ataque se refiere a pedir prestada una gran cantidad de fondos, completar una serie de operaciones dentro de un bloque y luego devolver los fondos antes de que finalice el bloque para obtener ganancias.
Ataque de vulnerabilidad brevemente
Según informes de PeckShield y PeckShield, los atacantes explotaron una vulnerabilidad informática en Radiant Capital, lo que les permitió retirar grandes cantidades de USDC a precios bajos controlando la precisión y el redondeo. El USDC es una moneda estable cuyo valor está vinculado al dólar estadounidense y es uno de los activos comúnmente utilizados en los protocolos financieros descentralizados.
El proceso de ataque del atacante es el siguiente:
1. El atacante primero pidió prestados 3 millones de USDC a través del préstamo rápido de AAVE para utilizarlos como fondos iniciales para el ataque. Los préstamos flash se refieren a pedir prestado una gran cantidad de fondos, completar una serie de operaciones dentro de un bloque y luego devolver los fondos antes de que finalice el bloque para obtener ganancias.
2. El atacante prometió 2 millones de USDC al contrato Radiant y obtuvo 2 millones de tokens de certificado rUSDCn.
3. 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.
4. Al repetir el paso 3 muchas veces, el atacante controla que el liquidityIndex sea muy grande, liquidityIndex=271800000000999999999999998631966035920. LiquidityIndex es una variable utilizada en el contrato Radiant para registrar el crecimiento de la liquidez. Aumentará con la acumulación de tiempo e intereses.
5. 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.
6. El atacante hipotecó los 543.600 USDC en el contrato Radiant y obtuvo la misma cantidad de rUSDCn.
7. 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.
8. El atacante aprovecha la vulnerabilidad en el paso 7 para repetir la operación de retiro del compromiso, y el retiro siempre es 1/3 mayor que la cantidad prometida, y finalmente intercambia todos los USDC del grupo.
Los fondos actualmente no están en riesgo.
Radiant Capital reconoció el problema en su publicación oficial y dijo que había suspendido su mercado de préstamos en Arbitrum y que estaba investigando la causa y el impacto del incidente. Arbitrum es una solución de escalamiento de segunda capa que aumenta la velocidad de las transacciones y reduce los costos en Ethereum. Radiant Capital también declaró que actualmente ningún fondo de los usuarios está en riesgo y planea emitir un informe de detección y reanudar las operaciones una vez que se resuelva el problema.
Conclusión:
Este incidente nos recuerda una vez más que la seguridad de los protocolos financieros descentralizados es fundamental y debe ser auditada y probada continuamente para evitar posibles vulnerabilidades y ataques. Los usuarios también deben ser conscientes de los riesgos y participar únicamente en préstamos e inversiones en plataformas confiables. Aunque Radiant Capital sufrió grandes pérdidas, también mostró una actitud positiva y sentido de responsabilidad, esperando poder recuperarse y mejorar la seguridad y estabilidad de su protocolo lo antes posible. Al mismo tiempo, también espero que otros protocolos financieros descentralizados puedan aprender de este incidente, fortalecer sus propias precauciones de seguridad y brindar a los usuarios mejores servicios y experiencias. #RadiantCapital #黑客攻击