Un antiguo fallo en las librerías JavaScript Crypto ponen en riesgo las wallets de los Bitcoin
Los investigadores de seguridad están advirtiendo que las viejas direcciones de Bitcoin generadas en el navegador o mediante aplicaciones de billetera basadas en JavaScript podrían verse afectadas por un fallo criptográfico que permite a los atacantes realizar ataques de fuerza bruta a las claves privadas, tomar el control de las billeteras de los usuarios y robar los fondos.
La vulnerabilidad reside en el uso de la función JavaScript SecureRandom() para generar una dirección aleatoria de Bitcoin y su clave privada adyacente (equivalente a una contraseña).
SecureRandom() no es realmente aleatorio
El problema es que esta función en realidad no genera datos aleatorios verdaderos, como señaló recientemente un usuario anónimo en la lista de correo de la Fundación Linux, junto con David Gerard, un administrador del sistema Unix con sede en el Reino Unido.
"Generará claves criptográficas que, a pesar de su longitud, tienen menos de 48 bits de entropía, [...] así que su salida no tendrá más de 48 bits de entropía, incluso si su semilla tiene más que eso", dijo Gerard.
"SecureRandom() luego ejecuta el número que obtiene a través del algoritmo RC4 obsoleto, que se sabe que es más predecible de lo que debería ser, es decir, menos bits de entropía", agregó Gerard. "Por lo tanto, tu clave es más predecible".
La conclusión es que todas las direcciones de Bitcoin generadas usando la función SecureRandom() son vulnerables a los ataques de fuerza bruta que pueden adivinar la clave privada de la cuenta.
Se aconseja a los usuarios mover fondos a nuevas direcciones
Gerard descubrió que algunas aplicaciones de billetera basadas en web o en el cliente usaban la función SecureRandom(), pero finalmente resolvieron el problema una vez que se hizo público por primera vez a través de una publicación en el foro de BitcoinTalk en 2013 y después de una conferencia en 2015.
Gerard dice que todas las direcciones de Bitcoin generadas usando la cartera del cliente BitAddress pre-2013 y Bitcoinjs pre-2014 se ven afectadas.
Además, según Mustafa Al-Bassam, investigador de doctorado en el Departamento de Ciencias de la Computación de la universidad College London, muchas aplicaciones antiguas de billetera Bitcoin de la Web y del cliente han utilizado la biblioteca criptográfica jsbn.js para generar direcciones de Bitcoin. Una versión anterior a 2013 de esta biblioteca utilizaba la función SecureRandom().
Las aplicaciones Wallet que usan esas versiones anteriores de jsbn.js aún generan claves privadas de dirección de Bitcoin. Según Gerard, descifrar esa clave generalmente tomaría alrededor de una semana.
Se aconseja a los usuarios de Bitcoin que generaron direcciones de Bitcoin con las herramientas afectadas que generen nuevas direcciones de Bitcoin con una nueva herramienta y transfieran fondos de cuentas antiguas a las nuevas.