Reentrada de staking en Visor Finance
El contrato de staking de Visor Finance perdió $8,2M por reentrada en delegateTransferERC20. VISR cayó 95% el mismo día; Visor migró a nuevo token.
- Fecha
- Víctima
- Visor Finance
- Cadena(s)
- Estado
- Parcialmente recuperado
El 21 de diciembre de 2021 a las 14:29 UTC, el protocolo activo de gestión de liquidez Visor Finance perdió aproximadamente $8,2 millones cuando un atacante explotó una reentrada en el contrato de staking del protocolo. Se robaron 8.812.958 tokens VISR; el precio de mercado del token cayó de aproximadamente $0,93 a $0,04 — un declive del 95% — mientras la narrativa de dilución y fallo del protocolo se asentaba.
Qué ocurrió
El contrato de staking de Visor permitía a los usuarios depositar y retirar VISR vía una interfaz externa — IVisor.delegateTransferERC20() — que el contrato de staking llamaba para mover tokens en nombre del usuario.
El comportamiento previsto de la función: el contrato de staking llama a delegateTransferERC20(), que llama de vuelta a la implementación suministrada por el usuario, que transfiere los tokens. El fallo era estructural: la implementación suministrada por el usuario podía re-entrar al contrato de staking antes de que la contabilidad de la llamada original se hubiera actualizado.
El ataque:
- El atacante desplegó un contrato implementando un
delegateTransferERC20()malicioso que, cuando era llamado por el contrato de staking de Visor, re-entraba a la función de retiro del contrato de staking. - La reentrada permitió al atacante retirar VISR múltiples veces contra el mismo saldo staked — cada re-entrada leía el saldo sin decrementar y aprobaba otro retiro.
- Drenó 8,8M de VISR en un solo bucle de transacción.
Consecuencias
- Visor pausó operaciones y anunció una migración de token a un nuevo contrato VISR — el VISR antiguo fue efectivamente anulado y se emitieron nuevos tokens a los poseedores legítimos según el snapshot previo al incidente.
- El equipo enfatizó que las posiciones y los hipervisores activos no se vieron afectados — la pérdida quedó contenida en el contrato de staking.
- El token VISR (y posteriormente, la evolución rebrandada Gamma Strategies del protocolo) se recuperó parcialmente durante el año siguiente.
Por qué importa
Visor es uno de una secuencia de incidentes de reentrada de finales de 2021 (Cream Finance AMP en agosto, Visor en diciembre, Fei/Rari en abril 2022) que re-establecieron una lección que la industria supuestamente había aprendido cinco años antes con The DAO: nunca confíes en un callback de un contrato externo durante la mutación de estado. La causa estructural — contratos de staking llamando a implementaciones de callback suministradas por el usuario sin guardias adecuados de reentrada — recurre cada vez que un diseño de protocolo favorece la flexibilidad de composabilidad sobre la estricta disciplina checks-effects-interactions.
La respuesta de migración de token también es instructiva: emitir un nuevo token y anular el antiguo es una remediación poderosa y controvertida que funciona solo cuando el protocolo controla un porcentaje significativo de liquidez y tiene legitimidad comunitaria para coordinar el intercambio. Los protocolos más pequeños no pueden lograrlo; los más grandes rara vez lo necesitan.
Fuentes y evidencia on-chain
- [01]cryptobriefing.comhttps://cryptobriefing.com/8-2m-lost-visor-finance-suffers-latest-defi-hack/
- [02]finance.yahoo.comhttps://finance.yahoo.com/news/visor-finance-suffers-another-defi-094645929.html
- [03]ihodl.comhttps://ihodl.com/topnews/2021-12-21/visor-finance-hacked-loses-over-8m-tokens/