Volver al blog

Deposita Menos, Obtén Más: Detalles del Ataque a yCREDIT

Code Auditing
3 de enero de 2021
3 min de lectura

El 2 de enero de 2021 (hora de Beijing 07:25 am), nuestro sistema de monitoreo ThunderForecast reportó una serie de transacciones sospechosas hacia el contrato inteligente yCREDIT. Luego, utilizamos el sistema EthScope desarrollado por nuestro equipo de investigación para analizar estas transacciones y confirmar que todas las transacciones reportadas son maliciosas. En este blog, ilustramos los detalles del ataque.

Detalles

El ataque se debe a que la cantidad de tokens acuñados es inconsistente con la prevista. De esta manera, el atacante puede obtener muchos más tokens yCREDIT a un precio más bajo. Luego, estos tokens pueden venderse para obtener ganancias.

La función vulnerable se encuentra en la función _deposit del contrato StableYieldCredit.

A continuación, utilizaremos una transacción de ataque para ilustrar todo el proceso.

El atacante primero transfirió 1e-8 WBTC y 331.335 yCredit tokens al pool de pares WBTC-yCREDIT. Luego, el atacante depositó 0.5 WBTC en el contrato StableYieldCredit para lanzar el ataque.

Específicamente, el _value se calcula utilizando el amount (0.5) del token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC) basándose en el proveedor de oráculo de precios ChainLink (línea 480, _value es 1466786010075). La intención es calcular el valor del WBTC depositado en USD. Luego, el contrato transferirá la cantidad de tokens yCREDIT (_value - fee) a quien depositó el WBTC (el atacante). Esto se debe a que el valor de yCREDIT equivale a un USD (según el diseño del sistema). Todo está bien excepto que el atacante pierde una pequeña cantidad de fee.

Además, el contrato agregará el WBTC depositado al pool de pares WBTC-yCREDIT. Esto se debe a que si el WBTC depositado se bloquea en el contrato, perderá liquidez. Por ello, primero se calculó el valor del par de tokens (WBTC a yCREDIT) que se colocará en el pool. Este valor se calcula utilizando la función _addLiquidity. Básicamente, se calcula en función de las reservas existentes dentro del pool. Dado que el pool solo tiene 1e-8 WBTC y 331.335 yCREDIT tokens, el amountA calculado es 44 (amountB es 1466786010075). Eso significa que el atacante solo gasta 44e-8 WBTC (línea 485) y obtiene 14667.86010075 - fee = 14594.52080025 tokens yCREDIT (línea 493). Al mismo tiempo, una pequeña cantidad de WBTC (1e-8 + 44e-8) y (331.335 + 14667.86010075) tokens yCREDIT permanecen en el pool.

Para obtener ganancias, el atacante simplemente puede intercambiar los 14594.52080025 tokens yCREDIT obtenidos en los exchanges. Curiosamente, el proceso para obtener ganancias en esta transacción es mucho más complicado de lo necesario. También hemos observado una estrategia de ataque inteligente en otras transacciones.

Hay una serie de transacciones involucradas en el ataque, incluyendo (pero no limitándose a) las siguientes.

Actualización

2020/01/03: Hay un nuevo contrato inteligente que corrige la vulnerabilidad.

Cronología

  • 2021/01/01 23:25 UTC, los ataques fueron capturados por nuestro sistema
  • 2021/01/02 16:20 UTC, este blog es publicado
Apúntate para recibir las novedades
Pérdidas de ~5,57 millones USD: exploits de X100 Freezer y NEM | Resumen semanal de BlockSec
Security Insights

Pérdidas de ~5,57 millones USD: exploits de X100 Freezer y NEM | Resumen semanal de BlockSec

Este informe semanal cubre dos incidentes de seguridad ocurridos en Ethereum y BNB Chain durante el período 19/10/2026–25/10/2026. Examina una toma de control de la gobernanza de X100 Freezer financiada mediante un préstamo flash y un fallo en la liquidación de impuestos que afectó a un pool de liquidez de un token NEM en BNB Chain. Las pérdidas estimadas dentro del alcance del informe suman aproximadamente 5,57 millones USD: ~4,75 millones USD de la transacción representativa de X100 y ~820 mil USD del incidente del pool de NEM. El total excluye las extracciones posteriores de X100 reportadas por separado.

Pérdidas de aproximadamente 3,87 millones USD: hackeos de Autheo Network y UNCX | Resumen semanal de BlockSec
Security Insights

Pérdidas de aproximadamente 3,87 millones USD: hackeos de Autheo Network y UNCX | Resumen semanal de BlockSec

Este informe semanal cubre 3 incidentes de seguridad correspondientes al período 12/10/2026–18/10/2026, con pérdidas totales estimadas en aproximadamente 3,87 millones USD. Autheo Network sufrió una vulneración de clave privada con pérdidas de aproximadamente 1,76 millones USD; Qubic Wallet perdió aproximadamente 1,30 millones USD debido a la generación de una semilla débil; y los contratos Smart Token Vesting V2 de UNCX Network sufrieron un error contable con pérdidas de aproximadamente 807 mil USD en Ethereum, BNB Chain, Base y Robinhood Chain. El análisis destacado de UNCX explica cómo un cálculo agregado de participaciones defectuoso mezcló tramos de adquisición de derechos creados con distintas proporciones entre tokens y participaciones, lo que permitió retiros excesivos de pools compartidos.

Pérdidas de ~542.000 dólares: explotación de MakerDaoBot | Resumen semanal de BlockSec
Security Insights

Pérdidas de ~542.000 dólares: explotación de MakerDaoBot | Resumen semanal de BlockSec

Ethereum (05–11/10/2026): 1 incidente; pérdida estimada de $542 mil. MakerDaoBot, sin control de acceso, dio a un adaptador malicioso acceso a sus saldos MakerDAO. Este cerró 4 subastas ETH-A y convirtió 200 ETH-A en WETH; el atacante los cambió por 200 ETH y se los envió.

El mejor auditor de seguridad para Web3

Valida el diseño, el código y la lógica de negocio antes del lanzamiento, siguiendo los estándares de seguridad más exigentes del sector.

Auditoría de BlockSec