Viendo cómo el jefe de onekey defiende sus derechos en Resupply, lamentando la pérdida de varios millones en activos, me doy cuenta de que DeFi es realmente muy frágil. He mirado a mi alrededor y parece que nadie ha explicado claramente cómo fue atacado el hacker, así que hice un poco de investigación y lo comparto con todos: El protagonista de la historia es ResupplyPair, donde los usuarios pueden pedir prestados activos mediante el staking. El modificador isSolvent en el contrato se encarga de verificar si el usuario es elegible para solicitar el activo prestado, y la lógica del código es la siguiente: Se puede ver que en la línea 282 se calcula el ltv. Si encontramos una manera de establecer _exchangeRate en 0, ¿no se cumpliría la verificación de forma constante? Sigamos leyendo el código: Se puede observar que este valor proviene de la llamada al oráculo getPrices, y es el denominador, en otras palabras, necesitamos hacer que el precio del colateral sea extremadamente alto. Al leer el código del oráculo, se puede saber que getPrices es solo una capa de reenvío, y en realidad llama a la interfaz convertToAssets de este activo en staking (es decir, la tesorería). Sigamos leyendo el código: Se puede ver que este resultado está compuesto por cálculos matemáticos muy complejos. Aquí, el hacker amplificó el numerador, y más adelante, total_assets, completando el ataque. Al revisar la implementación de la función _total_assets, se puede descubrir que: Este valor está relacionado con el borrowed_token que posee el contrato controller de esta tesorería, que es crvUSD. Hasta aquí, el análisis es bastante claro. ResupplyPair se creó utilizando una tesorería vacía, y el hacker transfirió una cierta cantidad de borrowed_token al contrato controller de la tesorería, lo que finalmente hizo que _exchangeRate se redujera a cero, amplificando así el valor de sus activos en staking de manera infinita, y pidiendo prestado hasta 10 millones de reUSD con un costo extremadamente bajo. Transacción del ataque: Dirección del contrato ResupplyPair: Dirección del contrato controller de la tesorería: Dirección del contrato de la tesorería: Dirección del contrato del oráculo:
Mostrar original
68,34 mil
307
El contenido de esta página lo proporcionan terceros. A menos que se indique lo contrario, OKX no es el autor de los artículos citados y no reclama ningún derecho de autor sobre los materiales. El contenido se proporciona únicamente con fines informativos y no representa las opiniones de OKX. No pretende ser un respaldo de ningún tipo y no debe ser considerado como un consejo de inversión o una solicitud para comprar o vender activos digitales. En la medida en que la IA generativa se utiliza para proporcionar resúmenes u otra información, dicho contenido generado por IA puede ser inexacto o incoherente. Lee el artículo vinculado para obtener más detalles e información. OKX no es responsable del contenido alojado en sitios de terceros. El holding de activos digitales, incluyendo stablecoins y NFT, implican un alto grado de riesgo y pueden fluctuar en gran medida. Debes considerar cuidadosamente si el trading o holding de activos digitales es adecuado para ti a la luz de tu situación financiera.