El 5 de marzo de 2024, el exchange descentralizado WOOFi perdió aproximadamente $8,75 millones en su despliegue en Arbitrum tras que un atacante explotara el algoritmo de creación de mercado proactiva sintética (sPMM) del proyecto. La causa próxima: el oráculo de precios del token WOO estaba configurado a la dirección cero — Chainlink nunca había sido configurado para ese token — por lo que el sPMM aceptaba cualquier precio extremo al que el atacante lo empujara.
Qué ocurrió
El algoritmo sPMM de WOOFi fue diseñado para dar a los usuarios DEX una ejecución estilo CEX poniendo precio dinámicamente a las operaciones contra un oráculo de referencia. Cada token en el sistema se suponía que tenía un feed de precios de Chainlink configurado a través de una función admin para que el sPMM pudiera comprobar la sanidad de los precios que generaba.
Para el token WOO en sí — el activo nativo del protocolo — la función admin que establecía el oráculo Chainlink nunca había sido llamada. La dirección del oráculo permaneció en su valor por defecto: address(0). Cuando el sPMM consultaba el precio de referencia de WOO, no obtenía límite utilizable — y aceptaba lo que fuera que el cálculo interno del algoritmo produjera, sin importar lo extremo.
El ataque:
- Pidió préstamo flash de ~7,7M WOO más varios otros tokens.
- Vendió el WOO en WOOFi, empujando el precio interno de WOO del sPMM hacia cero mediante volcados repetidos.
- Sin oráculo para limitar el cálculo, el precio interno del sPMM cayó a esencialmente cero.
- Intercambió 10M WOO fuera de WOOFi en la misma transacción, pagando casi nada por el precio interno manipulado.
- Repitió tres veces en 13 minutos.
Beneficio neto tras devolver los préstamos flash: ~$8,75M.
Consecuencias
- WOOFi pausó el contrato sPMM v2 afectado durante aproximadamente dos semanas mientras lanzaba una versión arreglada con configuración de oráculo adecuada.
- Se ofreció al atacante una recompensa white-hat del 10% por la devolución de los fondos; sin devolución.
- El protocolo absorbió la pérdida desde reservas del equipo y la tesorería.
Por qué importa
WOOFi es uno de los casos de estudio más claros de por qué "el oráculo es el límite de confianza" solo aplica si el oráculo está realmente conectado. El código sPMM era correcto. La integración del oráculo era correcta. El script de despliegue que llama a la función admin para establecer el oráculo de cada nuevo token se omitió para WOO — y el sistema degradó silenciosamente a "confía en los números internos del algoritmo" en lugar de "verifica contra una fuente externa".
La lección — que los scripts de despliegue deben ser comprobados en su completitud, de extremo a extremo, contra las precondiciones documentadas del protocolo — ha impulsado el empuje más amplio hacia:
- Chequeos de invariantes post-despliegue que verifican cada valor de configuración esperado antes de que los contratos entren en producción.
- Guardias de inicialización que hacen revert hasta que toda la configuración requerida ha sido establecida.
- "Listas de verificación" de despliegue aplicadas en código — patrones de modificadores que evitan que las funciones privilegiadas sean llamables hasta que la configuración esté completa.
Un protocolo puede pasar cada auditoría y aun así lanzarse a producción con un oráculo sin establecer. La práctica defensiva es hacer eso imposible a nivel de contrato, no confiar en la disciplina operativa por sí sola.
Fuentes y evidencia on-chain
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-woofi-hack-march-2024
- [02]cyfrin.iohttps://www.cyfrin.io/blog/hack-analysis-into-woofi-exploit
- [03]woox.iohttps://woox.io/en/blog/woofi-spmm-exploit-post-mortem