Cuatro líneas de código.
Más de 1.596 BTC perdidos.
En marzo de 2021 una compilación de firmware de COLDCARD dejó de pedir números aleatorios a su chip de hardware y en su lugar hizo que software ordinario los calculara. Nadie lo descubrió durante cinco años. En julio de 2026 los atacantes hicieron las cuentas y empezaron a vaciar las carteras.
Una comprobación de seguridad que estaba ahí y no hizo nada
Toda la protección depende de un número que nadie puede adivinar
Una cartera de hardware hace varias tareas. Te muestra lo que estás firmando realmente en lugar de pedirte que confíes en la pantalla de un ordenador infectado, y mantiene tu clave dentro de un chip diseñado para resistir aperturas físicas. Cada una de esas defensas presupone que el número del que salió tu clave no se podía adivinar. Si se pudiera, un atacante nunca tendría que superar ninguna de ellas. El conjunto del que se extrae una frase de 24 palabras contiene aproximadamente un número por cada mil átomos en el universo observable. Un conjunto de ese tamaño no se puede buscar. Ese es todo el modelo de seguridad.
12 palabras contienen 128 bits de entropía, 24 contienen 256, además de una suma de comprobación obtenida mediante el SHA-256 de dicha entropía. BIP-39 extiende el resultado para generar la clave maestra de BIP-32.
12 palabras contienen 128 bits de entropía, 24 contienen 256, además de una suma de comprobación obtenida mediante el SHA-256 de dicha entropía. BIP-39 extiende el resultado para generar la clave maestra de BIP-32.
COLDCARD dejó de extraer números de ese conjunto
Un cambio en el firmware realizado en 2021 hizo que la cartera dejara discretamente de pedirle ese número a su chip de aleatoriedad dedicado y pasara a calcular uno mediante software ordinario. Vista lado a lado, esta es la incidencia al completo:
Eso no es seguridad reducida a un tercio. Cada bit duplica el trabajo, por lo que 88 bits menos reducen la tarea en un factor de 2⁸⁸. Un billón es un número grande para una persona y pequeño para alguien que alquila máquinas de alto rendimiento para procesarlo.
La generación de semillas pasó de ckcc.rng_bytes() a ngu.random.bytes(). Coinkite estima unos 40 bits de espacio de búsqueda restante en el Mk3 y unos 72 en el Mk4/Mk5/Q, frente a un objetivo de 128 bits. Un análisis independiente de Block llega al mismo orden (por debajo de 2⁴⁰·⁷ y de 2⁷³·³) y encuentra condiciones más restrictivas donde queda mucho menos.2
La generación de semillas pasó de ckcc.rng_bytes() a ngu.random.bytes(). Coinkite estima unos 40 bits de espacio de búsqueda restante en el Mk3 y unos 72 en el Mk4/Mk5/Q, frente a un objetivo de 128 bits. Un análisis independiente de Block llega al mismo orden (por debajo de 2⁴⁰·⁷ y de 2⁷³·³) y encuentra condiciones más restrictivas donde queda mucho menos.2
Porque el software no puede ser aleatorio
Piensa en qué hace que el lanzamiento de una moneda sea impredecible. La fuerza del lanzamiento, la gravedad, una corriente de aire de un aparato de aire acondicionado, ligeros temblores en el suelo. Docenas de influencias que puedes nombrar y docenas que no. Nadie puede calcular la trayectoria, así que nadie puede adivinar el resultado. El software funciona de otra manera. Ejecuta una fórmula fija sobre un puñado de valores iniciales y produce una respuesta fija. Aquí esos valores eran el número de serie del chip y el tiempo que el dispositivo llevaba encendido. Un atacante que aprende la receta y los ingredientes vuelve a calcular el resultado en lugar de adivinarlo.
Con el generador de números aleatorios de hardware desactivado, rng_get() se vinculó al PRNG Yasmarang de MicroPython, inicializado a partir de un estado no secreto (UID, SysTick, RTC) y no recopiló nueva entropía después de eso, por lo que los candidatos se enumeran sin conexión. Coinkite no considera que las semillas mezcladas con 50 o más tiradas justas y privadas estén en riesgo solo por este problema: 50 × log₂6 ≈ 129 bits.3
Con el generador de números aleatorios de hardware desactivado, rng_get() se vinculó al PRNG Yasmarang de MicroPython, inicializado a partir de un estado no secreto (UID, SysTick, RTC) y no recopiló nueva entropía después de eso, por lo que los candidatos se enumeran sin conexión. Coinkite no considera que las semillas mezcladas con 50 o más tiradas justas y privadas estén en riesgo solo por este problema: 50 × log₂6 ≈ 129 bits.3
Y la comprobación destinada a evitarlo formulaba la pregunta incorrecta
Había una salvaguarda en la compilación, escrita específicamente para evitar que el firmware se enviara sin el generador de hardware. Preguntaba si existía un ajuste, no si el ajuste estaba activado. El ajuste existía y estaba desactivado. La salvaguarda se quedó callada, la compilación no informó de errores y el firmware se envió.
#ifndef solo comprueba si está definido. La configuración de placa definió MICROPY_HW_ENABLE_RNG como 0, definido y desactivado, por lo que el #error nunca se activó y el enlazador resolvió rng_get() recurriendo al software.3
#ifndef solo comprueba si está definido. La configuración de placa definió MICROPY_HW_ENABLE_RNG como 0, definido y desactivado, por lo que el #error nunca se activó y el enlazador resolvió rng_get() recurriendo al software.3
El defecto, citado del código fuente.3
Nada en él parecía incorrecto durante cinco años
Una frase de recuperación débil se ve exactamente igual que una fuerte. Veinte palabras ordinarias, el checksum correcto, un dispositivo que se comporta normalmente. Nada te avisa en pantalla y nada da error en la compilación. El código fuente estuvo público todo el tiempo. Leerlo aún requería que alguien abriera ese archivo en particular.
La longitud de la salida, la ausencia de ceros y la no repetición se superan sin problemas en un PRNG débil, por lo que las pruebas de control habituales tampoco podrían haberlo detectado.
La longitud de la salida, la ausencia de ceros y la no repetición se superan sin problemas en un PRNG débil, por lo que las pruebas de control habituales tampoco podrían haberlo detectado.
Entonces alguien hizo los cálculos
Jamás tocaron un solo dispositivo. Generaron las frases probables en sus propias máquinas, calcularon qué direcciones de Bitcoin produciría cada una y comprobaron esas direcciones frente a la cadena de bloques pública. Toda dirección que contenía saldo fue vaciada. Una cartera que había permanecido desconectada en un cajón desde 2022 estaba exactamente igual de expuesta que una en uso diario.
Los candidatos se derivan sin conexión mediante BIP-39/BIP-32; solo la consulta del saldo final accede a la red, por lo que no hay ningún rastro ni señal previa en el lado de la víctima.3
Los candidatos se derivan sin conexión mediante BIP-39/BIP-32; solo la consulta del saldo final accede a la red, por lo que no hay ningún rastro ni señal previa en el lado de la víctima.3
Esta página no es una celebración.
Coinkite reveló el fallo, publicó un informe técnico y lanzó una corrección. Investigadores externos pudieron reconstruir lo ocurrido porque COLDCARD es de código abierto.
Una advertencia sobre las estimaciones: describen a cuántas adivinanzas se enfrenta un atacante bajo las suposiciones actuales, no con un cronograma. Nadie puede decir cuánto tiempo tardaría en descifrarse una cartera en particular.2
Lee esto antes que nada
Lo que debes hacer depende de qué dispositivo estabas usando cuando se creó por primera vez la frase de recuperación, no de cuál tengas hoy.
Asume que esto sigue ocurriendo. Las frases se volvieron adivinables en 2021 y el método ya es público, por lo que cualquiera puede ejecutar la misma búsqueda. No hay ningún parche que lo solucione desde fuera, ni razón para que un atacante se detenga. Si estás afectado, la suposición segura es que el tiempo es lo único que hay entre tú y ellos.
Mk2 y Mk3: mueve tus monedas ahora
El rango afectado abarca desde el firmware 4.0.1 hasta el 4.1.9. La versión 4.2.0 corrige la generación de nuevas frases, pero ninguna actualización puede retroceder para añadir aleatoriedad a una frase que ya existe. Cree una billetera nueva en un dispositivo en el que confíe y mueva sus fondos.1
Mk4 y Mk5: comprueba la versión de firmware
Si la frase se creó en un firmware anterior al 5.6.0 (o 6.6.0X en compilaciones Edge), actualiza, crea una cartera completamente nueva en el firmware actualizado y luego mueve tus fondos. Actualizar por sí solo no repara la vieja frase.1
Q: igual, el límite es 1.5.0Q
Actualice a la versión 1.5.0Q o posterior, o a la 6.6.0QX en compilaciones Edge, cree una billetera nueva, anote y pruebe la copia de seguridad, envíe una pequeña transacción de prueba y luego mueva el resto.1
¿Actualizar el firmware de COLDCARD soluciona una frase de recuperación que ya tengo?
¿Cómo puedo averiguar con qué firmware se creó mi frase de recuperación de COLDCARD?
¿Cómo puedo comprobar si mi dirección se ha visto afectada por esto?
¿Protegen las tiradas de dados o una frase de contraseña una frase de recuperación de COLDCARD?
¿Cubre el aviso de Coinkite a todas las COLDCARD afectadas?
Ningún dispositivo OneKey se ve afectado
Ni un solo modelo que hayamos lanzado jamás. Nuestro firmware no incluye ninguna dependencia de libngu, Coinkite, COLDCARD o CKCC, por lo que la ruta de código que falló no está ahí para ser alcanzada, y puedes comprobarlo tú mismo en nuestros repositorios. En nuestro hardware actual la clave proviene del generador verdaderamente aleatorio dentro de un elemento seguro certificado, nunca de software en el procesador principal. Esa sustitución es lo que fue este fallo.
Tampoco nos fiamos ciegamente de eso. Cuando saltó la noticia, Anzen Lab rastreó nuestra aleatoriedad de principio a fin (de dónde viene, qué la llama y los ajustes de compilación que deciden qué versión llega a tu dispositivo) y publicó los archivos exactos que comprobaron.12
Leer la revisión de Anzen Lab¿Podría haberle ocurrido esto a un OneKey?
Este fallo necesitaba que tres cosas diferentes fueran ciertas a la vez. En un OneKey ninguna de ellas es cierta, y puedes comprobar las tres tú mismo.
¿De dónde proviene entonces la aleatoriedad de OneKey?
Generado dentro de un chip con certificación EAL 6+
Sus claves se crean y almacenan en un chip dedicado y resistente a manipulaciones, en lugar de en el procesador de propósito general que ejecuta todo lo demás. EAL 6+ es el nivel de garantía utilizado en tarjetas de pago y de identidad.
Aleatoriedad que se supervisa a sí misma
Ese chip genera aleatoriedad a partir de ruido físico real y comprueba continuamente su propio resultado. Si la aleatoriedad empieza a funcionar mal, el chip se da cuenta en lugar de continuar silenciosamente.
Volvimos a revisar lo nuestro
Tras las noticias de COLDCARD, Anzen Lab rastreó nuestra propia aleatoriedad de principio a fin (de dónde viene, qué la llama realmente y los ajustes de compilación que deciden qué versión termina en tu dispositivo) y publicó los archivos exactos que examinaron.11


Cuatro controles en cada OneKey, y ninguno confía en los otros tres
Cualquiera de estos puede pasar por alto algo. El punto es que los cuatro tendrían que pasar por alto lo mismo. COLDCARD no tenía tal respaldo: una sola opción de compilación no verificada fue suficiente.
Código abierto que puedes verificar realmente
Nuestro firmware y aplicaciones son públicos en GitHub, y nuestras compilaciones son reproducibles, lo que significa que puedes compilar el código tú mismo y confirmar que produce exactamente el software que se ejecuta en tu dispositivo. Ese es el paso que detecta un problema de "código correcto, versión incorrecta".
OneKey en GitHub
Auditores externos nos examinan oficialmente
La firma de seguridad SlowMist nos audita y publica los informes. Evaluaciones separadas cubren OneKey Pro, el Classic 1S y nuestro SDK. Nuestras prácticas de seguridad están certificadas según la norma ISO/IEC 27001, y la línea Pro y Classic 1S está certificada frente a EN 18031 por un organismo designado por la UE. Todo ello publicado, nada de autoevaluación.13
Leer el resumen de auditoría de SlowMistUn equipo pagado para romper nuestros propios productos
Anzen Lab es nuestro equipo de seguridad interno compuesto por ingenieros de seguridad de hardware, firmware y aplicaciones, que trabaja con un grupo rotativo de investigadores externos. Su trabajo es romper carteras de hardware, incluidas las nuestras, antes de que se envíe nada. Cuando estalló esta historia, reexaminaron la aleatoriedad de OneKey de principio a fin y publicaron exactamente qué archivos comprobaron.11
Leer el análisis de Anzen LabPagamos a desconocidos para que encuentren nuestros errores
Cualquier persona puede informarnos sobre una vulnerabilidad de forma privada, a través de nuestro programa público en BugRap o directamente en [email protected], y recibir una compensación por ello. La gravedad determina el pago, puntuado según CVSS. El objetivo principal es hacer que informarnos sea más atractivo que vender la vulnerabilidad.15
OneKey en BugRapPrueba la cartera en tu mano
entro.tools es una herramienta gratuita y de código abierto que lee los números aleatorios reales que salen de una cartera de hardware y ejecuta las pruebas de salud estadística estándar sobre ellos, en tu navegador, a través de USB, sin subir nada a ninguna parte y sin necesidad de actualizar el firmware.
Ejecuta pruebas de salud FIPS 140-2, NIST SP 800-22 y SP 800-90B localmente mediante WebUSB (Chrome o Edge de escritorio). El dispositivo pide exportar entropía, un lote de números aleatorios que acaba de generar, nunca tu frase de recuperación.16
La prueba universal de Maurer necesita al menos 387.840 bits; por debajo de esa cifra el informe la marca como omitida en lugar de descartarla en silencio.16
Qué carteras se pueden comprobar
Si un tercero puede leer los números aleatorios sin procesar de un dispositivo. Esta es una dimensión muy concreta. Consulta la nota debajo de ella.
Preguntas que esto plantea para el resto
¿Está OneKey afectado por el fallo de entropía de COLDCARD?
¿A qué monederos físicos afecta el fallo de entropía de COLDCARD?
¿Puedo comprobar la aleatoriedad de mi propio monedero?
¿Cómo puedo juzgar si se puede confiar en un monedero físico?
Explicar lo complicado es trabajo nuestro

¿Qué tan difícil es adivinar tu frase de recuperación? ColdCard lo hizo fácil

¿Sigue siendo segura COLDCARD? Modelos afectados, firmware corregido y migración de frases antiguas

Cómo generan tu frase de recuperación las billeteras OneKey (y de dónde sale la aleatoriedad)
Seguridad que puedes comprobar, no seguridad en la que debas creer.
De código abierto y reproducible, auditada por terceros, atacada por nuestro propio laboratorio y con recompensa cuando alguien encuentra un agujero. Estos son los dispositivos sobre los que trata este debate.
Referencias
Fuentes a continuación, recuperadas el 6 de agosto de 2026. El aviso y el informe técnico de Coinkite van primero, seguidos del análisis independiente a nivel de código fuente y la contabilidad en la cadena de bloques. Las cifras de pérdidas siguen revisándose al alza: Galaxy Research confirmó 1.596 BTC el 4 de agosto y situó las pérdidas sospechosas cerca de los 2.055 BTC.
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)





