-
El generador de números aleatorios del firmware falló y expuso las semillas a un cálculo externo.
-
Desarrolladores de Bitcoin coinciden en la urgencia, pero piden no apresurar la migración.
Un fallo a nivel del firmware de Coldcard permitió que atacantes calcularan frases secretas o semillas de recuperación de usuarios sin tocar sus dispositivos, lo que condujo al robo de al menos 594 bitcoin (BTC). Pero ¿cómo fue posible que hackers explotaran este fallo?
La semilla de una wallet (la secuencia de doce o veinticuatro palabras que da acceso total a los fondos) necesita generarse de la forma más impredecible posible. Para lograrlo, Coldcard debe apoyarse en un generador de números aleatorios por hardware, un componente del microcontrolador diseñado para no dejar ningún patrón calculable.
Un error de configuración en el firmware, introducido en marzo de 2021, hizo que el dispositivo dejara de usar ese componente. En su lugar, el dispositivo empezó a generar la semilla con un generador de respaldo por software. La diferencia es clave: mientras el generador por hardware produce un valor distinto e impredecible en cada arranque, el generador de respaldo de software es determinista, es decir, que a partir de los mismos datos de entrada, siempre calcula el mismo resultado.
Esos datos de entrada son el identificador de fábrica del microcontrolador (un número fijo que Coldcard usa incluso como parte de su número de serie) y el valor de dos contadores internos de reloj tomados en el momento del arranque. Como ninguno de los dos fue pensado para mantenerse en secreto, cualquiera que los conozca puede calcular, con la misma fórmula que usa el generador de respaldo, el mismo valor que calculó el dispositivo de Coldcard.
Ese valor (el que resulta de combinar el identificador del chip con los contadores de reloj) se procesa después con una función hash, un cálculo que mezcla datos y devuelve un número de apariencia aleatoria. Pero una función hash no puede agregar información que no estaba presente en la entrada, solo la reorganiza, es decir, que si el valor de entrada tenía pocas combinaciones posibles, la semilla final también las tiene, aunque a simple vista parezca aleatoria. Esa limitación es total en los modelos Mk2 y Mk3, los primeros con el error: como el generador de respaldo no recibe ningún refuerzo adicional, quien conoce el identificador del chip y el estado de los contadores de reloj no necesita probar ninguna combinación, sino que calcula directamente, con una sola operación, el mismo valor que calculó el dispositivo.
En términos de seguridad informática, esa condición equivale a cero bits reales de aleatoriedad: la semilla deja de ser un secreto y pasa a ser un dato reproducible.
Ese cálculo directo es, en esencia, el ataque completo. Quien lo reproduce genera una lista de frases semillas candidatas, deriva de cada una la dirección pública que le correspondería y la compara contra las direcciones que, por diseño de Bitcoin, cualquiera puede consultar junto con su saldo. En cuanto a una una de esas semillas candidatas coincide con una dirección que tiene fondos, el atacante ya cuenta con la clave privada completa y puede firmar una transacción para moverlos, sin haber tocado ni accedido remotamente al dispositivo original.
El desarrollador de Bitcoin Antoine Poinsot resumió en X lo accesible que resultó llegar a esa conclusión: «Es trivial encontrar el problema con un modelo de lenguaje de última generación, y varias personas llegaron a la misma conclusión de forma independiente».

¿Por qué ni los modelos más nuevos quedaron completamente a salvo?
Los modelos más recientes (Mk4, Q y Mk5) no repiten el escenario de cero bits, pero tampoco quedaron libres del problema. El fabricante de las Coldcard, la empresa Coinkite, agregó un paso adicional que toma un valor de un elemento seguro (SE, un chip dedicado a guardar la frase secreta) para reforzar el mismo generador débil, pero aprovecha apenas cuatro bytes, es decir 32 bits, de ese valor.
Treinta y dos bits equivalen a un máximo de 4.295 millones de combinaciones. Suena enorme, pero el hardware actual, capaz de probar miles de millones de combinaciones por segundo, puede recorrer ese universo en un tiempo razonable. Como referencia, una semilla con entropía completa debería tener 2 elevado a 256 combinaciones, una cifra que supera al número de átomos estimado en el universo observable. Esa diferencia de magnitudes es, en gran medida, la diferencia entre una clave verdaderamente segura y una que un atacante decidido puede recuperar.
Esa diferencia explica, además, una de las principales tensiones del episodio. Como reportó CriptoNoticias, Coinkite publicó un primer aviso responsabilizando únicamente al Mk3, y sostuvo que Mk4, Q y Mk5 no estaban afectados según su análisis inicial. Un análisis de la firma Block confirmó que esos modelos también son vulnerables, con un espacio de búsqueda mayor.
A eso se sumó el hallazgo de un investigador de Block que identificó otras 695 transacciones con el mismo patrón, que elevarían el total a unos 1.082 bitcoin, 82% más que la cifra inicial. El desarrollador Matt Corallo advirtió en X: «Existe un riesgo potencial muy alto de robo de fondos para algunas wallets Coldcard. Podría ser prudente mover los fondos restantes cuanto antes».
¿Qué fondos no quedaron expuestos y cómo migrar sin cometer errores?
No todas las semillas dependen del generador comprometido. Coldcard permite crear una semilla ingresando manualmente los resultados de al menos 99 tiradas de un dado físico de seis caras, en lugar de usar el generador interno: ese método toma la aleatoriedad directamente de las tiradas, por lo que el fallo del firmware no lo afecta.
Una frase de contraseña (passphrase) fuerte y única, sumada a la semilla, agrega una capa de protección independiente del fallo. Y en multifirma, el riesgo se mantiene solo si todas las claves del quórum se generaron en dispositivos vulnerables, porque una sola clave segura alcanza para proteger al conjunto.
Frente a la urgencia planteada por Poinsot y Corallo, el desarrollador Jameson Lopp introdujo un matiz importante: «Si tus fondos están en una semilla generada con un firmware vulnerable de Coldcard y buscas resguardarlos enviándolos a una semilla recién generada, lo más importante es no entrar en pánico y no apresurarse. Los errores pueden ser catastróficos».
La falla no reside en el modelo de autocustodia que promete el dispositivo, sino en la calidad de la aleatoriedad que ese modelo necesita para funcionar. Coinkite prometió un reporte técnico formal, mientras los desarrolladores de Bitcoin siguen discutiendo cuál es la respuesta correcta: migrar de inmediato, o priorizar, ante todo, no cometer un error irreversible en el camino.









