Cinco dados 3D con trazas de circuito grabadas, flotando sobre un fondo azul oscuro con velas japonesas y paneles de datos desenfocados; cuatro tienen las caras completamente en blanco y uno se enciende en ámbar mostrando sus puntos. El wordmark oficial de COLDCARD, en blanco monocromo, identifica el dispositivo en el tercio izquierdo
Ilustración propia generada con IA; los dados no son una fotografía real ni representan datos reales. El wordmark de COLDCARD es la marca oficial de Coinkite, incluido aquí solo para identificar el dispositivo del que trata este artículo -- no es material de marketing de Coinkite ni implica su respaldo.

594 BTC en 25 minutos: el fallo de entropía que expone semillas de COLDCARD

Un error de integración introducido en marzo de 2021 hizo que parte de los dispositivos COLDCARD generaran las semillas con una fracción de la aleatoriedad prometida. Aquí está el triaje por modelo y versión, y el orden en que conviene migrar.

El 30 de julio de 2026, unas 500 direcciones de Bitcoin se vaciaron casi a la vez: alrededor de 594 BTC, unos 38 millones de dólares, en menos de media hora. Nadie fue engañado, nadie perdió su respaldo de acero y no hubo firmware malicioso. Alguien adivinó las claves privadas, porque durante cinco años una parte de los dispositivos COLDCARD no generó las semillas como debía.

Qué modelos y qué versiones están afectados

Modelo Firmware al crear la semilla Entropía estimada
Mk3 y Mk2 v4 4.0.1 a 5.0.3 ~40 bits
Mk4 y Mk5 anterior a 5.6.0 ~72 bits
Q anterior a 1.5.0Q ~72 bits

Fuera de esa lista quedan las semillas creadas antes de marzo de 2021 con firmware 3.x, las que generaste en otro dispositivo e importaste, y las creadas con tiradas de dados. Esa última función parte del hash de tus tiradas físicas y no pasa por el generador interno, aunque conviene confirmarlo en el aviso oficial para tu versión exacta antes de fiarte del todo.

Por qué no puedes comprobar tu propia semilla

Aquí está la parte incómoda: no existe ninguna prueba, herramienta ni inspección que diga si unas palabras concretas nacieron con 40 bits o con 128. Una semilla débil se ve igual que una fuerte, palabra por palabra, y ningún test estadístico distingue una de otra.

Lo único que funciona como evidencia es la procedencia. Modelo, versión de firmware, método de generación, fecha. Si no lo recuerdas, la respuesta operativa es asumir que está afectada.

Qué hizo el dispositivo en lugar de tirar los dados

El microcontrolador STM32 de la COLDCARD lleva un generador de aleatoriedad por hardware: una fuente de ruido físico, exactamente la herramienta correcta. Coinkite escribió su propio envoltorio para usarlo y desactivó a propósito la versión que trae MicroPython, para que nada más tocara ese periférico por su cuenta. Fue una decisión prudente —y es justo la que acabó disparando el problema.

En marzo de 2021, el firmware 4.0.0 migró la criptografía del dispositivo a libsecp256k1. Por el camino, la generación de semillas dejó de llamar a la función propia de Coinkite y pasó a llamar a la de su biblioteca nueva. Sobre el papel, un cambio de una línea sin efecto funcional.

En la práctica, esa llamada aterrizó en un trozo de código con dos implementaciones posibles detrás del mismo nombre. Una lee el ruido del chip. La otra es una fórmula de software que MicroPython incluye por cortesía para los chips sin generador propio, digna para barajar una lista y desastrosa para fabricar una clave privada. Cuál de las dos se usaba lo decidía una macro de configuración que COLDCARD ponía a cero, y la biblioteca comprobaba si esa macro existía en lugar de si estaba activada. Existía. Ganó la fórmula de software.

Ni un aviso del compilador, ni un error de enlazado, ni un síntoma visible. El dispositivo seguía entregando 32 bytes de aspecto impecable cuando se los pedían, solo que los calculaba a partir del número de serie del chip y dos temporizadores.

Cuarenta bits, y por qué eso es adivinable

El número de serie no aporta nada: es una etiqueta de fábrica, permanente y parecida entre dispositivos del mismo lote, que además el aparato muestra en pantalla. Los dos temporizadores miden lo mismo —cuánto lleva encendido el dispositivo—. Con eso se construía la semilla.

Comparativa en bits: Mk3 y Mk2 v4 con ~40 bits, Mk4, Mk5 y Q con ~72 bits, frente a los 128 bits de una semilla BIP-39 de 12 palabras
Diagrama propio. Cada bit adicional duplica el espacio de búsqueda, así que la diferencia entre 40 y 128 no es de grado.

2⁴⁰ son unos 1,1 billones de posibilidades: un fin de semana para un clúster de GPUs decente. 2¹²⁸, lo que te habían prometido, son 3,4 × 10³⁸. No es un monedero algo más débil, es otra categoría de objeto.

Y hay algo que empeora este tipo de fallo frente a casi cualquier otro: es retroactivo. Un desbordamiento de búfer se parchea y el pasado queda limpio. Una clave nacida con 40 bits está comprometida mientras exista.

Passphrase y multifirma cambian tu urgencia

Una passphrase BIP-39 fuerte se aplica encima de la semilla y aporta su propia entropía, así que un monedero protegido con ella es bastante más difícil de atacar. Cuenta solo si es realmente aleatoria, no una frase que puedas recordar.

El multifirma funcionó bien aquí. El barrido del 30 de julio golpeó monederos de firma única, y quien reconstruya una de las claves de un 2-de-3 sigue sin poder gastar. Hay que rotar esa clave igualmente, pero con calma y sin saltarse pasos.

El plan de migración, en orden

La forma más habitual de perder dinero después de un incidente así no es el atacante original: son las prisas.

  1. Fija la prioridad. Mk3 o Mk2 v4 en firma única y sin passphrase fuerte es una emergencia real, porque es exactamente el perfil que ya se ha vaciado. Los ~72 bits de Mk4, Mk5 y Q están fuera del alcance de cualquier tecnología conocida: se migran de forma ordenada estos días, no de madrugada.
  2. Actualiza el firmware desde la web oficial de Coinkite, verificando la firma. Mk4 y Mk5 a 5.6.0 o superior, Q a 1.5.0Q o superior. La Mk3 está descontinuada, así que consulta el aviso oficial para ver si hay corrección para tu modelo.
  3. Genera la semilla nueva con dados. Unas 99 tiradas de un D6 dan 256 bits, unas 50 dan 128. Es la función que existe precisamente para no tener que confiar en el generador del fabricante.
  4. Respalda y verifica el respaldo antes de mover un solo satoshi, leyendo las palabras desde el acero y no desde la pantalla.
  5. Prueba con poco. Envía una cantidad pequeña, comprueba que llega y que puedes gastarla, y después mueve el resto.
  6. Jubila la semilla vieja para siempre. No vuelvas a recibir en ella jamás.

Un aviso sobre el paso 5: mover todos tus UTXO de golpe al monedero nuevo une públicamente todo tu historial, que es justo el problema que describimos en consolidación tóxica. En una migración de 40 bits la urgencia gana a la privacidad, pero conviene saber qué estás pagando por ir rápido, y recuperar las buenas prácticas de gestión práctica una vez a salvo.

Lo que hay que rotar además de la semilla

El mismo generador alimentaba otros secretos del dispositivo. Según el análisis de Block, incluye claves privadas de paper wallets, las máscaras aleatorias de Seed XOR, claves efímeras de clonado y de sesiones USB cifradas, secretos temporales de Key Teleport, el material TOTP de Web2FA y las contraseñas de Secure Notes.

En la práctica: barre cualquier paper wallet generada en un dispositivo afectado, trata cualquier división con Seed XOR hecha en uno de ellos como si tuviera el margen degradado, regenera Web2FA y rota las contraseñas que te haya generado el aparato. Y si tu semilla vieja aparece en un plan de herencia, ese documento también hay que actualizarlo.

La segunda ola: los falsos verificadores de semillas

A las pocas horas de cualquier incidente público llega la parte que acaba haciendo más daño acumulado que el fallo original. Cuentas de soporte falsas, "verificadores de monederos afectados", servicios de rescate, enlaces urgentes a firmware. Estarán bien hechos.

Hay una sola regla y no tiene excepciones: tus palabras no salen nunca de tu respaldo de acero y de tu dispositivo. Ni a una web que comprueba si estás afectado, ni a un chat de soporte, ni a una herramienta de recuperación. Coinkite no te las va a pedir. Nadie legítimo lo hace.

Qué se lleva uno de aquí

El chip no falló y el algoritmo no era débil. El generador por hardware funcionaba y estaba ahí al lado, sin usar. Lo que falló fue la costura entre tres piezas de software correctas por separado, y falló en silencio durante cinco años porque la salida de un generador roto es indistinguible de la de uno bueno.

Para quien usa estos dispositivos, la conclusión práctica cabe en cuatro líneas. Usa los dados, que es la única función que saca al fabricante de la ecuación por completo. Reparte en multifirma con dispositivos de fabricantes distintos, porque lo que se vació fue firma única. Usa una passphrase generada, no memorable. Y anota la procedencia de cada semilla que crees, porque cuando llegue el próximo aviso esa nota es la diferencia entre responder en cinco minutos y pasar una semana con el estómago cerrado.

Cuando ya tengas los fondos en el monedero nuevo, revisa qué está enseñando de ti la cadena con el analizador de privacidad, gratis y sin registro, calculado contra nuestro propio nodo.

Última actualización: 2026-07-31