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 № 087Reentrancy

Reentrada ERC-677 en Voltage Finance

El mercado de préstamos Fuse de Voltage perdió $4M cuando el hook transferAndCall de tokens ERC-677 permitió reentrar a borrow antes de registrar la deuda.

Fecha
Cadena(s)
Estado
Fondos robados

El 31 de marzo de 2022, Voltage Finance — una suite DeFi en la Red Fuse — perdió aproximadamente $4 millones de su mercado de préstamos mediante una reentrada ERC-677. El fork de Voltage de un contrato de préstamos estilo Compound soportaba tokens ERC-677, cuyo callback transferAndCall permitía a un atacante re-entrar a la función de préstamo antes de que su deuda fuera registrada.

Qué ocurrió

El mercado de préstamos de Voltage aceptaba varios tokens como colateral, incluyendo tokens ERC-677. ERC-677 extiende ERC-20 con una función transferAndCall — cuando se transfieren tokens, el hook onTokenTransfer del contrato receptor es invocado, permitiendo al receptor ejecutar código arbitrario durante la transferencia.

El contrato de préstamos seguía el patrón estándar (vulnerable): enviar los tokens prestados al prestatario, luego actualizar la contabilidad de deuda del prestatario. Con un token ERC-677, el paso de "enviar tokens prestados" activaba el callback onTokenTransfer del prestatario antes de que la deuda fuera registrada.

El ataque:

  1. Usó un token ERC-677 en la ruta de préstamo.
  2. Llamó a borrow — el contrato envió los tokens prestados, disparando el callback onTokenTransfer del atacante.
  3. Desde dentro del callback — antes de que la deuda del primer préstamo fuera registrada — el atacante re-entró a borrow de nuevo, contra colateral que el contrato aún veía como no comprometido.
  4. Hizo un bucle de la reentrada, acumulando fondos prestados sin deuda registrada correspondiente.
  5. Se marchó con ~$4M.

Consecuencias

  • Voltage Finance pausó el mercado de préstamos y publicó un post-mortem identificando la reentrada ERC-677 como causa raíz.
  • Se desplegó un plan de compensación; la recuperación del atacante fue mínima.

Por qué importa

Voltage Finance es parte del linaje de reentrada por tokens con callbacks habilitados — la misma clase estructural que el exploit AMP de Cream Finance (ERC-777 tokensReceived). La lección recurrente:

Los estándares de token con callbacks de transferencia (ERC-777, ERC-677, ERC-1363 y otros) rompen las suposiciones de reentrada que valen para ERC-20 plano. Un contrato de préstamos o bóveda que es seguro frente a reentrada para tokens ERC-20 puede ser completamente explotable en el momento en que acepta un token con callback habilitado, porque el paso de "transferencia" ahora ejecuta código controlado por el atacante a mitad de la operación.

Las respuestas defensivas:

  1. Aplica guardias de reentrada a cada ruta que muta estado que realice transferencias de tokens — no selectivamente, y no bajo la suposición de que "las transferencias ERC-20 no llaman de vuelta" (cierto para ERC-20 plano, falso para las extensiones con callback habilitado).
  2. Audita el estándar real de cada token listado, no solo "¿tiene interfaz ERC-20?". Muchos tokens implementan ERC-20 más una extensión de callback; la extensión es la superficie de ataque.
  3. Sigue checks-effects-interactions rigurosamente — registra la deuda antes de enviar los tokens prestados, para que una llamada reentrante vea el estado actualizado.

Voltage es una de las entradas de menor pérdida del catálogo, pero es una instancia limpia de una lección que el ecosistema sigue reaprendiendo a lo largo de años y cadenas: el token que listas determina tu superficie de reentrada, y los tokens con callback habilitado son un modelo de amenaza diferente al ERC-20 plano.

Fuentes y evidencia on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-voltage-finance-hack-march-2022
  2. [02]voltage-finance.medium.comhttps://voltage-finance.medium.com/voltage-finance-incident-post-mortem-1f9d0b8c4a9e
  3. [03]rekt.newshttps://rekt.news/voltage-finance-rekt

Registros relacionados