
Alguien ha estado vaciando carteras de Bitcoin que nunca deberían haber sido accesibles.
Las monedas estaban en dispositivos Coldcard —carteras de hardware del fabricante canadiense Coinkite, del tipo que nunca tocan internet. Sin enlaces de phishing. Sin malware. Sin laptop robada. Los atacantes simplemente descifraron cuáles eran las claves privadas.
Galaxy Research ha rastreado ahora más de 1.596 BTC robados en tres oleadas confirmadas, con una cuarta oleada sospechada que elevaría el total a aproximadamente 2.055 BTC —unos 130 millones de dólares a precios actuales. Un solo barrido movió 70 millones de dólares en 41 minutos. Coinkite afirma que al menos 15 atacantes diferentes se han sumado.
La compañía publicó un documento técnico explicativo el 1 de agosto, explicando lo que salió mal. Es un documento inusualmente sincero, y la versión corta es que la cartera estuvo lanzando dados trucados durante ocho años sin que nadie se diera cuenta.
En 2021, Coinkite trasladó la criptografía de Coldcard a libsecp256k1, la misma biblioteca que utiliza Bitcoin Core. Una buena decisión. La integración es donde todo se vino abajo.
La migración redirigió silenciosamente la generación de semillas lejos del generador de números aleatorios por hardware propio de Coldcard y hacia el recurso de software de MicroPython —un pequeño algoritmo llamado Yasmarang que existe para dispositivos sin chip de aleatoriedad alguno.
🚨LAS PÉRDIDAS POR EL HACKEO DE COLDCARD SUPERAN LOS $100M
Con alta confianza, 1,596 BTC han sido robados de ~7300 direcciones a través de 3 oleadas confirmadas + 14 incidentes menores adicionales.
Si añadimos los sospechosos (pero no confirmados), el total asciende a $130m (2k BTC).
Más información en el hilo a continuación 👇 pic.twitter.com/RAl3ib67qa
— Galaxy Research (@glxyresearch) August 3, 2026
Coldcard tiene un chip de aleatoriedad. Simplemente dejó de ser utilizado.
La razón es casi demasiado pequeña para creerla. Una guarda de compilación usó #ifndef, que verifica si una configuración existe en lugar de si está activada. Coinkite había definido esa configuración como cero, lo que significaba "apagada". Como cero todavía cuenta como definido, la verificación de seguridad pasó y la compilación se completó. Ambas versiones de la función tenían firmas idénticas, por lo que nada parecía estar mal.
"La mayor parte de la aleatoriedad en el COLDCARD provenía de un PRNG que yo no sabía que estaba realmente en la base del código fuente", escribió Coinkite, refiriéndose a un generador de números pseudoaleatorios —software que produce números que parecen aleatorios pero siguen una receta fija a partir de un valor inicial.
Alimentas la receta con el mismo valor inicial y obtienes el mismo resultado. Siempre.
En los dispositivos Mk2 y Mk3 con firmware 4.0.1 a 4.1.9, ese valor inicial provenía del número de serie del chip y de su reloj. Coinkite estima el espacio de búsqueda resultante en aproximadamente 40 bits. Los modelos más nuevos mezclaron un poco de entropía del elemento seguro, elevándolos a aproximadamente 72 bits.
Ninguno es 128, el objetivo.
La brecha importa más de lo que parece. Los bits son exponentes. Un espacio de búsqueda de 128 bits contiene más combinaciones que átomos en el universo observable, y nadie lo está buscando. Cuarenta bits es aproximadamente un billón —un número que una laptop decente puede procesar. Cada bit que pierdes reduce el trabajo a la mitad.
El equipo de ingeniería de Block, que publicó su propio análisis, situó el espacio de búsqueda efectivo del elemento seguro de los dispositivos más nuevos en 2^32 candidatos, con un promedio de alrededor de 2^31 intentos. Su evaluación para las placas más antiguas es más contundente: para un ID de dispositivo, estado del temporizador e historial de llamadas conocidos, la generación de la cartera es determinista.
Y determinista es lo opuesto a aleatorio, lo cual es esencial para la criptografía.
Coinkite sospecha que fue descubierto por una máquina. "Tenemos que asumir que alguien usó IA para revisar versiones anteriores de nuestro firmware y se topó con este problema", escribió la compañía, añadiendo que recientemente había ejecutado uno de los mejores modelos de IA disponibles sobre el mismo código y no encontró nada. "Tanto los atacantes como los defensores tienen las mismas herramientas de IA, pero hoy no nos ayudó a nosotros, solo ayudó a los malos."
Ya hay un firmware corregido disponible para cada modelo afectado. No repara las semillas existentes; esas carteras tienen que ser regeneradas y los fondos transferidos. Decrypt ha cubierto cómo cambia el almacenamiento aislado después de un exploit como este y ha rastreado las pérdidas que superan los 114 millones de dólares.
La entropía es la medida de cuánto desconoce un atacante.
En otras palabras, es básicamente incertidumbre, contada en bits. Un bit es un lanzamiento de moneda: dos resultados, y quien adivina acierta la mitad de las veces. Diez bits son 1.024 resultados. Cada bit duplica la carga de trabajo del adivinador.
Una cartera de Bitcoin es un número muy grande que se mantiene en secreto. La dirección a la que la gente envía monedas se deriva matemáticamente de ella, y la derivación funciona solo en una dirección: puedes ir de la clave a la dirección, pero nunca al revés.
Así que la seguridad de cada cartera se basa en una pregunta: ¿Cuántos números tendría que probar un atacante?
Si el número fue elegido con 128 bits de entropía, la respuesta es "más de lo que la física permite". Si fue elegido con 40, la respuesta es "dame algo de tiempo".
Esta es la misma propiedad que hace que la amenaza de la computación cuántica sea digna de debate —una máquina cuántica atacaría las matemáticas que vinculan la clave con la dirección. El error de Coldcard nunca lo necesitó. Hizo que las claves fueran adivinables antes de que esas matemáticas intervinieran.
Aquí es donde el vocabulario se vuelve resbaladizo. Un generador pseudoaleatorio produce una salida que pasa las pruebas estadísticas de aleatoriedad, así que básicamente nada que una hoja de cálculo señalaría. Esa salida todavía está completamente determinada por su valor semilla. Parece aleatorio pero no lo es.
La aleatoriedad estadística y la impredecibilidad criptográfica son propiedades diferentes, y la salida de Coldcard habría superado la primera prueba mientras fallaba la segunda por completo.
La verdadera aleatoriedad debe provenir del ruido físico: fluctuaciones eléctricas en un circuito, fluctuaciones térmicas, desintegración radiactiva. Para eso estaba el chip de hardware en Coldcard. Ese es el chip que la bandera de compilación desconectó.
Mientras los usuarios se apresuraban a regenerar las semillas, muchos recurrieron a la solución obvia de baja tecnología. Las Coldcards te permiten lanzar dados físicos e introducir los resultados como entropía. La propia guía de Coinkite considera que las semillas creadas con al menos 50 tiradas de dados independientes y privadas no están en riesgo por el error.
Puede sonar estúpido, pero la compañía en realidad vende una bolsa con "100 pequeños y bonitos dados" para facilitar todo el proceso.
El 31 de julio, el desarrollador de Bitcoin Core, Luke Dashjr, publicó una advertencia: "Bastantes personas sugieren/usan dados para mitigar la vulnerabilidad de Coldcard. Tenga en cuenta que los dados comunes no están diseñados para ser criptográficamente seguros. Si va a hacer esto, probablemente debería comprar dados de casino de precisión. E incluso entonces, tenga otra fuente de entropía."
Twitter de Bitcoin no se lo tomó con calma.
"jaja, ahora ni siquiera puedes tirar dados", escribió un usuario. "La autocustodia está acabada…" Otro preguntó si debería contratar a alguien con Parkinson para que los lanzara. (No muy amable.)
should I hire someone with parkinsons to throw the dice?
— Murern (@Bitcoin_Murern) July 31, 2026
Probablemente la respuesta más útil llegó con aritmética. El desarrollador Justin Sharp hizo los cálculos sobre cuánto te cuesta un dado defectuoso:
"Exagerado. Un d6 perfecto da 2.585 bits por tirada. Un dado notablemente sesgado, por ejemplo, con una cara que cae el 20% de las veces en lugar del 16.7%, aún da alrededor de 2.55 bits. En 99 tiradas, esa es la diferencia entre ~256 bits y ~252 bits de entropía."
Cuatro bits de 256. Esa es toda la penalización por un dado visiblemente injusto.
Dashjr no se equivoca al decir que los dados baratos tienen un sesgo medible —los puntos moldeados por inyección eliminan cantidades ligeramente diferentes de plástico de cada cara, razón por la cual los casinos usan dados de precisión con los puntos rellenos al ras. Tiene razón sobre la física y se equivoca sobre lo que está en juego. Perder cuatro bits de 256 te deja en 252. El error de Coldcard dejó a los usuarios en 40.
Sin embargo, hay un argumento más incisivo escondido en su consejo, y no se trata de la tolerancia de fabricación. Se trata de no confiar en una sola fuente. El fallo de Coldcard no fue que su entropía estuviera ligeramente sesgada, fue que un componente dejó de contribuir silenciosamente y nadie se dio cuenta.
Si generaste una semilla en un Coldcard afectado sin tiradas de dados (en serio) o una frase de contraseña BIP-39 fuerte, esa semilla está comprometida.
Actualiza el firmware, genera una nueva semilla, verifica la huella digital, envía una transacción de prueba y luego transfiere todo. El aviso de Coinkite lo explica modelo por modelo. Las semillas exportadas arrastran el defecto —mover una semilla defectuosa a otra aplicación de cartera no resuelve nada.
Para todos los demás, la conclusión no es que las carteras de hardware estén rotas o que los dados sean una trampa.
Es que "aleatorio" es una afirmación, y las afirmaciones necesitan ser verificadas. El código fuente de Coldcard fue público todo el tiempo. El RNG de hardware previsto estaba justo allí en el binario. Los revisores confirmaron su existencia pero nunca confirmaron que el generador de semillas realmente lo llamara.
Ocho años de auditorías revisaron el código correcto. Nadie verificó si se ejecutaba.