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 № 191Fallo de smart contract

Ataque de donación en Sonne Finance

Sonne Finance perdió $20M en Optimism por un 'ataque de donación', un exploit conocido de forks de Compound v2 al desplegar y sembrar un mercado.

Fecha
Cadena(s)
Estado
Fondos robados

El 14 de mayo de 2024, el protocolo de préstamos basado en Optimism Sonne Finance perdió aproximadamente $20 millones por un clásico "ataque de donación" — una clase de vulnerabilidad conocida en forks de Compound v2 que ha sumado más de $50M en pérdidas acumuladas en media docena de protocolos.

Qué ocurrió

El flujo de despliegue de mercado de Compound v2 tiene dos pasos:

  1. Desplegar un nuevo contrato de mercado (p. ej. cVELO para colateral VELO).
  2. Sembrar el mercado con un depósito inicial que establece el tipo de cambio entre el token subyacente y el cToken.

En un despliegue por lotes en una sola transacción, esto es seguro. Dividido en transacciones separadas en un entorno sin permisos, es explotable.

El proceso de listado de mercados de Sonne dividía el despliegue en múltiples transacciones para acomodar el flujo de gobernanza. Entre los dos pasos:

  1. El atacante tomó un préstamo flash de 35,5M de VELO.
  2. Transfirió VELO directamente al contrato vacío soVELO (una "donación" — sin acuñación, solo una transferencia de tokens en bruto).
  3. El totalCash del contrato soVELO aumentó; su totalSupply de cTokens permaneció en cero.
  4. El primer depositante legítimo — o el propio atacante — podía entonces depositar un solo soVELO y ser acreditado con todo el saldo de totalCash, debido al cálculo roto del tipo de cambio en la función exchangeRateStored del fork de Compound v2 bajo condiciones donde el supply es distinto de cero pero los depósitos totales son derivados de cero.

Repitiendo la maniobra en múltiples mercados nuevos, el atacante drenó ~$20M en depósitos antes de que el equipo de Sonne se diera cuenta.

Consecuencias

  • El equipo de Sonne detectó el exploit aproximadamente 25 minutos después de la primera transacción de ataque.
  • Pausaron los mercados afectados y ofrecieron una recompensa white-hat del 10%. El atacante rechazó y blanqueó a través de Tornado Cash.
  • Sonne Finance finalmente cerró las operaciones de préstamo en Optimism.

Por qué importa

El ataque de donación en forks de Compound v2 ha sido documentado y parcheado en el repositorio canónico de Compound durante años. Cada fork que se lanza sin el lote integrado de despliegue de mercado — incluyendo Hundred Finance (dos veces), Midas Capital, Onyx Protocol y otros — ha sido o será explotado por el mismo patrón.

Es la ilustración más limpia de por qué forkear una base de código sensible a la seguridad no es lo mismo que heredar su seguridad: los forks necesitan rastrear los parches de seguridad upstream y sus suposiciones sobre cómo desplegar de forma segura. El coste de saltarse ese paso está bien documentado en dólares.

Fuentes y evidencia on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-sonne-finance-hack-may-2024
  2. [02]certik.comhttps://www.certik.com/resources/blog/sonne-finance-incident-analysis
  3. [03]medium.comhttps://medium.com/@SonneFinance/post-mortem-sonne-finance-exploit-12f3daa82b06

Registros relacionados