La maleabilidad de las transacciones hace referencia a la capacidad de que un atacante pueda modificar o alterar el hash que identifica una transacción dentro de la blockchain. Una situación que sin duda puede alterar y generar graves problemas dentro de un sistema de pago como el de las criptomonedas.
La maleabilidad de las transacciones de Bitcoin, es un tipo de ataque de Denegación de Servicio (DoS), que le permite a un atacante poder modificar o alterar el hash que identifica una transacción dentro de la blockchain.
A simple vista, esto puede que no parezca un problema en sí, ya que la modificación del hash de una transacción, no la afectaría en nada, y la transacción se ejecutaría de igual forma. Sin embargo, el problema surge cuando el receptor de la transacción, alega que no ve reflejada dicha operación en su cuenta. Por lo que desconfía del usuario que realizó la operación y del sistema en general.
Es por esta razón, que la maleabilidad de una transacción es un grave problema para los sistemas de pago de criptomonedas. Un problemas que muchas criptomonedas enfrentan y solucionan de diversas formas.
¿Cómo ocurre este ataque?
Las transacciones en Bitcoin están conformadas por una o varias entradas y por una o varias salidas. Las entradas están compuestas por una serie de referencias que hacen alusión a las salidas de una transacción anterior, y son conocidas como salidas no gastadas (UTXO). Por su parte, las salidas contienen la dirección a la cual fue realizada la transacción, y la cantidad de fondos que fueron transferidos.
Cada transacción realizada en la blockchain de Bitcoin contiene su propio hash. Este hash es único e irrepetible, y se utiliza para identificar o ubicar una transacción en particular dentro de la blockchain.
De esta forma, a través del hash, los mineros pueden rastrear y comprobar que una transacción ha sido agregada dentro de un bloque. Y por lo tanto, validar que forma parte de la blockchain.
Ahora bien, hasta que no se realice la validación y confirmación de esa transacción, un atacante tiene la posibilidad de modificar y alterar el hash identificador de la transacción, sin alterar la firma digital. Con esta acción, el atacante logra ocultar la transacción y así le hace creer al emisor que la operación no se realizó. Por lo que unas horas más tarde, hace una reclamación al emisor para que éste vuelva a realizar la transferencia, alegando que no ha recibido los fondos. En este punto es donde se ejecuta el ataque o estafa. Ya que el atacante sí recibió los fondos transferidos, sólo que no se ven reflejados con el hash (txid) que se registró en el servicio.
Factibilidad de ejecutar este ataque
El objetivo principal de los ataques por maleabilidad de las transacciones son los exchanges o casas de intercambio de criptomonedas. Debido al gran volumen de operaciones y transacciones que manejan a diario, un atacante puede sacar provecho de la situación.
En el caso de un usuario que no realice tantas transacciones al día, es muy poco probable que sea víctima de este tipo de ataques. Ya que al consultar el saldo de su cuenta verá reflejado el débito de la transacción. Por lo que podrá darse cuenta de que si fue realizada la transacción y comprobará que la dirección de destino sí cuenta con los fondos transferidos.
Mt Gox y el problema de maleabilidad de las transacciones
Las numerosas pérdidas sufridas por el famoso y fallido exchange de criptomonedas, Mt Gox, fueron causadas según informó el equipo técnico y su CEO, Mark Karpelès, debido a un problema de maleabilidad de las transacciones. Que permitieron que varios hackers y atacantes pudieran hacer reclamos por transacciones supuestamente fallidas. Las cuales sumaron un aproximado de 850.000 bitcoins robados. Un lamentable hecho que llevó al exchange a su quiebra en 2014, y que dejó a miles de usuarios enojados y desconcertados.
Según Karpelès, esto fue debido a la maleabilidad de las transacciones. Karpeles argumentó que los usuarios pudieron hacer múltiples retiros de sus fondos, alegando que éstos no se habían realizado, cuando en realidad sí se efectuaron.
No obstante, varias investigaciones realizadas determinaron que la quiebra de este exchange no se debió sólo a un acto de hackeo, sino también a la manipulación de datos por parte del equipo responsable de Mt Gox. En el informe publicado por ArXiv se calcula que la pérdida de bitcoins por maleabilidad de las transacciones no supera las 400 unidades.
¿Cuánto sabes, criptonauta?
¿La maleabilidad de las transacciones en un peligro de seguridad?¡CIERTO!
Hasta cierto punto la maleabilidad de las transacciones es un riego de seguridad, puesto que un actor malicioso en un exchange podría usar dicha debilidad para alterar los registros de transacciones y hacerse con dinero que no es suyo de forma ilegal.
Propuestas de soluciones al problema de maleabilidad
Desde que esta problemática en las transacciones fue detectada en Bitcoin y en otras criptomonedas, han sido varios los esfuerzos de los desarrolladores y especialistas por afrontarlo. Así, se dio lugar al desarrollo de dos soluciones con objetivo es abordar la maleabilidad.
Propuestas en Bitcoin
- BIP 0062 es una solución presentada en 2014 por el desarrollador Pieter Wuille con la finalidad de tratar el problema de maleabilidad de las transacciones Bitcoin, que causaban que el remitente perdiera el rastro de sus transacciones una vez modificados los hash. Ocasionando que, bajo manipulaciones, volviera a enviar los fondos una y otra vez, generando grandes pérdidas. En esta propuesta, se exponen todas las formas posibles de encontrar maleabilidad en las transacciones, con lo cual pueden ser abordadas y solucionadas.
- SegWit es otra herramienta diseñada con la finalidad de atacar, entre otras cosas, el problema de maleabilidad de las transacciones de Bitcoin. Para evitarlo, SegWit separa los datos de la transacción, incluídos en el árbol de Merkle, de las firmas. Así, las transacciones que utilizan y gastan las salidas segwit no son vulnerables a problemas de maleabilidad.
Propuestas en Ethereum
El Hard Fork de Ethereum “Homestead”, descrito en el EIP-2, solucionaba el problema de maleabilidad en Ethereum. Más específicamente la actualización hace que todas las firmas de transacciones cuyo valor s es mayor que secp256k1n / 2 ahora se consideran inválidas. Con ello se soluciona el problema de la maleabilidad de transacciones en Ethereum.
Propuestas en Dash
Dash también ha realizado cambios en su software para evitar este problema. Debido a la cercanía de código de Dash y Bitcoin, Dash opto por aplicar un fix siguiendo las recomendaciones del BIP-66. Esto soluciona una parte de problemas de maleabilidad de transacciones en Dash. Adicionalmente también aplicó un parche basándose en las recomendaciones dadas en el BIP-0147. Pero pese a esto, Dash aún no está protegido completamente contra este tipo de ataques, y para su equipo de desarrollo esto no es una prioridad de primer nivel, como lo hacen ver en su blog.