Witnet Smart Contracts Resultados de la auditoría de seguridad

Los contratos inteligentes de Witnet han pasado por una auditoría de seguridad externa, en preparación para Mainnet.

Los contratos inteligentes Ethereum de Witnet son la puerta de entrada a la red Witnet, y con la seguridad de las aplicaciones que dependen de Witnet en juego, deben ser a prueba de balas. Con eso en mente, los siguientes pasos son críticos durante nuestro proceso de desarrollo:

Fuente abierta: Todo el código y la investigación desarrollados en Witnet son de código abierto. Como resultado, cualquier miembro de la comunidad puede contribuir revisando por pares y alertando a la comunidad sobre posibles vulnerabilidades tanto a nivel de protocolo como a nivel de código.Pruebas, pruebas y más pruebas: Probar todo el código es un condición necesaria (pero no suficiente) para fusionar cualquier solicitud de extracción. Por lo tanto, todo el código se somete a un exhaustivo conjunto de pruebas que se ejecuta en cada impulso en las acciones de Travis y GitHub.Revisiones de código de pares: Como parte de nuestro proceso de desarrollo, cualquier solicitud de extracción enviada a los repositorios de Witnet pasa por varias revisiones de otros miembros de la comunidad antes de que pueda comprometerse con el repositorio.Auditorías internas: Una vez que el código se considera estable (es decir, no ha habido cambios significativos durante las últimas iteraciones), se realiza una exhaustiva auditoría de seguridad interna mediante el uso de herramientas de análisis estático como MythX o SmartCheck.Auditorias externas: Finalmente, la comunidad ha elegido contratar Red4Sec (después de un largo proceso de decisión) para realizar auditorías de seguridad externas de los contratos inteligentes.

La comunidad le pidió a Red4Sec que realizara un análisis de los componentes centrales de la infraestructura que permiten la interacción entre Witnet y Ethereum. Estos componentes forman parte de las siguientes bibliotecas criptográficas y contratos inteligentes:

En particular, se solicitó una auditoría exhaustiva de las medidas de seguridad del contrato inteligente para identificar posibles errores en el diseño, la configuración o la programación. Los objetivos principales son garantizar la confidencialidad, integridad y disponibilidad de la información visitada, tratada y almacenada.

Red4Sec se sumergió profundamente en el Protocolo de red Witnet y sus contratos inteligentes, revisando los aspectos técnicos del ecosistema completo. El informe posterior incluyó 19 vulnerabilidades clasificado en los siguientes niveles de riesgo según el nivel de impacto definido por CVSS (Sistema de puntuación de vulnerabilidad común).

Resumen de vulnerabilidades de auditoría de seguridad

El informe completo de la auditoría de seguridad externa se puede encontrar aquí.

Después de numerosas discusiones con los auditores, Witnet definió un plan de mitigación al producir una respuesta técnica para cada vulnerabilidad (cuando sea posible) junto con una solicitud de extracción que soluciona o mitiga cada problema. La mayoría de ellos fueron fáciles de abordar siguiendo las recomendaciones sugeridas por Red4Sec, mientras que otros requirieron más discusiones y correcciones de código más largas.

Algunos de los más interesantes (clasificados como críticos):

Repetir ataque de prueba de inclusión (PoI): una vulnerabilidad que permitió a los atacantes informar una solicitud de datos anterior como un resultado válido para solicitudes de datos idénticas ejecutadas en un momento posterior. El problema se solucionó retirando la última época de bloques de Witnet de Block Relay y asegurando que el ciclo de vida de la solicitud de datos siempre se complete después de que haya pasado esa época.Condición de carrera en la Junta de Solicitud de Witnet: una vulnerabilidad que permitía a cualquier usuario de Ethereum escuchar las transacciones de inserción de resultados, copiarlas y reclamar las recompensas sin realizar ningún trabajo. El problema se ha mitigado asegurando que solo los nodos legítimos puedan informar resultados (es decir, nodos que han demostrado hacer un trabajo reciente y son miembros del Active Bridge Set).Drenaje de fondos del contrato en Witnet Request Board: Esta vulnerabilidad describe una posible fuga de fondos si los resultados de longitud cero se publican en la red Witnet. Como esto indicaría un resultado no válido, se incluyó una protección para garantizar que los resultados no sean de longitud cero.

El plan completo de mitigación, que detalla el procedimiento para corregir estas vulnerabilidades, se puede encontrar aquí.

Un agradecimiento especial a Gorka y Thomas, ya que esta publicación es un esfuerzo común entre nosotros 3.