Masivo historial de robos demuestra que ‘blockchain’ no es inhackeable
A principios de año, el equipo de seguridad en Coinbase notó que algo extraño pasaba en Ethereum Classic, una de las criptomonedas que la gente puede comprar y vender a través de la popular plataforma de intercambio de Coinbase. Su cadena de bloques (blockchain), el historial de todas sus transacciones, estaba siendo atacado.
Un atacante había conseguido, de alguna manera, controlar más de la mitad del poder informático de la red y lo estaba usando para reescribir el historial de transacciones. Eso le permitió gastar la misma criptomoneda más de una vez, un fenómeno conocido como «doble gasto». Así, el atacante se hizo con una suma de unos 900.000 euros. Coinbase afirma que ninguna moneda fue robada de ninguna de sus cuentas. Pero una segunda plataforma de intercambio popular, Gate.io, admitió que no tuvo tanta suerte, pues el atacante le robó unos 180.000 euros (aunque sorprendentemente, devolvió la mitad días después).
Hace apenas un año, este escenario de pesadilla era más bien teórico. Pero el llamado ataque del 51 % contra Ethereum Classic, una especie de OPA hostil, es solo el más reciente de una serie de ataques contra las cadenas de bloques que han aumentado las apuestas sobre esta naciente industria.
En total, los hackers han robado casi unos 1.800 millones de euros en criptomonedas desde principios de 2017, principalmente de las plataformas de intercambios. Y eso es solo lo que se ha revelado públicamente. No se trata de atacantes oportunistas solitarios. Las sofisticadas organizaciones de delitos informáticos también lo están haciendo: la empresa de análisis Chainalysis recientemente aseguró que solo dos grupos, que aparentemente aún están activos, podrían haber robado un total de 900 millones de euros de estas plataformas.
Esto no debería sorprendernos. Las cadenas de bloques son particularmente atractivas para los ladrones porque las transacciones fraudulentas no se pueden revertir como en el sistema financiero tradicional. Además de eso, hace tiempo que sabemos que del mismo modo que las cadenas de bloques tienen características de seguridad únicas, también tienen vulnerabilidades únicas. Los reclamos y titulares comerciales que calificaron a la tecnología como «inhackeable» estaban totalmente equivocados.
Esta ha sido la opinión generalizada desde que apareció Bitcoin hace una década. Pero en el último año, en medio de una explosión repentina de nuevos proyectos de criptomonedas, hemos empezado a ver qué significa en la práctica, y qué implicaciones podrían tener estas debilidades inherentes para el futuro de las cadenas de bloques y los activos digitales.
¿Cómo hackear blockchain?
Antes de continuar, aclaremos algunos términos.
Blockchain o cadena de bloques es una base de datos criptográfica que se mantiene mediante una red de ordenadores, cada uno de los cuales almacena una copia de la versión más actualizada. Un protocolo de las cadenas de bloques es un conjunto de reglas que establecen cómo los ordenadores de la red, llamadas nodos, deben verificar las nuevas transacciones y agregarlas a la base de datos. El protocolo usa criptografía, teoría de juegos y economía para crear incentivos para que los nodos trabajen asegurando la red en vez de atacarla para obtener ganancias personales. Si se configura correctamente, este sistema puede hacer que sea extremadamente difícil y costoso añadir transacciones falsas, pero relativamente fácil verificar las válidas.
Este funcionamiento es el que está seduciendo a tantas industrias, comenzando con la financiera. Algunas corporaciones de renombre, como Fidelity Investments e Intercontinental Exchange (ICE), el propietario de la Bolsa de Nueva York, están a punto de lanzar una serie de proyectos para introducir blockchain en el sistema financiero existente. Incluso algunos bancos centrales están considerando usar la tecnología para las nuevas formas digitales de su moneda nacional.
Pero cuanto más complejo es un sistema de blockchain, más fácil es cometer errores al configurarlo. A principios de marzo, la compañía responsable de Zcash (una criptomoneda que usa matemáticas extremadamente complicadas para permitir a los usuarios realizar transacciones en privado) reveló que había arreglado en secreto un «defecto criptográfico sutil» introducido accidentalmente en el protocolo. Un atacante podía haberlo explotado para crear Zcash falsos de forma ilimiatada. Afortunadamente, nadie parece haberlo hecho.
El protocolo no es lo único que tiene que ser seguro. Para intercambiar criptomonedas por cuenta propia o ejecutar un nodo, se debe ejecutar el software del cliente, que también puede contener vulnerabilidades. En septiembre, los desarrolladores del principal cliente de Bitcoin, llamado Bitcoin Core, tuvieron problemas para solucionar un error (también en secreto) que podía haber permitido a los atacantes crear más bitcoins de lo que el sistema debería permitir.
Pero, la mayoría de los recientes hackeos más llamativos no fueron ataques a las propias cadenas de bloques, sino a las plataformas de intercambios, las páginas web donde las personas pueden comprar, intercambiar y guardar sus criptomonedas. Y muchos de esos robos podrían ser atribuidos a deficientes prácticas de seguridad básica. Eso cambió en enero con el ataque del 51 % contra Ethereum Classic.
El ataque del 51 %
La susceptibilidad del 51 % es inherente a la mayoría de las criptomonedas. Esto se debe a que muchas utilizan la prueba de trabajo como protocolo de consenso para verificar las transacciones. En este proceso, también conocido como minería, los nodos gastan grandes cantidades de energía de cálculo para demostrar que son lo suficientemente confiables para agregar información sobre nuevas transacciones a la base de datos. Un minero que obtiene el control de la mayor parte del poder minero de la red puede engañar a otros usuarios enviándoles pagos y luego creando una versión alternativa de la cadena de bloques en la que esos pagos nunca ocurrieron. Esta nueva versión de la cadena se llama bifurcación. El atacante, que controla la mayor parte del poder de la minería, puede hacer que la versión bifurcada sea la fidedigna de la cadena y pasar a gastar de nuevo la misma criptomoneda.
Intentar este tipo de atraco probablemente resultaría extremadamente costoso en las cadenas de bloques más populares. Según la página web Crypto51, acumular suficiente energía minera para atacar Bitcoin costaría actualmente más de 230.000 euros la hora. Pero el coste desciende rápidamente a medida que va bajando por la lista de las más de 1.500 criptomonedas que existen. La caída de los precios de las monedas lo abarata aún más, ya que provoca que los mineros apaguen sus máquinas, lo que deja a las redes con menos protección.
A mediados de 2018, los atacantes comenzaron a lanzar ataques del 51 % contra una serie de monedas relativamente pequeñas y poco comercializadas, como Verge, Monacoin y Bitcoin Gold, robando unos 18 millones de euros. En otoño, los hackers robaron alrededor 90 .000 euros mediante una serie de ataques a una moneda llamada Vertcoin. El golpe contra Ethereum Classic, que rondó el millón de euros, fue el primero contra una de las 20 principales criptomonedas.
El cofundador de la plataforma de almacenamiento de archivos basada en blockchain Sia, David Vorick, predice que los ataques del 51 % serán cada vez más frecuentes y graves, y que las plataformas de intercambio sufrirán el daño causado por los gastos dobles. Lo que impulsa esta tendencia, según él, ha sido el surgimiento de los llamados mercados de hashrate, en los que los atacantes pueden alquilar la potencia de cómputo de otras personas para sus ataques. «Al final, las casas de intercambio deberán ser mucho más restrictivas a la hora de decidir qué criptomonedas admitir», escribió Vorick después del hackeo de Ethereum Classic.
La lata de gusanos errores
Además de los ataques del 51 %, los investigadores están comenzando a explorar las implicaciones de un nuevo nivel de debilidades de seguridad en blockchain: los errores de los contratos inteligentes. Casualmente, Ethereum Classic, y en especial, la historia detrás de su origen, también es un buen punto de partida para comprenderlos.
Un contrato inteligente es un programa informático que se ejecuta en una red de blockchain. Puede utilizarse para automatizar la transferencia de criptomonedas cuando se cumplen unas reglas y condiciones prescritas. Tiene muchos usos posibles, como facilitar contratos jurídicos o las complicadas transacciones financieras. Otro uso, si existe interés, sería el de sustentar un mecanismo de votación mediante el cual todos los inversores en un fondo de capital de riesgo podrían decidir colectivamente cómo asignar el dinero.
En 2016, se creó un fondo de este tipo, la Organización Autónoma Descentralizada (DAO), que utiliza el blockchain Ethereum. Poco después, un atacante robó más 53 millones de euros en criptomonedas aprovechándose de un error imprevisto en un contrato inteligente que usaba la DAO. El error le permitió al hacker seguir solicitando dinero de las cuentas sin que el sistema registrara que el dinero ya había sido retirado.
Este hackeo demostró que un error en un contrato inteligente puede crear una emergencia única. En un software tradicional, un error se puede solucionar con un parche. En el mundo de blockchain, eso no es tan simple. Como las transacciones en una cadena de bloques no se pueden deshacer, implementar un contrato inteligente es un poco como lanzar un cohete, explica el científico investigador de ETH Zúrich y cofundador de una start-up de seguridad de contratos inteligentes llamada ChainSecurity, Petar Tsankov: «El software no puede cometer un error».
Existe una especie de solución. Aunque no pueden usar parches, algunos contratos pueden ser «actualizados» implementando contratos inteligentes adicionales para interactuar con ellos. Los desarrolladores también pueden crear interruptores de apagado centralizados en una red para detener cualquier actividad cuando se detecta un hackeo. Pero para los usuarios cuyo dinero ya ha sido robado, es demasiado tarde.
La única manera de recuperar el dinero es, efectivamente, volver a escribir el historial: regresar al punto de la cadena de bloques antes de que ocurriera el ataque, crear una bifurcación a una nueva cadena de bloques y hacer que todos en la red acepten usarla. Eso es lo que los desarrolladores de Ethereum eligieron hacer. La mayoría de esta comunidad, pero no todos, pasaron a la nueva cadena, que ahora conocemos como Ethereum. Un grupo más pequeño de se quedó en la cadena original, que se convirtió en Ethereum Classic.
En enero, el equipo de Tsankov en ChainSecurity salvó a Ethereum de una posible repetición de la catástrofe de DAO. Justo un día antes de una importante actualización de software planificada, la compañía informó a los desarrolladores principales de Ethereum que si dejaban algunos contratos vulnerables de nuevo al mismo tipo de error que había llevado al hackeo de DAO habría consecuencias indeseadas. Los desarrolladores rápidamente aplazaron la actualización.
Sin embargo, cientos de valiosos contratos inteligentes de Ethereum ya eran vulnerables a este llamado error de reingreso, alerta el cofundador y CEO de la empresa de seguridad de blockchain AnChain.ai, Victor Fang. Decenas de miles de contratos pueden contener algún otro tipo de vulnerabilidad, según la investigación realizada el año pasado. Y la naturaleza misma de las cadenas de bloques públicas implica que, si existe un error en un contrato inteligente, los hackers lo encontrarán, ya que el código fuente suele ser visible. «Esto es muy diferente a la ciberseguridad tradicional», afirma Fang, quien anteriormente trabajó para la empresa de ciberseguridad FireEye.
Los contratos con errores, especialmente aquellos que trabajan con miles o millones de euros, han atraído a hackers tan profesionales como los que atracan bancos o gobiernos. En agosto, AnChain identificó cinco direcciones de Ethereum detrás de un ataque extremadamente sofisticado que explotó un error de contrato en un popular juego para robar 3,5 millones de euros.
¿Se pude derrotar a los hackers?
AnChain.ai es una de las start-ups recientemente creadas para hacer frente a la amenaza hacker contra blockchain. Utiliza inteligencia artificial para controlar las transacciones y detectar actividades sospechosas, y puede escanear códigos de contratos inteligentes para detectar las vulnerabilidades conocidas.
Otras compañías, incluyendo ChainSecurity de Tsankov, están desarrollando servicios de auditoría basados en una técnica informática establecida llamada verificación formal. El objetivo es demostrar matemáticamente que el código de un contrato funciona como pretenden sus creadores. Estas herramientas de auditoría, que comenzaron a surgir el año pasado, han permitido a los creadores de contratos inteligentes eliminar muchos de los errores que habían sido «fruto de primera recogida», explica Tsankov. Pero este proceso puede ser largo y costoso.
También se pueden utilizar contratos inteligentes adicionales para establecer «buscadores de errores» basados en la cadena de bloque. Esto alentaría a las personas a reportar errores a cambio de una recompensa en forma de criptomonedas, sostiene el investigador de la Iniciativa para Criptomonedas y Contratos de la Universidad de Cornell, Philip Daian.
Pero asegurarse de que el código está limpio no será suficiente. Una cadena de bloques, al fin y al cabo, es un sistema económico complejo que depende del comportamiento impredecible de los humanos, y la gente siempre buscará nuevas formas de engañarlo. Daian y sus colegas han demostrado que los atacantes ya han descubierto el modo de obtener ganancias mediante los contratos inteligentes de Ethereum, por ejemplo.
En resumen, aunque la tecnología blockchain ha sido aclamada por su seguridad, puede ser bastante vulnerable bajo ciertas condiciones. A veces la culpa la tiene una ejecución de mala calidad, o los errores involuntarios de software. Otras veces es más bien un área gris: el resultado complicado de las interacciones entre el código, la economía de la cadena de bloques y la codicia humana. Todo esto ya se sabía cuando nació la tecnología. Pero ahora hay tantas cadenas de bloques en el mundo que estamos empezando a descubrir lo que realmente significa, aunque muchas veces sea por el camino más difícil.
Fuente: technologyreview.es