Blockchain Curiosities

¿Quién no ha oído hablar de Blockchain, la cadena de bloques sobre la que se basa Bitcoin, Ethereum y otras criptomonedas?

Escribir sobre Blockchain está de moda, pero el artículo que os presento no es para incorporarme a ser uno más de los que hablan de ella, sino para haceros partícipes de algunas curiosidades encontradas y que, en pro de una mayor seguridad futura, se hallen los medios y método para evitarlas. He trabajado en varios desarrollos, varias plataformas, y os traigo ese conocimiento adquirido (ya que en ningún momento se ha firmado un contrato de confidencialidad, de vinculación o nómina). No es mi intención filosofar y que nadie, salvo los entendidos, lo comprendan, sino acercar este conocimiento desde el punto de vista ciber. En este artículo dejo fuera algunas mejoras que se podrían hacer, ya que no es su finalidad hablar de ellas (os recuerdo desde estas líneas que siempre estoy dispuesto a una mejora de mi empleo actual). Lo que sí me gustaría es, que si algún desarrollador ve posibilidad de hackeo, cubra el agujero porque, de no hacerlo, será aprovechado en el futuro (esta es la realidad a la que nos enfrentamos).

Millones publicaciones existen ya sobre lo que es Blockchain, y si quisiera describirla en profundidad me quedaría corto pero, a grandes rasgos, podemos decir que Blockchain es una base de datos, totalmente cifrada. Su traducción al español es la de “cadena de bloques”, lo que viene a decirnos que cada dato se encuentra entrelazado con el anterior, de forma que si se quisiera modificar, habría que cambiar también todos los anteriores y los posteriores. Otra de sus características es que no está ubicada en un sólo lugar, sino que se propaga a través de la red, esto es, que cada equipo (llamado nodo) almacena una copia de la misma (entera o parte de ella). Esto quiere decir que se encuentra descentralizada, para evitar precisamente que pueda ser hackeada.

Lo que más suena: Smart Contracts

Cada adición de información a Blockchain se denomina transacción, y puede contener todo tipo de información (recordad siempre, cifrada), como los llamados “smart contracts“: Es otro tipo de transacción, considerada como programa informático, que facilita, asegura, hace cumplir y ejecuta acuerdos registrados entre dos o más partes (definición recogida de la Wikipedia). También es denominado Contrato Inteligente, su finalidad es brindar una seguridad superior a la ley de contratos tradicional y reducir los costos de transacciones asociados a la contratación.

El proceso de validación de cada transacción se organiza por medio de un Libro Contable que, para animar a que se validen cuantas más transacciones, se estableció un determinado “pago” en especie por realizar esa oganización de transacciones (conocidas como “minería” o “minado“: son las denominadas criptomonedas, una de las cuales son los “Bitcoins” (BTC) que, de uno u otro modo, traen loco a medio mundo. Pero este proceso de validación no se realiza con los procesadores de las máquinas conectadas, sino que en un alarde de imaginación, se emplean las unidades de procesamiento de las tarjetas gráficas, de forma que, a más potencia, mayor minado y, por tanto, mayores beneficios (claro que depende del consumo eléctrico del país en donde se esté produciendo el proceso: en algunos no interesa en absoluto, es demasiado caro). Es como si, en un coche, ya no tuviera importancia la potencia del motor, sino la del servo de las escobillas del parabrisas.

Creo que hasta aquí se entiende, ¿verdad? Pues vamos con el apellido del título. Pensemos como Hackers y abramos la caja de Pandora: nada como una curiosidad para que la mente vaya … “Hasta el infinito y más a hack!!”

1º Curiosidad:

Si bien en un principio, con Bitcoin por ejemplo, han sido una multitud de personas las que la han adoptado como la Blockchain de base, no han tardado en salir nuevos desarrollos, como Ethereum (es la criptomoneda apoyada por el sector bancario español). Es lo que se denomina “fork”, y cada vez que sale uno, significa que unos desarrolladores cogen el código fuente que existe hasta ese momento y saltan a una nueva versión. Son tantos los forks distintos que, a la hora de escribir este artículo, que no me atrevo a dar un número exacto (a principios de 2019 iban por 46 forks y 4 de Blockchain). Cada desarrollo elige el que prefiere para, a partir de él, seguir evolucionándolo. Puede que se parezca a otro pero a lo mejor no.

Existe un refrán: “Divide y Vencerás” que, si bien Blockchain lo utiliza para que su base de datos sea difícil de romper, en el caso de existir tantos desarrollos y no existir un hilo común, es muy posible que ésta característica sea también un agujero de seguridad, porque no hay unidad en su desarrollo. Pueden existir gazapos en su versión 10, que la 11 la herede, la 12, la 13, la 14… y la 38. Cada implementación de Blockchain toma el que le parece (no necesariamente la última), y sobre ella aplica su I+D.

2ª Curiosidad.

Si la Blockchain es completamente segura… No vamos a atacarla a ella, vamos a ir donde se rompe el sistema.

¿Dónde es esto?

Tenemos 3 vías a primera vista:

  1. El nodo (=Servidor) que soporte la Blockchain.
  2. El usuario que quiere hacer uso de la Blockchain.
  3. Los programas que funcionan en ella.
  1. El nodo.

Recordemos que son ordenadores los que van a almacenar la Blockchain, entera o parte de ella. Como normalmente se emplearán para más de un servicio, ya que es una locura que sean exclusivamente dedicados, se presenta la segunda curiosidad.

Hoy día, cualquier servicio que se proporciona empleando equipos informáticos, utiliza un puerto de entrada y otro de salida; pueden coincidir o no, por ejemplo, para navegar empleamos el puerto 80, aunque también el 8080, 8081, 8082 y 8083; para enviar correos electrónicos, puede ser el 25, 465, 587; para recibirlos, 143, 993, 110 y 995. Uno de los puertos que más se utiliza es el del ssh (el 22), que ha avanzado de forma considerable para evitar intrusiones, por ejemplo. Pero, sin embargo, el 23, correspondiente al servicio de Telnet, no puede llevar protección, por las características propias del servicio (hay otro articulillo curioso por ahí de cosas que hacemos con este puerto). Última hora: los que usan TOR Browser, el navegador de la Deep Web, con el troyano adecuado les han sustraido sus BTC. (Tor Browser utiliza el puerto 9050 ó el 9150 por defecto, aunque puede variar).

Como nodo de Blockchain, el sistema le dedica un puerto, el 8333 de comunicaciones (tanto para entrada como para salida de información). En Ethereum es el 30303… Y con sólo saber qué preguntar, obtienes respuesta.

Ahora bien, ¿se podría camuflar un malware que monitorizara esos puertos como y que, aunque latente, se quedara en el nodo a la espera que se realice (entrada o salida) una transacción, ser activado y que permita hacer lo impensable? Y lo que es peor, podría introducir código rastreable, cambiar el destinatario de las transacciones… El abanico es tan complejo que sólo lo limita la imaginación.

Esto no es nada difícil de hacer, de hecho, los últimos malwares que asolan el planeta tienen esta característica: entran, se propagan por un puerto abierto, con lo que estar “a la escucha” en el puerto de Blockchain puede hacer que, cuando entre una transacción, sustituya el código que le interese, incluso podría hacerse con la pareja de claves del usuario origen y sustituirla por otra, enviarla cifrada hacia su creador… No seguiré dando ideas… Pero hay que trabajar aquí especialmente, que ya hay gazapos y es lo que ha dado pie a este artículo.

El equipo de Hispasec, en su blog de UnaAlDia, ya nos avisaba en septiembre de 2019: Malware que hace uso de transacciones de bitcoin.

2.- El usuario.

Hoy día todas las organizaciones saben que el eslabón más débil de la cadena es el ser humano, por las más variadas razones:

  • Confianza. Con el tiempo, al no ocurrir eventos destacados, se relaja su seguridad.
  • Olvido. Contraseñas demasiado complicadas llevan a anotarlas en lugares visibles, o repetir las usadas en ciertas webs cuyas bases de datos son por todos conocidas.
  • Descuidos. Empleando técnicas de ingeniería social se pueden conseguir demasiados datos de los usuarios.

¿Qué puede hacer el usuario? Simplemente, un uso indebido, bien por desconocimiento o por comodidad. En el siguiente punto vamos a verlo.

3.- Los programas que funcionan en la Blockchain.

Enlazado al punto anterior, se ha descubierto un enorme problema:

Los usuarios de la red Ethereum están realizando copias directas o casi de otros contratos ya existentes (puedes ampliar la información en el siguiente enlace: “Clonación de contratos inteligentes pone en riesgo la seguridad de Ethereum”), con lo que representa un doble riesgo:

  1. Si el Smart Contract (recordemos que es un programa) tiene código vulnerable o errores, al ser copiado heredará esta característica,  permitiendo ser rastreado y si se ejecuta la vulnerabilidad, el error puede dar lugar a filtraciones en el sistema.
  2. Si está copiado, se puede rastrear en la Blockchain de Ethereum como código replicado y repetitivo, se podrían crear aplicaciones que fuesen capaces de descifrar el contenido del programa, incluso hacer seguimientos de las claves públicas de los usuarios, y teniendo varias muestras, crear un parche que vulnere la Blockchain no es más difícil que crear un crack para una aplicación de ofimática, donde los hay realmente complejos (incluso con escritura directa sobre la memoria física del equipo donde se ejecuta). Yéndonos al extremo, código inconexo que separado es inocuo, al ser leído todo junto podría cree un malware que se propague sobre la misma red (había un virus, hace algunos años, que por sí solo no era peligroso, pero que al activarse descargaba código en texto plano desde la web y lo ejecutaba en memoria. Los antivirus no eran capaces de detectar esta infección, hasta que se les dotó a sus motores heurísticos de cierta inteligencia).

3ª Curiosidad.

Para explicar la tercera (y la quinta), he de desarrollar el concepto del funcionamiento de una transacción. Puede ser un poco complejo, espero que no sea demasiado técnico y os perdáis.

Supongamos que tenemos bitcoins (hemos canjeado dinero físico por criptomonedas, es la forma más fácil. A 20 de octubre de 2019, 1 BTC = 7.287,06 €), y un usuario X quiere obtener algo de otro usuario Z.

  1. X quiere enviar dinero a Z
  2. La transacción tiene 3 partes:
    1. Una dirección de X.
    2. El dinero que quiere enviar a Z
    3. Una dirección de Z.
  3. Los usuarios X y Z deben tener una clave pública y una clave privada, que se genera la primera vez que se entra en el sistema. La clave privada es lo que se guarda a buen recaudo, de la forma que cada uno crea conveniente (lo más normal es emplear un monedero virtual, pero claro, también la puedes imprimir y empapelar una pared con ella).
    1. La clave pública es una dirección única dentro del sistema y que sólo la clave privada puede descifrar, y esa clave pública se propaga dentro de la red de servidores de Blockchain.
    2. La clave privada es lo que permitirá ver el contenido de lo que se haya cifrado con la clave pública.
    3. Esa pareja de claves son lo suficientemente largas, para que no sean crackeables; por ejemplo, en Bitcoin, las claves privadas son de 256 bits (256 caracteres) y la clave pública se saca realizando una serie de operaciones matemáticas fijas sobre la clave privada.Hoy dia no se conoce el proceso inverso (lo cual no significa que no pueda existir).
  4. La clave pública de Z, X la debe conocer, sino, es imposible. Y esas claves públicas son las direcciones que intervienen en la transacción. Llevándolo al campo de Bitcoin, todas las claves públicas son direcciones de Bitcoin.

¿Sí? ¿No? Espero que sí. Seguimos.

Todas las claves públicas son conocidas por el sistema, es decir, se puede conocer el saldo de ellas, y sólo si deseas utilizarla en algo, debes disponer de la clave privada.

Entonces, cuando X y Z están de acuerdo para realizar una transacción, la confeccionan y la comunican al resto de la red, a los equipos denominados nodos, los cuales tienen una copia de esa transacción. Al estar todos los nodos repartidos por el mundo, es por ello por lo que se habla de una red descentralizada, en la que cualquier usuario, con un equipo potente, procesador más aún y conexión a Internet, puede ser un nodo.

Si el nodo está completo, contendrá una copia literal de toda la base de datos de Blockchain (a día de hoy, son unos 175 Gb de transacciones el de Bitcoin, la única de la que he encontrado datos disponibles) que, según las reglas consensuadas, el nodo completo puede confiar la integridad del bloque. Lo peor (o mejor, desde el punto de vista de la ciberseguridad) es que los bloques no tienen longitudes iguales, unos pueden “medir” más que otros, con lo que el lío ya está hecho.

Rastrear toda esa base de datos no resulta fácil, aparte del manejo de tantos gigas de información, pero si algo he aprendido durante mis “años oscuros”, es que existen personas que son capaces de sacar «patrones» donde el resto del mundo no los ve, y examinando datos cifrados pueden ver donde termina una determinada transacción, donde empieza otra, diferenciar las marcas de tiempo que las separa… Y no digamos nada si estas personas tienen capacidad de programación (uno de tantos dones con los que puedes nacer), y sean capaces de transmitir ese conocimiento a una IA para que se entretenga buscando patrones en esa base de datos (o en cualquier otra que esté cifrada).

Todo esto para decir que existe un ataque, llamado “Ataque del 51%”, que consiste en controlar el 51% de la red (quien quiera profundizar, puede hacerlo en el siguiente enlace) y, aunque parece imposible hacerlo, no están del todo seguros… De hecho, el 25/05/2019 se publicó la noticia que dos mineros han ejecutado este tipo de ataque en enero de 2019 (más información aquí), anulando 4 transacciones y llegando a hacerse con 54200 BTC (al cambio, son 390 milloncejos de euros, para jubilarse sin mirar atrás…).

4ª Curiosidad:

Después de vender la moto, resulta que no lleva ruedas…

El pasado 3 de octubre de 2019 se publicó en el diario ElEconomista.es una noticia mediante la cual “El ‘blockchain’ no sirve de prueba en un juzgado Mercantil, salvo que le avale un peritaje informático”, debido precisamente a la complejidad del sistema presentado. Se acepta el funcionamiento de la base de datos pero “la falta de transparencia por parte de los intervinientes hace que pierda peso como prueba”. O sea, necesitas un Perito Judicial Informático. Sobra decir que yo lo soy pero, además, tenéis a la Asociación Nacional de Tasadores y Peritos Judiciales Informáticos a vuestra disposición:

5ª Curiosidad:

Blockchain es incompatible con el RGPD

Una de las características que describen a Blockchain es su inmutabilidad, es decir, cuando los datos se escriben en el llamado «Libro Contable», y han sido correspondientemente “minados”, se establece una solidificación de éstos junto con los anteriores y posteriores. desde este momento, no se pueden realizar alteraciones en la base de datos, con lo que si se guardan en ellas datos que podrían llegar a caducar (por ejemplo, sentencias que, transcurridas el tiempo que marque la ley, tienen “derecho al olvido”). Pues bien, “lo escrito, escrito está”, y no habrá perdón. Dato que se introduzca, se quedará ahí.

Si en algún momento observáis a alguien diciendo que vuestros datos personales están en una Blockchain, recordad que no podréis hacer uso de los derechos ARCO en su totalidad, ya que los de Rectificación, Cancelación y Oposición llevan aparejado la intervención y ruptura de la Cadena de Bloques, a menos que se contemple pero entonces no es Blockchain: Hablemos con propiedad, por favor.

Mis batallitas

¿Creíais que no iba a contaros alguna? Tengo varias, unas duelen más que otras, hay heridas abiertas, otras no se pueden contar…

En cierta ocasión, fui a la presentación de la plataforma Ethereum en mi ciudad, nos contaron las maravillas de esta Blockchain, de mano de Alastria. Vi muy interesante pertenecer a esta agrupación de empresas, salvo que pedían una contribución económica a la que me era imposible acceder. En el turno de ruegos y preguntas me levanté, me identifiqué como Perito Informático Forense y les pregunté por el aspecto forense de la información contenida en dicha plataforma, y no supieron qué decirme, como si nunca se lo hubieran planteado. Y ya sabemos qué pasa con todos los servidores que están en la Nube, es muy raro que nos dejen a los expertos en DFIR (Digital Forensic and Incident Response) hacerle una auditoria a uno de estos equipos…

Otra batallita, esta duele tela…

Hubo una ocasión donde, conociendo los puntos flacos de esta tecnología (sólo he hablado de las curiosidades), me encontré con varias formas de superarlos, con ideas y procedimientos largamente contrastados (30 años de experiencia cibernética no los tiene cualquiera), expuse y presenté a unos “amigos” mejoras en su desarrollo, incluso destiné equipos para demostrar que mis procedimientos eran válidos. Todo era muy bonito, se emocionaron, los aceptaron, me incluyeron en sus planes, los representé en foros y eventos, porque no tenían recursos, hasta que los tuvieron y… “Si te he visto no me acuerdo”. ¬ ¬

Conclusiones

Esta noticia es relativamente reciente, del gran Marc Vidal: “El ‘Foro Económico Mundial’ anticipa que el 10% del PIB global se almacenará en la cadena de bloques en 2025.” Esto preocupa, creo que la seguridad no está del todo garantizada, más que nada porque vivimos, un día sí y otro también, ataques de cifrado de archivos en todo el mundo, que se han colado aprovechando la debilidad de los usuarios, de las conexiones y de la ausencia de protección en el desarrollo de la aplicación de control.

He remarcado en qué se está trabajando, y es lógico: el ser humano se guía por el capital, y allí donde esté, será su objetivo principal (es una pena, lo sé, pero es la realidad). Cualquier Blockchain que permita contabilizar transacciones económicas, será objetivo indiscutible de hackeo. Las que no estén orientadas a ello, no significa que estén libres de intrusiones, sino que interesan menos, hasta que haya en ellas algo que interese y entonces…

Se deja a un lado que los ciberdelincuentes, si bien hace algunos años no sabían programar, hoy día son muy capaces, y es más, son unos auténticos fieras. De hecho, es relativamente frecuente ver ataques a sistemas de criptomonedas en los que, sin filtrar la forma de realizarse, caen uno tras otro. Esto quiere decir que no parece que sean totalmente fiables.

Como muestra, el pasado 20 de agosto de 2019 se publicó la siguiente noticia: “Vulneran seguridad de sistema de votación ruso basado en blockchain” (y éste era un investigador “legal”). Comentar este caso ante un distinguido público y que no se conociera fue lo que precipitó, finalmente, a la publicación de este artículo, pues estaban convencidos que la tecnología era inhackeable (y sí, luego dirán que “era un cifrado de prueba y bla bla bla”, pero el sistema estaba operativo para ser empleado. Si no se hubiera descubierto, posiblemente se estaría empleando ese cifrado.

No me canso de repetir que “los programadores no saben de hacking”. Blockchain puede ser una tecnología muy compleja y que, gracias a la criptografía, se le ha dado una visión muy robusta al sistema pero… Ese pensamiento erróneo que “a ellos no les va a tocar” cae por su propio peso cuando se trata de proteger el modo de vida de nuestra sociedad actual (poder monetario).

¿Cuándo se pondrán los desarrolladores realmente las pilas y empezarán a pensar en clave de Hacker?

No dejéis que la confianza, el olvido y los descuidos os pillen de sorpresa.

Ale Cortés (@Kirzahk)