Mint infinito en Cover Protocol
Un bug Solidity storage/memory en el Blacksmith de Cover acuñó 40 trillones de COVER, hundiendo el precio de $700 a menos de $5. White-hat devolvió fondos.
- Fecha
- Víctima
- Cover Protocol
- Cadena(s)
- Estado
- Recuperado
El 28 de diciembre de 2020, el protocolo de seguro DeFi Cover Protocol sufrió un exploit de mint infinito que produjo más de 40 trillones de tokens COVER desde su contrato de minería de liquidez Blacksmith. El precio del token colapsó de ~$700 a menos de $5 en cuestión de horas. El atacante — Grap.Finance, alegando motivación white-hat — devolvió todos los fondos con un mensaje público que decía "La próxima vez, ocupaos vosotros de vuestras propias mierdas." Total drenado y devuelto: ~$9,4M.
Qué ocurrió
El contrato Blacksmith de Cover manejaba las recompensas de minería de liquidez: los usuarios hacían staking de tokens LP y acumulaban recompensas COVER con el tiempo. El contrato rastreaba la deuda de recompensa de cada usuario usando una variable de estado que comparaba el estado actual del pool con el checkpoint del último reclamo del usuario.
El bug vivía en cómo Solidity manejaba las referencias de memory frente a storage para una variable de estado crítica usada en el cálculo de recompensas. Específicamente: el contrato asignaba un struct desde storage a una variable de memory, modificaba la copia en memory, y asumía que los cambios persistirían — pero en la semántica de Solidity, una copia en memory es un valor separado que no escribe de vuelta a storage automáticamente.
El atacante se dio cuenta de que el bug le permitía activar acumulaciones de recompensa contra estado obsoleto repetidamente — cada llamada acumulando recompensas COVER adicionales como si la mutación de estado del reclamo anterior nunca se hubiera escrito. Encadenando la operación, acuñó 40.000.000.000.000.000.000 (40 trillones) de tokens COVER, abrumando completamente el suministro legítimo.
Consecuencias
- El token COVER se desplomó aproximadamente un 97% en una hora conforme el suministro recién acuñado se vendía vía 1inch y otros agregadores DEX.
- Binance suspendió el trading de COVER en cuestión de horas tras el exploit.
- El atacante — Grap.Finance, un proyecto DeFi separado — reclamó públicamente la responsabilidad vía Twitter, afirmó que el ataque era una demostración white-hat, y devolvió todos los fondos robados a un multisig controlado por Cover.
- El mensaje de Grap.Finance — "La próxima vez, ocupaos vosotros de vuestras propias mierdas" — se convirtió en un momento citado en la cultura de seguridad DeFi y fue ampliamente citado como un ejemplo de operaciones white-hat como rendición de cuentas comunitaria.
- Cover Protocol anunció una migración de token a un contrato rediseñado con manejo apropiado de memory/storage; el proyecto nunca recuperó plenamente su posición de mercado previa al incidente y fue eventualmente adquirido por Yearn Finance.
Por qué importa
El incidente de Cover es uno de los casos más claros de cómo la semántica memory/storage de Solidity es una fuente perenne de bugs de alto impacto. La separación del lenguaje entre storage (persistente, cuesta gas) y memory (transitorio, más barato) es esencial para contratos eficientes, pero el sistema de tipos no advierte al desarrollador cuando asignar un struct de storage a una variable de memory produce una copia en lugar de una referencia. Los bugs de esta clase han producido exploits en:
- Cover Protocol (dic 2020) — mint infinito.
- bZx (sept 2020) — bug relacionado de manejo de memory en lógica de préstamo flash.
- Múltiples incidentes más pequeños a lo largo de 2021-2024.
Las respuestas defensivas incluyen:
- Analizadores estáticos (Slither, Echidna) que marcan asignaciones sospechosas de storage a memory.
- Reglas de linting que requieren palabras clave
storageomemoryexplícitas en cada referencia. - Verificación formal de invariantes de mutación de estado.
La respuesta de Grap.Finance también estableció un patrón que se volvió más común con el tiempo: otros proyectos DeFi actuando como policía de seguridad informal explotando bugs en protocolos y devolviendo los fondos, en parte como PR y en parte como un intento genuino de demostrar vulnerabilidades antes de que actores maliciosos pudieran explotarlas. El patrón es contestado — normaliza "compromete primero, pregunta después" — pero ha salvado demostrablemente dinero real en múltiples ocasiones.
Fuentes y evidencia on-chain
- [01]mudit.bloghttps://mudit.blog/cover-protocol-hack-analysis-tokens-minted-exploit/
- [02]coindesk.comhttps://www.coindesk.com/markets/2020/12/28/cover-protocol-attack-perpetrated-by-white-hat-funds-returned-hacker-claims
- [03]nonseodion.medium.comhttps://nonseodion.medium.com/deep-dive-into-cover-protocols-december-28-2020-exploit-50e7966741c4