Análisis profundo: Ataque de manipulación del NAV del préstamo relámpago de Morpho después del desacoplamiento de USR

robot
Generación de resúmenes en curso

Escribir artículo: Espinaca Espinaca

El 22 de marzo de 2026, el protocolo Resolv sufrió una filtración de claves privadas, y un atacante acuñó de la nada 80 millones de USR sin respaldo, lo que provocó que USR cayera de $1 a $0.025.

Las secuelas de esta catástrofe no solo afectaron a los poseedores de USR, sino que un grupo de personas más inteligentes llevó a cabo un ataque de manipulación de NAV en Morpho.

Este artículo desglosará paso a paso la lógica subyacente de este ataque.

  1. Primero, entender la arquitectura de Morpho

Antes de hablar del ataque, debes entender el diseño de la arquitectura de Morpho, de lo contrario no entenderás nada después.

El mundo de Morpho se divide en dos capas:

Capa base:

Morpho Blue (también llamado Morpho Core). Es un protocolo de préstamo minimalista e inactualizable. Su filosofía de diseño es “sin permisos”: cualquier persona puede crear un mercado de préstamos, depositar, prestar y liquidar.

Cada mercado se determina por cinco parámetros únicos: activo de préstamo, activo de garantía, línea de liquidación (LLTV), dirección del oráculo y modelo de tasa de interés.

Los mercados están completamente aislados; un problema en uno no afectará a los demás.

Capa superior:

MetaMorpho Vault (bóveda). Es una bóveda estándar ERC-4626, equivalente a un “producto de fondo”.

Los usuarios depositan USDC en la bóveda, y el administrador de la bóveda (Curator) se encarga de distribuir estos fondos en diferentes mercados Morpho Blue para prestar y ganar intereses.

Los usuarios poseen participaciones en la bóveda (shares), cuyo valor aumenta con los intereses acumulados.

Fórmula clave — Valor Neto por Acción (NAV / Precio por Acción): Valor Neto por Acción = totalAssets / totalSupply

totalAssets es la suma de las posiciones de suministro en todos los mercados (incluidos los préstamos, ya que son “cuentas por cobrar”). totalSupply es el total de participaciones emitidas por la bóveda. Cuando se acumulan intereses, totalAssets crece pero totalSupply permanece igual, por lo que el valor por acción aumenta — esa es la forma en que ganas dinero.

  1. supply(onBehalf) — Cualquier persona puede aportar fondos en nombre de la bóveda

Este es el primer punto clave del ataque.

En Morpho Blue, la función supply() tiene un parámetro onBehalf. La intención de este diseño es facilitar pagos por terceros, por ejemplo, contratos de estrategia automatizados que depositan fondos en nombre del usuario.

Pero es completamente sin permisos: cualquiera puede especificar cualquier dirección como onBehalf, incluyendo la dirección de la bóveda.

La documentación oficial de Morpho advierte claramente: “Warning: Anyone can supply on behalf of the vault so the call to updateWithdrawQueue that expects a market to be empty can be griefed by a front-run.”

Cuando tú aportas 10,000 USDC en nombre de la bóveda, la posición de suministro en ese mercado aumenta en 10,000 y totalAssets también aumenta en 10,000. Pero el total de participaciones (totalSupply) no cambia — porque nadie ha depositado fondos nuevos usando deposit().

Resultado: el valor por acción se eleva.

Normalmente, esto equivale a “donar” dinero a la bóveda — tú aumentas las ganancias para todos los accionistas a costa de tu propio dinero, lo cual solo un tonto haría. Pero en condiciones específicas, esto puede ser explotado.

  1. Supply Cap = 0 ≠ Seguridad

Tras la despegue de USR, algunos administradores de bóvedas ajustaron rápidamente el Supply Cap del mercado USR/USDC a 0, lo que significa que ya no pueden aportar fondos a ese mercado. ¿Parece que el problema se resolvió?

El problema es que: el Supply Cap es una restricción a nivel de la bóveda, no a nivel de Morpho Blue.

El administrador de la bóveda puede controlar la función interna _supplyMorpho() de la bóveda.

Pero supply(onBehalf=vault) interactúa directamente con el contrato principal de Morpho Blue, saltándose toda la lógica a nivel de la bóveda: la cola de suministro, el límite de suministro, la verificación de permisos del asignador, todo eso se omite.

Para entenderlo mejor: el administrador cierra la puerta principal (Cap=0), pero el atacante puede meter dinero directamente por la puerta trasera de Morpho Core.

  1. Oráculo codificado — La ropa invisible de las malas deudas

Este es el segundo punto clave.

El mercado USR/USDC tiene un oráculo fijado en 1:1. Es decir, sin importar cuánto caiga USR en el mercado externo, en el mundo de Morpho, 1 USR siempre equivale a 1 USDC.

¿Por qué el administrador usa un oráculo fijo? Porque USR es una “stablecoin”, y en condiciones normales su precio fluctúa poco. Un oráculo fijo evita “liquidaciones falsas” causadas por la falta de liquidez a corto plazo.

Pero cuando USR realmente se despegó, el oráculo fijo se convirtió en un desastre: los prestatarios usaron USR sin valor como garantía para pedir USDC en cantidad, y el protocolo no se enteró.

El mecanismo de gestión de malas deudas de Morpho falla aquí: las versiones V1.0 y V1.1 dependen de que el protocolo pueda detectar malas deudas en tiempo real.

Pero si el oráculo está codificado, no puede detectar nada.

  1. Flujo completo del ataque — Ciclo de cinco pasos

Ahora que se cumplen todas las condiciones, las siguientes operaciones atómicas se realizan en una sola transacción:

[Se omite la lista de pasos específicos en el texto original, pero en resumen, involucra la manipulación de supply(onBehalf), ajuste del oráculo, y la creación de USR falso para inflar el totalAssets y obtener beneficios desproporcionados.]

  1. ¿Por qué se necesita un flash loan?

Este es un aspecto que a menudo se pasa por alto. La ganancia del ataque proviene de “inflar el totalAssets y distribuir la ganancia proporcionalmente a las participaciones”. Si el atacante no obtiene un flash loan, tendrá una participación del 0%, y aunque aumente el totalAssets, la ganancia se distribuirá entre otros, y él no obtendrá nada.

  1. ¿Quién pierde dinero?

El USR adicional de 12,300 USDC no aparece de la nada. Este dinero proviene de la liquidez real en otros mercados saludables de la bóveda.

Al retirar fondos, la bóveda extrae USDC en orden de la cola de retiro de cada mercado. Como en el mercado USR ya no hay USDC disponible (ha sido prestado), no puede retirar fondos allí. En cambio, obtiene fondos de otros mercados, como wETH/USDC, cbBTC/USDC, etc.

  1. La acumulación de tres vulnerabilidades

Este ataque no se basa en una sola vulnerabilidad, sino en la combinación de tres problemas de diseño:

[Se omiten detalles específicos, pero en resumen, la combinación de permisos sin restricciones, oráculos codificados y control insuficiente del límite de suministro.]

Conclusión

La filosofía de diseño minimalista de Morpho — sin permisos, inactualizable, con gobernanza mínima — suele ser una ventaja. Pero este incidente demuestra que el costo de un diseño minimalista es que se delega mayor responsabilidad a los participantes de nivel superior.

El protocolo no realiza validación del oráculo, por lo que los administradores deben hacerlo por sí mismos. La falta de restricciones en supply(onBehalf) requiere protección adicional en la capa de la bóveda.

Para los depositantes, “elegir un buen Curator” es más importante que “elegir Morpho”. El protocolo es solo una herramienta; su seguridad depende de quién la use.

MORPHO-3,79%
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
Añadir un comentario
Añadir un comentario
Sin comentarios
  • Anclado