Saltar al contenido
Est. MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archivo de incidentes de seguridad en criptomonedas — hackeos, exploits, fallos de puentes y rug pulls, documentados con evidencia on-chain.

Expediente № 186Ataque con flash loan

MigrateTroveZap en Prisma Finance

$11 M drenados del ayudante de migración de Trove de Prisma Finance tras saltarse migrate() y llamar a flashloan() directamente, luego exigió una disculpa.

Fecha
Cadena(s)
Estado
Fondos robados

El 28 de marzo de 2024 a las 11:25 UTC, el protocolo de stablecoin respaldado por LSD Prisma Finance perdió aproximadamente $11,6 millones cuando un atacante explotó el contrato auxiliar MigrateTroveZap — una utilidad construida para permitir a los usuarios migrar sus posiciones de Trove entre versiones de contrato en una sola transacción atómica.

Qué ocurrió

El MigrateTroveZap de Prisma fue diseñado para agilizar las migraciones de los antiguos contratos TroveManager a los nuevos. El flujo previsto:

  1. El usuario llama a migrate() en el Zap con su antigua posición de Trove.
  2. El Zap toma un préstamo flash de la deuda pendiente del usuario.
  3. Usa los fondos del préstamo flash para cerrar el antiguo Trove y reclamar el colateral.
  4. Abre un nuevo Trove con el mismo colateral y deuda en el nuevo TroveManager.
  5. Usa los fondos prestados del nuevo Trove para reembolsar el préstamo flash, todo en una transacción.

El Zap exponía tanto el punto de entrada de alto nivel migrate() como la función receptora flashloan() subyacente que el proveedor de préstamos flash llamaba de vuelta. Se suponía que el receptor solo se activaría cuando se llamara desde dentro de migrate(), pero el receptor no validaba que hubiera sido invocado a través del flujo de migración.

El atacante:

  1. Llamó a flashloan() directamente con datos de entrada cuidadosamente elaborados.
  2. Manipuló los parámetros de posición de modo que el colateral en la "nueva posición" fuera diferente del colateral en la "antigua posición" en una cantidad controlada.
  3. Se embolsó la diferencia cuando la migración "se completó" con contabilidad desajustada.

Pérdida neta: 3.257 ETH ($11 M) drenados de propietarios de Trove en múltiples posiciones.

Consecuencias

  • Prisma pausó los contratos afectados y desplegó un Zap arreglado con validación adecuada del llamador.
  • El atacante entabló diálogo on-chain con el deployer de Prisma, enmarcando el exploit como un "rescate white-hat" y exigiendo una disculpa pública del equipo de Prisma antes de liberar los fondos — una postura inusual.
  • Más de $2,5 M fueron enviados a Tornado Cash durante la negociación, socavando significativamente el encuadre white-hat.
  • Restitución parcial ocurrió mediante acuerdo on-chain; el grueso de la pérdida nunca fue recuperado.

Por qué importa

El incidente de Prisma ilustra un patrón recurrente de DeFi: las funciones callback de préstamos flash son parte de la frontera de confianza. Si un contrato expone un callback que cualquier proveedor de préstamos flash puede activar, ese callback debe validar su propio llamador y contexto — no solo confiar en que se usó el punto de entrada legítimo. La misma clase de bug se repite en cada protocolo que integra préstamos flash mediante hooks estilo callback sin verificaciones explícitas de contexto del llamador.

El episodio Prisma es también un ejemplo notable de postura de atacante durante negociación — la demanda pública de una disculpa fue lo suficientemente inusual como para ser discutida ampliamente, pero el movimiento paralelo de fondos a Tornado Cash dejó claro que el encuadre "white-hat" era oportunista.

Fuentes y evidencia on-chain

  1. [01]hackmd.iohttps://hackmd.io/@PrismaRisk/PostMortem0328
  2. [02]blog.cube3.aihttps://blog.cube3.ai/2024/03/28/prisma-finance-hack-crypto-exploit-analysis-postmortem-11-million/
  3. [03]theblock.cohttps://www.theblock.co/post/285776/prisma-finance-hacker-defends-exploit-demands-public-apology

Registros relacionados