PELIGRO: Vulnerabilidades Criptográficas En IOTA

in #blockchain7 years ago

PELIGRO: Vulnerabilidades Criptográficas En IOTA

El mes pasado

Ethan Heilman, Tadge Dryja, Madars Virza y yo echamos un vistazo a IOTA, actualmente la octava cripto moneda más grande con un tope de mercado de $1.9B. En sus repositorios en GitHub, encontramos una vulnerabilidad seria - los desarrolladores de IOTA habían escrito su propia función hash, Curl, y producía colisiones. Una vez que desarrollamos nuestro ataque, pudimos encontrar colisiones usando hardware de productos básicos en pocos minutos, y falsificar firmas en los pagos de la IOTA. Informamos a los desarrolladores de la IOTA, ellos corrigieron su sistema y escribimos un informe de vulnerabilidad. La versión actual de IOTA no tiene las vulnerabilidades que encontramos, pero hay más que decir sobre cómo sucedió esto y qué está pasando con las cripto monedas en este momento.

¿Quién es responsable de investigar la tecnología de cripto-divisas?

El espacio de cripto-divisas se está calentando - Protocol Labs recaudó $200 millones para Filecoin, Bancor recaudó $150 millones y Tezos recaudó $232 millones. Algunos están anunciando esto como un nuevo modelo de financiación: una nueva forma de monetizar las redes y aplicaciones distribuidas. Estoy entusiasmado con la tecnología subyacente, pero insisto en que se tenga mucho cuidado con las OCIs. La SEC ya ha emitido advertencias, suspendido el comercio tradicional de las compañías que realizan ventas simbólicas, y ha causado que una compañía revierta su ICO.

Aunque la tecnología es emocionante, la debida diligencia requerida para hacer inversiones sólidas en la tecnología no está a la altura del ritmo de la publicidad. Aparte del riesgo financiero, no creo que los desarrolladores e inversores estén evaluando a fondo estos sistemas técnicamente tampoco. Muchos inversores confían en la señalización - si suficientes instituciones bien conocidas como universidades o grandes empresas se inscriben como inversores o asesores, esto indica la aprobación del proyecto y su software. El problema es que algunas de estas tecnologías tienen serios problemas, y las grandes empresas y personas conocidas no están haciendo la debida diligencia e invirtiendo los recursos y el tiempo necesarios para evaluar los proyectos con los que se asocian, o no están compartiendo sus hallazgos con todos los demás. El espacio criptográfico todavía no tiene una buena forma de evaluar estos proyectos.

Un primer ejemplo de esto fue el DAO. Slock.it enumeró a los curadores que aprobaron las propuestas de inversión en el sitio web. Parecía que esos conservadores -incluyendo prominentes investigadores de Ethereum como Vitalik Buterin, Gavin Wood y Vlad Zamfir- estaban parados detrás del código y el sistema. Pero los curadores no se dieron cuenta de que los usuarios verían su acuerdo para ayudar a la curaduría como aval y aprobación de todo el DAO. El DAO resultó tener una vulnerabilidad de seguridad mayor, y los usuarios perdieron sus Tokens hasta que la Fundación Ethereum intervino para revertir la pérdida.

Usted podría pensar que IOTA, una cripto moneda de más de mil millones de dólares, y trabajar con organizaciones como Microsoft, University College London, Innogy, y Bosch, BNY Mellon, Cisco, y Foxconn (a través de Trusted IOT Alliance) no tendría vulnerabilidades bastante obvias, pero desafortunadamente, ese no es el caso. Cuando echamos un vistazo a su sistema, encontramos una vulnerabilidad grave y un código inseguro en los libros de texto.

"En 2017, dejar tu algoritmo criptográfico vulnerable al análisis diferencial de criptación es un error de novato. Dice que nadie de ningún calibre analizó su sistema, y que las probabilidades de que su arreglo haga que el sistema sea seguro son bajas ", afirma Bruce Schneier, renombrado tecnólogo de seguridad, sobre IOTA cuando compartimos nuestro ataque.

Informe de vulnerabilidad

Descubrimos una vulnerabilidad en IOTA después de revisar su código en GitHub en julio. El 14 de julio, dimos a conocer lo que encontramos al equipo de la IOTA, y hemos estado en contacto con ellos desde entonces, a medida que descubrimos nuevos problemas y hazañas. La IOTA emitió un parche que aborda las vulnerabilidades que encontramos el 7 de agosto. La IOTA ya no tiene las vulnerabilidades que encontramos, han sido corregidas. Para obtener más información sobre los detalles de nuestro ataque, puede ver la divulgación completa y revisar nuestros ejemplos de ataque. Enviamos un borrador de este informe al equipo de la IOTA y nos dieron algunas sugerencias que consideramos en la versión que hoy compartimos. El equipo de la IOTA ha planteado objeciones más generales al informe y ha planteado si se trata de una vulnerabilidad que debería ser motivo de preocupación.

Por favor, no lances tu propia cripto.

Una función de cifrado hash toma una cantidad arbitraria de entrada y produce una salida impredecible con un tamaño fijo. La idea es que, dada una salida, es muy difícil encontrar una entrada que se ajuste a esa salida, y dada una entrada y salida, es muy difícil encontrar otra entrada que se asigne a la misma salida. Cuando dos entradas se asignan a la misma salida, eso se llama colisión. Ser capaz de encontrar fácilmente colisiones significa que la función criptográfica de hash está rota.

Las funciones criptográficas de hash son importantes para las criptografías, ya que normalmente una transacción se procesa antes de ser firmada. Por lo tanto, si se puede romper una función hash, es posible que también se puedan romper firmas, lo que significa que el mecanismo utilizado para determinar si una transacción es un gasto válido y autorizado se rompe. La integridad matemática que las cripto-divisas proporcionan depende de que esta relación sea segura.

La regla de oro de los sistemas criptográficos es "no lances tu propio criptograma" Si se le pregunta, cualquier investigador de seguridad le dirá que sólo use primitivas criptográficas bien entendidas y probadas cuando construya un sistema. Las funciones criptográficas hash, en particular, pasan por años de investigación y pruebas antes de que se las considere lo suficientemente robustas como para usarlas en software crítico. Por ejemplo, la competencia del SHA-3 tomó nueve años (desde 2006 hasta 2015) para criptoanalizar a fondo a los candidatos y seleccionar a Keccak como finalista.

Así que cuando nos dimos cuenta de que los desarrolladores de la IOTA habían escrito su propia función hash, era una enorme bandera roja. Probablemente debería haber sido una enorme bandera roja para cualquiera involucrado en la IOTA.

Problemas con la función hash de IOTA

Encontramos que la función de hash personalizado de la IOTA, Curl, es vulnerable a una técnica bien conocida para romper las funciones de hash llamada criptoanálisis diferencial, que luego usamos para generar colisiones prácticas. Usamos nuestra técnica para producir dos pagos en IOTA (ellos los llaman "fardos") que son diferentes, pero tienen el mismo valor, y por lo tanto tienen la misma firma. Usando nuestras técnicas, un mal actor podría haber destruido los fondos de los usuarios, o posiblemente, los fondos robados.

Una parte de la IOTA que no pudimos investigar, ya que el código no es código abierto, es su coordinador de confianza. Actualmente, el coordinador de confianza, que los desarrolladores de la IOTA dirigen y planean eliminar en el futuro, firma el último buen estado del sistema (según lo determine el coordinador). El coordinador podría prevenir algunos problemas causados por la colisión de transacciones, pero sin él, un atacante podría haber "bifurcado" potencialmente la maraña de la IOTA, dividida en dos piezas irreconciliables. No creemos que el coordinador hubiera evitado la quema de fondos de los usuarios o el robo de ataques porque la transacción original no es transmitida a la red, por lo que el coordinador no sería capaz de decir que la segunda transacción colisionada fue un ataque.

En este repositorio mostramos los detalles de nuestros ataques propuestos, uno que destruye los fondos de los usuarios y otro que roba IOTA a un usuario. Cuando encontramos esta vulnerabilidad, notificamos a los desarrolladores de IOTA. Han cambiado a una nueva función hash que escribieron, basada en el conocido SHA3. Rápidamente giraron el código y pusieron los pasos en marcha para fork duro su sistema y cambiar todas las direcciones de usuario. En este momento, nuestros ataques específicos han sido corregidos, pero queremos señalar que la IOTA sigue utilizando la antigua función Curl hash en algunos lugares de su software.

Descubrimos la vulnerabilidad leyendo los recursos públicos puestos a disposición por los desarrolladores de la IOTA, incluyendo sus repositorios en GitHub y los mensajes en el foro de la IOTA, y lo validamos utilizando los binarios públicos de la IOTA y enviando nuestros paquetes a los desarrolladores de la IOTA por correo electrónico. Tadge Dryja primero notó que la función de Curl hash parecía sospechosa, y trajo a Ethan Heilman, quien hizo el grueso del criptoanálisis para averiguar cómo crear colisiones. Realicé un ataque práctico, y Madars Virza hizo un análisis independiente para tratar de invertir directamente la función hash usando técnicas algebraicas (que todavía no ha tenido éxito, y no está incluido en el informe). Nunca enviamos nuestras transacciones colectivas a la red, ni interactuamos con la red IOTA.

Creo que es importante reiterar que los desarrolladores de la IOTA no están de acuerdo con nuestra caracterización de esto como un tema de preocupación. Nuestro informe ofrece más detalles sobre el motivo de nuestra preocupación.

Trits y trytes y otras banderas rojas

Hay otras banderas rojas - a diferencia de cualquier otro programa que se ejecuta en su ordenador portátil o teléfono, IOTA utiliza ternario en lugar de binario. Dado que todo el hardware informático actual utiliza binario, IOTA se convierte a ternario en software, que es menos eficiente y más complejo. Esta complejidad impide que IOTA se beneficie de las herramientas de análisis de seguridad existentes diseñadas para trabajar con binarios, y hace que el código sea más difícil de leer y comprender. Otra ineficiencia es que las transacciones en IOTA son de 10KB (en contraste, las transacciones con Bitcoin son en promedio 600B), lo que significa que esto no está bien adaptado a los dispositivos con almacenamiento limitado, como los utilizados para IOTA, uno de los casos de uso primario de los desarrolladores. La actual maraña de la IOTA requiere un partido de confianza (el coordinador) para la seguridad, sugiriendo que en su forma actual no está listo para funcionar como un sistema verdaderamente descentralizado y sin permisos. Otros han escrito sobre el uso de un coordinador de confianza por parte de la IOTA y han preguntado sobre la estructura de incentivos -si los usuarios de su sistema tienen un incentivo para converger la maraña si cada uno actuó de manera egoísta.

Conclusión

El espacio monetario digital sigue siendo nuevo, y confiamos en que las tecnologías robustas y útiles seguirán emergiendo y ganando aceptación. Pero el hecho de que ninguno de los socios de la IOTA haya planteado estas preocupaciones acerca de una vulnerabilidad flagrante en una cripto moneda de ~$2B, o haya hablado sobre las otras banderas rojas, es preocupante. Mientras que una de las características más importantes de las cadenas de bloques es eliminar la necesidad de terceras partes confiables, la mayoría de la gente no tiene el tiempo ni los antecedentes para evaluar a fondo el software, lo que significa que todavía se necesita confianza en los desarrolladores del proyecto, o alguien más capaz de evaluar el software. Creo que es importante que el público conozca nuestra investigación y lo que hemos encontrado. En este espacio, las reclamaciones extraordinarias justifican evidencia extraordinaria; hay una necesidad de templar las reclamaciones grandes con la debida diligencia rigurosa, y en este momento, eso no está sucediendo lo suficiente. Las grandes organizaciones y las personas conocidas no deben prestar sus nombres y reputación a la tecnología que no han investigado.

Sort:  

This post recieved an upvote from OPENBULL. If you would like to recieve upvotes from OPENBULL on all your posts, simply FOLLOW @openbull Please consider up-voting this comment as this project is supported only by your up-votes!