El hack de $200,000 de UniLend: ¿Qué salió mal y cómo DeFi puede hacerlo mejor

Intermedio1/22/2025, 4:23:33 PM
UniLend fue explotado debido a una vulnerabilidad, lo que resultó en el robo de aproximadamente $200K (4% del TVL). El atacante utilizó un préstamo flash para depositar 60 millones de USDC, manipuló los cálculos de colateral y explotó un error en el contrato en el proceso de verificación de salud para inflar el valor del colateral, retirando 60 stETH. La falla se debió a la implementación defectuosa de la función userBalanceOfToken. UniLend ya ha solucionado el problema, pausado los depósitos de la versión 2 y ofrecido una recompensa para recuperar los fondos. Este incidente subraya la importancia crítica de la seguridad para las plataformas DeFi y la necesidad de auditorías exhaustivas de contratos inteligentes.

Introducción a UniLend

@UniLend_Finance es un protocolo de mercado monetario descentralizado sin permisos con servicios de préstamo y endeudamiento a través de contratos inteligentes.

UniLend permite a los usuarios utilizar sus criptomonedas mediante el suministro de garantías a la red que pueden ser prestadas mediante la promesa de criptomonedas con sobrecolateralización. Esto crea un entorno seguro de préstamos donde el prestamista recibe una tasa de interés compuesta anualmente (APY) pagada por bloque, mientras que el prestatario paga intereses sobre las criptomonedas prestadas.

Cómo funciona UniLend

El Protocolo UniLend V2 funciona a través de tres componentes técnicos principales:

1. Modelo de Doble Pool de Activos

UniLend utiliza pools de activos duales aislados para cada par ERC20/ERC20-compatible. Este diseño garantiza que el rendimiento o la volatilidad de un activo no afecte a otros, mejorando la seguridad y la estabilidad. La arquitectura permite a cualquier usuario crear y administrar pools de préstamos y préstamos para una amplia variedad de activos en múltiples blockchains.

2. Suministro y Préstamo

  • Suministro: Los usuarios depositan tokens ERC20 en piscinas designadas y reciben Tokens No Fungibles (NFT) que representan sus posiciones de liquidez únicas. Estos NFT almacenan detalles sobre los activos suministrados y pueden transferirse o canjearse según sea necesario. Los activos suministrados generan intereses variables en función de la utilización de la piscina y la demanda del mercado.
  • Préstamo: Para pedir prestado, los usuarios deben proporcionar criptomonedas sobrecolateralizadas. El protocolo aplica ratios de colateralización, ajustables a través de la gobernanza. Las cantidades prestadas acumulan intereses por bloque, determinados por la tasa de utilización del pool, asegurando que los préstamos permanezcan adecuadamente garantizados.

3. Modelo de Tasa de Interés

UniLend emplea un modelo dinámico de tasa de interés basado en la Relación de Utilización (U) del pool, calculada como:

Ux=BorrowxBorrowx+Cashx

Tasa de interés por préstamo:

La tasa de interés del préstamo es del 10%+(Ux×30%)

Las tasas aumentan con una mayor utilización para equilibrar la oferta y la demanda.

  • Tasa de interés de suministro:

Tasa de interés de suministrox=Tasa de interés de préstamox×Ux×(1−S)

Esto garantiza que los proveedores obtengan retornos sostenibles mientras el protocolo sigue siendo rentable.

Estos componentes trabajan juntos para crear un mercado monetario descentralizado seguro, eficiente y escalable.

Análisis de Ataque

El 12 de enero de 2025, se explotó una vulnerabilidad de seguridad en el protocolo UniLend, lo que resultó en la pérdida de aproximadamente $200,000 del grupo UniLend. El atacante manipuló los cálculos de los activos garantizados, lo que evaluó incorrectamente el factor de salud del usuario. Esta falla permitió al atacante retirar 60 tokens stETH sin garantía adecuada.

Los activos robados incluyeron 60 tokens stETH, aprovechando el cálculo erróneo de los saldos de tokens de los usuarios del protocolo.

Desglose detallado del ataque

1. Inicialización de la explotación

El atacante inició el exploit aprovechando un préstamo flash para depositar una gran cantidad de USDC en la piscina UniLend. Específicamente, depositaron 60 millones de USDC, inflando significativamente su garantía dentro de la piscina.

Los préstamos rápidos permiten a los usuarios pedir grandes cantidades de activos sin necesidad de garantía, siempre y cuando la cantidad prestada se devuelva en la misma transacción.

El atacante utilizó este mecanismo para obtener el USDC necesario sin capital inicial, creando así una posición artificialmente inflada dentro del pool.

2. Manipulación de los cálculos de colateral

Al depositar USDC, el atacante procedió a pedir prestados tokens stETH. El protocolo calcula el valor del colateral del usuario en función de su saldo de tokens dentro del pool. Sin embargo, debido a la implementación defectuosa, el saldo se calculó utilizando el saldo actual de tokens en el contrato del pool en lugar de la cantidad transferida real durante la verificación del factor de salud. Esta discrepancia hizo que el saldo de tokens del usuario pareciera significativamente más alto de lo que realmente era, especialmente en pools con gran liquidez.

La raíz de esta manipulación se encuentra en la función userBalanceOfToken. En escenarios donde la piscina tiene una liquidez sustancial, esta función puede devolver un alto lendBalance incluso cuando queda solo una pequeña parte de lend. Esta sobreestimación del saldo del usuario proporcionó al atacante la ilusión de tener más garantía de la que realmente poseía. En consecuencia, el atacante pudo pedir prestados tokens stETH más allá de su derecho legítimo basado en su garantía real.

3. Canjeando activos subyacentes

Con el valor inflado del colateral, el atacante procedió a canjear sus USDC y stETH. Se llamó a la función redeemUnderlying, que quemó los tokens LP asociados al depósito del usuario. Sin embargo, debido a la comprobación defectuosa del factor de salud que ocurre antes de la transferencia de tokens, el sistema creía que el usuario tenía suficiente colateral para retirar más de lo que le correspondía. Esta falla permitió al atacante retirar 60 tokens stETH sin mantener el colateral necesario, obteniendo efectivamente estos tokens de forma gratuita.

Cómo se podría haber prevenido el ataque

Para prevenir el ataque, UniLend debería haber reordenado las operaciones dentro de la función redeemUnderlying. Al realizar la comprobación del factor de salud después de transferir tokens al usuario, el protocolo garantizaría que el saldo real de tokens del usuario refleje con precisión su estado de garantía.

La seguridad de la cadena de bloques no es opcional. Proteja sus contratos inteligentes y protocolos DeFi con Three Sigma, un socio de seguridad confiable en auditorías de cadena de bloques, evaluaciones de vulnerabilidades de contratos inteligentes y seguridad Web3.

Hacer clic enObtenga su auditoría de contratos inteligentes hoy.

Consecuencias

La explotación de UniLend resultó en una pérdida financiera significativa de aproximadamente $200,000 del pool de UniLend. Esta pérdida substancial impactó directamente las reservas de la plataforma y redujo la liquidez disponible para otros usuarios, lo que podría interrumpir las actividades de préstamo y endeudamiento en curso.

La Respuesta del Protocolo UniLend

Tras el exploit, UniLend tomó medidas inmediatas para abordar la vulnerabilidad y tranquilizar a su base de usuarios.

Anunciaron una recompensa del 20% para la parte responsable por el retorno seguro de los fondos.

Direcciones

Transacción de ataque:

Dirección del explotador:

Dirección del núcleo UnilendV2:

Descargo de responsabilidad:

  1. Este artículo es una reproducción de [X]. Todos los derechos de autor pertenecen al autor original [ @threesigmaxyz]. Si hay objeciones a esta reimpresión, por favor contacta al Gate Aprenderequipo, y lo manejarán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son únicamente del autor y no constituyen ningún consejo de inversión.
  3. El equipo de Gate Learn realiza traducciones del artículo a otros idiomas. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

El hack de $200,000 de UniLend: ¿Qué salió mal y cómo DeFi puede hacerlo mejor

Intermedio1/22/2025, 4:23:33 PM
UniLend fue explotado debido a una vulnerabilidad, lo que resultó en el robo de aproximadamente $200K (4% del TVL). El atacante utilizó un préstamo flash para depositar 60 millones de USDC, manipuló los cálculos de colateral y explotó un error en el contrato en el proceso de verificación de salud para inflar el valor del colateral, retirando 60 stETH. La falla se debió a la implementación defectuosa de la función userBalanceOfToken. UniLend ya ha solucionado el problema, pausado los depósitos de la versión 2 y ofrecido una recompensa para recuperar los fondos. Este incidente subraya la importancia crítica de la seguridad para las plataformas DeFi y la necesidad de auditorías exhaustivas de contratos inteligentes.

Introducción a UniLend

@UniLend_Finance es un protocolo de mercado monetario descentralizado sin permisos con servicios de préstamo y endeudamiento a través de contratos inteligentes.

UniLend permite a los usuarios utilizar sus criptomonedas mediante el suministro de garantías a la red que pueden ser prestadas mediante la promesa de criptomonedas con sobrecolateralización. Esto crea un entorno seguro de préstamos donde el prestamista recibe una tasa de interés compuesta anualmente (APY) pagada por bloque, mientras que el prestatario paga intereses sobre las criptomonedas prestadas.

Cómo funciona UniLend

El Protocolo UniLend V2 funciona a través de tres componentes técnicos principales:

1. Modelo de Doble Pool de Activos

UniLend utiliza pools de activos duales aislados para cada par ERC20/ERC20-compatible. Este diseño garantiza que el rendimiento o la volatilidad de un activo no afecte a otros, mejorando la seguridad y la estabilidad. La arquitectura permite a cualquier usuario crear y administrar pools de préstamos y préstamos para una amplia variedad de activos en múltiples blockchains.

2. Suministro y Préstamo

  • Suministro: Los usuarios depositan tokens ERC20 en piscinas designadas y reciben Tokens No Fungibles (NFT) que representan sus posiciones de liquidez únicas. Estos NFT almacenan detalles sobre los activos suministrados y pueden transferirse o canjearse según sea necesario. Los activos suministrados generan intereses variables en función de la utilización de la piscina y la demanda del mercado.
  • Préstamo: Para pedir prestado, los usuarios deben proporcionar criptomonedas sobrecolateralizadas. El protocolo aplica ratios de colateralización, ajustables a través de la gobernanza. Las cantidades prestadas acumulan intereses por bloque, determinados por la tasa de utilización del pool, asegurando que los préstamos permanezcan adecuadamente garantizados.

3. Modelo de Tasa de Interés

UniLend emplea un modelo dinámico de tasa de interés basado en la Relación de Utilización (U) del pool, calculada como:

Ux=BorrowxBorrowx+Cashx

Tasa de interés por préstamo:

La tasa de interés del préstamo es del 10%+(Ux×30%)

Las tasas aumentan con una mayor utilización para equilibrar la oferta y la demanda.

  • Tasa de interés de suministro:

Tasa de interés de suministrox=Tasa de interés de préstamox×Ux×(1−S)

Esto garantiza que los proveedores obtengan retornos sostenibles mientras el protocolo sigue siendo rentable.

Estos componentes trabajan juntos para crear un mercado monetario descentralizado seguro, eficiente y escalable.

Análisis de Ataque

El 12 de enero de 2025, se explotó una vulnerabilidad de seguridad en el protocolo UniLend, lo que resultó en la pérdida de aproximadamente $200,000 del grupo UniLend. El atacante manipuló los cálculos de los activos garantizados, lo que evaluó incorrectamente el factor de salud del usuario. Esta falla permitió al atacante retirar 60 tokens stETH sin garantía adecuada.

Los activos robados incluyeron 60 tokens stETH, aprovechando el cálculo erróneo de los saldos de tokens de los usuarios del protocolo.

Desglose detallado del ataque

1. Inicialización de la explotación

El atacante inició el exploit aprovechando un préstamo flash para depositar una gran cantidad de USDC en la piscina UniLend. Específicamente, depositaron 60 millones de USDC, inflando significativamente su garantía dentro de la piscina.

Los préstamos rápidos permiten a los usuarios pedir grandes cantidades de activos sin necesidad de garantía, siempre y cuando la cantidad prestada se devuelva en la misma transacción.

El atacante utilizó este mecanismo para obtener el USDC necesario sin capital inicial, creando así una posición artificialmente inflada dentro del pool.

2. Manipulación de los cálculos de colateral

Al depositar USDC, el atacante procedió a pedir prestados tokens stETH. El protocolo calcula el valor del colateral del usuario en función de su saldo de tokens dentro del pool. Sin embargo, debido a la implementación defectuosa, el saldo se calculó utilizando el saldo actual de tokens en el contrato del pool en lugar de la cantidad transferida real durante la verificación del factor de salud. Esta discrepancia hizo que el saldo de tokens del usuario pareciera significativamente más alto de lo que realmente era, especialmente en pools con gran liquidez.

La raíz de esta manipulación se encuentra en la función userBalanceOfToken. En escenarios donde la piscina tiene una liquidez sustancial, esta función puede devolver un alto lendBalance incluso cuando queda solo una pequeña parte de lend. Esta sobreestimación del saldo del usuario proporcionó al atacante la ilusión de tener más garantía de la que realmente poseía. En consecuencia, el atacante pudo pedir prestados tokens stETH más allá de su derecho legítimo basado en su garantía real.

3. Canjeando activos subyacentes

Con el valor inflado del colateral, el atacante procedió a canjear sus USDC y stETH. Se llamó a la función redeemUnderlying, que quemó los tokens LP asociados al depósito del usuario. Sin embargo, debido a la comprobación defectuosa del factor de salud que ocurre antes de la transferencia de tokens, el sistema creía que el usuario tenía suficiente colateral para retirar más de lo que le correspondía. Esta falla permitió al atacante retirar 60 tokens stETH sin mantener el colateral necesario, obteniendo efectivamente estos tokens de forma gratuita.

Cómo se podría haber prevenido el ataque

Para prevenir el ataque, UniLend debería haber reordenado las operaciones dentro de la función redeemUnderlying. Al realizar la comprobación del factor de salud después de transferir tokens al usuario, el protocolo garantizaría que el saldo real de tokens del usuario refleje con precisión su estado de garantía.

La seguridad de la cadena de bloques no es opcional. Proteja sus contratos inteligentes y protocolos DeFi con Three Sigma, un socio de seguridad confiable en auditorías de cadena de bloques, evaluaciones de vulnerabilidades de contratos inteligentes y seguridad Web3.

Hacer clic enObtenga su auditoría de contratos inteligentes hoy.

Consecuencias

La explotación de UniLend resultó en una pérdida financiera significativa de aproximadamente $200,000 del pool de UniLend. Esta pérdida substancial impactó directamente las reservas de la plataforma y redujo la liquidez disponible para otros usuarios, lo que podría interrumpir las actividades de préstamo y endeudamiento en curso.

La Respuesta del Protocolo UniLend

Tras el exploit, UniLend tomó medidas inmediatas para abordar la vulnerabilidad y tranquilizar a su base de usuarios.

Anunciaron una recompensa del 20% para la parte responsable por el retorno seguro de los fondos.

Direcciones

Transacción de ataque:

Dirección del explotador:

Dirección del núcleo UnilendV2:

Descargo de responsabilidad:

  1. Este artículo es una reproducción de [X]. Todos los derechos de autor pertenecen al autor original [ @threesigmaxyz]. Si hay objeciones a esta reimpresión, por favor contacta al Gate Aprenderequipo, y lo manejarán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son únicamente del autor y no constituyen ningún consejo de inversión.
  3. El equipo de Gate Learn realiza traducciones del artículo a otros idiomas. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Empieza ahora
¡Registrarse y recibe un bono de
$100
!