¿Qué es la maleabilidad de una transacción?
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.