Durante el fin de semana pasado se emitió un comunicado acerca de una grave falla de seguridad de un componente de Android, que afecta a todas las billeteras virtuales que han sido generadas hasta la fecha con aplicaciones para esta plataforma. En particular, la explotación de esta vulnerabilidad permitiría a los atacantes robar Bitcoins de cualquier billetera generada bajo Android.

bitcoins we live securityHace algunas semanas se expuso en este blog en qué consisten Bitcoins, Litecoins, Namecoins y cómo roban dinero electrónico en Internet. Sin embargo, el descubrimiento de esta falla crítica abre una nueva posibilidad para que los criminales lleven a cabo el robo de este tipo de moneda. Para poder entender en qué consiste la falla, es necesario comprender cómo se lleva a cabo una transacción bajo este modelo de dinero virtual. Cuando un usuario quiere realizar un pago, se efectúa una transferencia con la cantidad especificada de Bitcoins hacia la dirección correspondiente al acreedor. Para ello, se crea un registro con la transacción, al cual se le agrega una clave pública de criptografía correspondiente al destinatario. El paso siguiente consiste en que el emisor del pago firme la transacción con su propia clave privada para garantizar que no se trata de una falsificación. A continuación, se transmite el registro firmado digitalmente hacia la red; las transacciones se agrupan en bloques y se verifican para evitar fraudes, pagos duplicados u operaciones falsas. Como consecuencia del proceso, la transacción queda registrada y el pago se acredita exitosamente.

De lo que se ha mencionado hasta el momento, se puede observar que un usuario posee al menos una dirección para la cual se realizan transacciones monetarias. Esta dirección tiene asociada una clave pública, conocida por todos los integrantes de la red, y una clave privada, que sólo conoce el usuario y representa su firma. A su vez, una billetera puede contener el dinero virtual de diversas direcciones creadas por el usuario. En definitiva, la clave privada es lo único que garantiza que una transferencia de Bitcoins proviene legítimamente de determinada dirección. Dicho con otras palabras, firmar con la clave privada una operación certifica que un usuario acepta mover dinero de su billetera hacia algún destino. Y el problema es que la falla crítica encontrada se encuentra precisamente allí, en la generación de la clave privada.

Según la alerta emitida por bitcoin.org, un error de programación de uno de los componentes de Android, el encargado de generar números aleatorios para la construcción de la clave privada, produciría que no se generen claves privadas realmente aleatorias. El impacto directo de esta falla es que los criminales podrían calcular la clave privada de un usuario, realizando transacciones en su nombre, pudiendo enviar Bitcoins a cualquier dirección; la de los criminales, por ejemplo. Dado que el error está presente en la plataforma de Google, los usuarios vulnerables son todos aquellos que hayan utilizado alguna aplicación de Android para la generación de sus billeteras, ya que allí se crean las claves privadas inseguras.

Inmediatamente después de la emisión de esta alerta, los desarrolladores de las aplicaciones vulnerables se pusieron a trabajar y lanzaron actualizaciones con la corrección del error. Sin embargo, dado que todas las claves privadas generadas bajo Android antes de la actualización son inseguras, el usuario debe llevar a cabo otras acciones además de la aplicación del parche de seguridad. Como mínimo, se debe crear una billetera con una aplicación no vulnerable y transferir el dinero de la billetera insegura a la segura. Allí se aprecia la particularidad y la gravedad de esta situación: la actualización no es suficiente y aquellos usuarios que no sean notificados podrían permanecer vulnerables hasta tanto no obtengan una clave privada segura.

Matías Porolli
Especialista de Awareness & Research