Fue durante el mes de mayo que el equipo del proyecto Augur solicitó a la empresa Zeppelin Solutions que realizara una auditoria de seguridad del compilador Serpent, lenguaje de programación para contratos de Ethereum en el que fue desarrollado Augur. La auditoría terminó esta semana y los resultados fueron publicados, resaltando 8 problemas críticos, 10 problemas graves y al menos otro 30 problemas de menor gravedad.
En el reporte realizado por Zeppelin Solutions, la misma compañía que recaudó este mes más de 250$ millones por medio de la venta de sus contratos, destacaron una lista de problemas que encontraron con el lenguaje Serpent, clasificándolos en críticos, altos, normales y bajos, de acuerdo a la gravedad del mismo.
Entre los críticos, encontraron 8 problemas que tienen que ser arreglados los más pronto posible. Los problemas mencionados por la empresa fueron:
– Muy baja calidad de la herramienta y el lenguaje, sumado a la falta de uso por desarrolladores, poco soporte y pruebas en la misma. Recomiendan de antemano, usar Solidity (otra herramienta de programación) por encima de esta.
– Desarrollo estancado, hace dos años que salió su ultima versión.
– No tiene ensayos. El proyecto auditado (Serpent) no tiene pruebas automatizadas, ni se le han desarrollado pruebas, lo que deja vulnerable a cualquier proyecto a sufrir bugs de regresión, problemas en el código ocasionados por cambios nuevos.
– Es un lenguaje sin tipificar. Este problema permite realizar cualquier operación con cualquier tipo de data, haciendo muy poco robusto este lenguaje y propenso a errores.
– Las sintaxis no validadas son aceptadas por el analizador y el compilador, permitiendo que se generen estructuras de códigos con errores, sin alertar al usuario sobre el mismo.
– El compilador no falla en variables no inicializadas, por ello cualquier error realizado por el desarrollador, no se verá reflejado sino dará un valor vacío, que genera una serie de errores.
– Se puede sobrescribir la ubicación de la memoria local cuando se accede a la matriz fuera de los límites.
El conjunto de errores en el código mantenían cerca de $200 millones de dólares de criptoactivos expuestos a ataques y robos.
Basado en los resultados de esta auditoría, el equipo de Augur decidió realizar un ataque controlado al contrato inteligente de su token (REP) desarrollado con Serpent, en el que editaron el tiempo de creación de su token, congelando cualquier movimiento indefinidamente. A su vez, comenzaron una migración de su contrato inteligente al lenguaje de programación Solidity y para la redacción de este artículo ya habían terminado de transferir todos los balances a las cuentas pre-existentes.
De acuerdo al equipo de Augur, el traslado de los fondos de REP ha sido exitosa y la migración de todos sus contratos inteligentes a Solidity tienen un estimado de al menos 6 semanas. Aun así, reportan haber presentado algunos inconvenientes con algunos usuarios de la casas de cambio EtherDelta y Oasis. Cabe destacar que, varias casas de cambio y carteras no han confirmado la actualización al nuevo contrato hasta el momento.
Las casas de cambio y compañías Poloniex, Kraken, Bittrex, Jaxx, Shapeshift, entre otras, anunciaron que actualizarían su software para acoplarse a las nuevas modificaciones en el contrato.
La información se conoce a la luz del reciente hackeo de las carteras escritas en el lenguaje Parity, que suma $32 millones de dólares. y que ha encendido las alarmas en cuanto a qué lenguajes de programación son mejores y más seguros.