-
La codificación del contrato DS-Chief permitía a terceros emitir votos “fantasmas”.
-
El equipo ya realizó una actualización del contrato para corregir la falla.
Un informe, publicado este 9 de mayo por la empresa de seguridad en blockchains Zeppelin, señala que la falla que se presentó hace unos días en el sistema de votación para la gobernanza de MakerDAO se debió a una vulnerabilidad presente en el funcionamiento del contrato inteligente, implementado para el proceso de votaciones.
Al respecto, el equipo señala en su documento que el sistema de votación utiliza un contrato de la librería DappHub, identificado como DS-Chief. Acota que este contrato era el componente central del sistema de gobernanza de MakerDAO y al momento de identificar la vulnerabilidad ya tenía más de USD 100 millones en activos bloqueados, como parte del proceso.
Según explica el equipo, este contrato proporciona dos interfaces diferentes para votar: una por direcciones y otra por hash. De esta forma, cuando se emite un voto para una lista de direcciones, el hash se calcula y se almacena en el contrato, en un procedimiento que se denomina grabado. Después de ello, se emite la votación (codificada en el contrato como una aprobación).
Agregan los investigadores que la falla se presentó porque el sistema estaba permitiendo que la votación se realizara con hashes no grabados, con lo cual no era posible asociar una determinada dirección a un hash. En consecuencia, las funciones vinculadas con el registro de las votaciones y el bloqueo de tokens, al no encontrar direcciones asociadas con el hash, no agregaba aprobaciones al sistema y generaba un desequilibrio que podía ser usado de manera malintencionada.
El informe detalla la forma cómo podía ser atacado el sistema mediante un exploit, señalando que un atacante podría votar por una lista no grabada generando votos “fantasmas” sin aprobaciones, los cuales se sumarían luego a los votos genuinos, bloqueando así los fondos de estos participantes.
Como solución a este problema, identificado inicialmente el pasado 26 de abril, el equipo de Zeppelin, junto a MakerDao y Coinbase, procedió a programar una actualización con un nuevo contrato, codificado para que la votación ocurra solo con hashes grabados. Para ejecutar esta actualización, previamente se solicitó a los usuarios retirar sus tokens MKR del contrato de votación. En ese sentido, se aconseja a los 50 usuarios que no han hecho el retiro, migrar sus tokens MKR a este contrato.
Así mismo, tanto los investigadores de Zeppelin como el equipo de Coinbase alertan sobre esta vulnerabilidad a otros proyectos que utilizan el contrato DSChief. Sobre ello, Coinbase también emitió un comunicado en el cual detalla el proceso de revisión que se hizo del contrato de MakerDAO y hace algunas consideraciones en relación al manejo del sistema de seguridad de los contratos inteligentes. En particular, recomienda que “cualquiera que escriba un código de contrato inteligente de producción, haga de la revisión integral de la seguridad de terceros una parte regular de su ciclo de vida de desarrollo”.