Préstamo flash en Harvest Finance
Treinta bucles de manipulación en Curve YPool con un préstamo flash de 50 M$ USDC extrajeron 24 M$ de Harvest Finance; el exploit causó un bank run de 570 M$.
- Fecha
- Víctima
- Harvest Finance
- Cadena(s)
- Estado
- Parcialmente recuperado
El 26 de octubre de 2020, un atacante drenó aproximadamente 24 millones de dólares de Harvest Finance ejecutando 30 iteraciones de un bucle de manipulación de precio en Curve-YPool. El exploit también disparó un bank run de 570 M$ conforme los depositantes corrían a retirar antes de que el protocolo se viera totalmente comprometido: uno de los primeros eventos de "corrida DeFi" registrados.
Qué ocurrió
Harvest Finance era un agregador de yield. Sus vaults fUSDC y fUSDT depositaban los fondos de los usuarios en la Curve YPool para ganar yield, y Harvest fijaba el precio de sus tokens f usando la tasa spot dentro de la YPool en el momento del depósito y retiro.
El atacante se dio cuenta de que este precio en tiempo de lectura podía ser manipulado por cualquiera que pudiera mover los saldos internos de YPool en la misma transacción. Con un préstamo flash de 50 M$ USDC de Uniswap, hicieron:
- Intercambió USDC → USDT dentro de YPool, empujando el precio efectivo de USDT bruscamente hacia arriba.
- Depositó USDC en el vault de Harvest: Harvest usó el precio manipulado de YPool para acuñar
fUSDC, acreditando al atacante con másfUSDCdel valor real del depósito. - Revirtió la manipulación de YPool intercambiando USDT de vuelta a USDC.
- Retiró el
fUSDCpor más USDC del que había depositado originalmente, neteando aproximadamente 600.000 $ por ciclo. - Repitió 17 veces en el vault USDC y 13 veces en el vault USDT, y se marchó.
Beneficio total: 24 M$. El atacante devolvió 2,4 M$ voluntariamente al protocolo a posteriori; los fondos fueron luego barridos por Tornado Cash y convertidos a BTC.
Consecuencias
- La noticia del exploit disparó el bank run de 570 M$: depositantes en pánico retiraron casi dos tercios del TVL de Harvest en horas, mucho más que la pérdida real.
- Harvest caracterizó el incidente como un "error de ingeniería" más que un hackeo verdadero, aunque la mayoría de los observadores vio ese encuadre como negación.
- Harvest parcheó la lógica de precios y reembolsó a los usuarios afectados con ingresos del protocolo durante los meses siguientes.
Por qué importa
Harvest es uno de los incidentes canónicos tempranos de la era de los préstamos flash en DeFi. Demostró:
- Leer precios desde un pool manipulable en la misma transacción es inseguro, punto: toda la clase de "usa la tasa spot actual dentro del AMM que acabas de tocar" es explotable.
- Los bank runs en DeFi son reales: una vez sacudida la confianza en la solvencia de un protocolo, los depositantes saldrán más rápido de lo que cualquier equipo pueda comunicar, y la pérdida secundaria para el protocolo puede empequeñecer la primaria.
Los oráculos ponderados en el tiempo y los feeds de precio desacoplados siguen siendo la respuesta actual; el incidente de Harvest es una de las razones por las que existen.
Fuentes y evidencia on-chain
- [01]slowmist.medium.comhttps://slowmist.medium.com/slow-mist-analysis-of-harvest-finances-hacked-event-63450b49e6a5
- [02]coindesk.comhttps://www.coindesk.com/tech/2020/10/26/harvest-finance-24m-attack-triggers-570m-bank-run-in-latest-defi-exploit
- [03]decrypt.cohttps://decrypt.co/46445/engineering-error-34-million-defi-hack-harvest-finance