492 / 691CK-RNG

COLDCARD RNG Incident (2026)

Incidente de generación de aleatoriedad en COLDCARD

Un fallo de integración divulgado dirigía la generación de semillas a un generador de software predecible en lugar de la fuente de hardware prevista. El firmware corregido cambia la generación futura; una semilla afectada ya existente requiere una evaluación independiente y migración según las indicaciones actuales.

COLDCARD RNG Incident (2026) designa el fallo de generación de secretos divulgado en julio de 2026 y su corrección. Importan el modelo, la rama y la versión del firmware al crear la semilla, su origen y cualquier entropía independiente. No fue una toma de control remota del dispositivo ni un fallo del consenso de Bitcoin.

Coinkite y Block publicaron sus primeros análisis el 30 de julio de 2026 tras recibir informes de pérdidas. El fabricante describe a atacantes derivando claves privadas débiles sin conexión, no controlando dispositivos a distancia. La marca de una cartera por sí sola no permite determinar la causa de una pérdida individual. El registro técnico y las recomendaciones posteriores deben leerse junto con sus fechas de revisión. [Coinkite — COLDCARD Security Advisory] [Block — Predictable RNG Fallback and 32-Bit Reseed]

Tras la transición a libNgU, ngu.random.bytes llegaba a rng_get de MicroPython y a su generador Yasmarang. MICROPY_HW_ENABLE_RNG tenía el valor 0; sin embargo, #ifndef comprobaba la existencia de la macro, no la activación de la ruta de hardware. El código TRNG previsto podía estar en el binario sin utilizarse para generar semillas. No fue un fallo de hardware que activara una alternativa de emergencia durante la ejecución. [Coinkite — Technical Deep Dive into the Entropy Issue]

El estado del software procedía de datos del dispositivo, temporizadores e historial de llamadas. Para Mk4, Mk5 y Q, Block describe una reinicialización adicional limitada a 32 bits: como máximo 2^32 secuencias distintas si el resto del estado permanece fijo. Coinkite publicó estimaciones totales preliminares de aproximadamente 40 bits para Mk2/Mk3 y 72 bits para modelos posteriores. Las cifras parten de supuestos diferentes; no permiten deducir un coste universal de ataque ni afirmar que toda cartera pueda ser comprometida de inmediato. [Block — Predictable RNG Fallback and 32-Bit Reseed] [Coinkite — Technical Deep Dive into the Entropy Issue]

Las indicaciones oficiales enumeran Mk2/Mk3 4.0.1–4.1.9. El análisis inicial de Block incluye 4.0.0 y el cambio de marzo de 2021; mantenemos explícita esta discrepancia documental. Ante un origen incierto de la semilla, la guía recomienda la vía prudente de migración. Mk4/Mk5 y Q estaban afectados antes de la corrección de su rama. La antigua afirmación del primer análisis sobre todas las versiones de producción no describe las versiones corregidas actuales. [Coinkite — COLDCARD Security Advisory] [Block — Predictable RNG Fallback and 32-Bit Reseed] [COLDCARD — Seed migration guide]

Las correcciones mínimas son Mk2/Mk3 4.2.0, Mk4/Mk5 Standard 5.6.0, Q Standard 1.5.0Q, Mk4/Mk5 Edge 6.6.0X y Q Edge 6.6.0QX. No se pueden comparar las versiones de distintas ramas como una sola secuencia. En esta revisión, la página de estado recomienda Standard 5.6.2 para Mk4/Mk5 y 1.5.2Q para Q. Antes de instalar, compruebe la página oficial actual, el hash y la firma de la versión; un número mayor de otra rama no basta. [COLDCARD — Current Security Status]

El hash determinista puede cambiar la apariencia de la salida, pero no ampliar el conjunto de entradas posibles. BIP39 Checksum tampoco añade la entropía ausente. Una semilla externa generada de forma segura no se debilita por este incidente simplemente al importarla a COLDCARD. Una semilla afectada, en cambio, sigue afectada tras restaurarla en otro dispositivo; actualizar, clonar o transferir no la convierte en una semilla nueva. [Block — Predictable RNG Fallback and 32-Bit Reseed] [COLDCARD — Seed migration guide]

La excepción del fabricante exige al menos 50 tiradas justas, independientes y privadas introducidas mediante el flujo original Add Dice Rolls, y utilizar las palabras finales mostradas después. Si hubo menos tiradas o existe incertidumbre, recomienda migrar. Una BIP39 Passphrase fuerte y única añade una barrera, pero no repara una semilla débil; el fabricante también recomienda migrar a sus usuarios. El PIN no es una passphrase. Los requisitos actuales para crear semillas deben distinguirse de esta excepción histórica. [Coinkite — COLDCARD Security Advisory]

La guía actual exige verificar las copias de seguridad, instalar la corrección adecuada, crear una semilla realmente nueva, comprobar su huella y dirección de recepción en el dispositivo y hacer una pequeña transacción de prueba. Solo después de verificar el nuevo destino se trasladan los fondos restantes. Conserve la copia antigua hasta confirmar toda la migración y revise cada cuenta financiada, cartera con passphrase, hija derivada y política multisig. Ante una discrepancia, no borre ni envíe nada; los datos privados de recuperación no deben introducirse en formularios web. [COLDCARD — Seed migration guide]

Multisig no supone una excepción automática: suficientes claves de firma comprometidas pueden satisfacer el umbral de la política antigua. Deben evaluarse las claves seguras restantes y verificarse la política de sustitución. Block identifica otros consumidores de la misma aleatoriedad, como claves independientes de paper wallets y ciertas claves temporales de cifrado. La gravedad depende del protocolo concreto y de los datos disponibles; el impacto no es idéntico en todas las funciones. [Block — Predictable RNG Fallback and 32-Bit Reseed] [COLDCARD — Seed migration guide]

La página de estado distingue una prueba del RNG físico en un Mk4 real, revisiones del código y la reproducción de una compilación de una corrección concreta. Son comprobaciones acotadas de la ruta y del mecanismo, no una auditoría completa de cada binario ni una prueba de ausencia de errores. El firmware Standard actual también exige entropía aportada por el usuario; la antigua afirmación de que siempre es opcional resultaría engañosa. La página aún indica que se prepara un informe técnico detallado independiente sobre el incidente. [COLDCARD — Current Security Status]

Ejemplo · CK-RNG

Firmware nuevo, pero la misma semilla original

Un usuario creó una semilla en Mk3 4.1.9 sin tiradas de dados propias. Después instaló 4.2.0 y restauró las mismas palabras en otro dispositivo. El origen de la semilla no cambió. Evalúa la solución según la guía de migración: una semilla nueva generada con seguridad, copia y dirección verificadas, transferencia de prueba y solo entonces el resto. Conserva la copia antigua hasta confirmar todos los fondos.

Para obtener la imagen más completa, lee esta entrada junto con Cryptographic Entropy, Deterministic RNG, Seed Generation, BIP39 checksum, BIP39 passphrase, Dice Roll Entropy.

01¿Basta con actualizar el firmware o comprar otra cartera?

No. Ninguno de esos pasos cambia una semilla existente. Importa dónde y cómo se generó. Los fondos afectados deben tratarse según la guía de migración y las condiciones exactas de la excepción de dados independientes; restaurar las mismas palabras no elimina el problema.

02¿La cifra de 32 bits significa que atacar todos los modelos es igual de fácil?

No. En el análisis de Block limita la reinicialización adicional manteniendo fijos el resto del estado y el historial de llamadas. Desconocer datos del dispositivo o tiempos cambia el trabajo del atacante. La estimación no es un benchmark universal ni prueba la seguridad de una semilla afectada concreta.

DOC · 001Coinkite — Technical Deep Dive into the Entropy IssueFuente primaria ↗DOC · 002Coinkite — COLDCARD Security AdvisoryFuente primaria ↗DOC · 003Block — Predictable RNG Fallback and 32-Bit ReseedFuente primaria ↗DOC · 004COLDCARD — Current Security StatusFuente primaria ↗DOC · 005COLDCARD — Seed migration guideDocumentación ↗
Fuentes primero · No es asesoramiento financiero