El equipo de Ingeniería y Seguridad de Bitcoin de Block, liderado por el ingeniero Clay Garrett, identificó que el atacante utilizó una cuenta de pago en un conocido proveedor de servicios de blockchain para identificar y consultar de manera eficiente las direcciones vulnerables . El patrón en cadena del atacante —barridos inusualmente rápidos y secuenciales de direcciones que compartían la misma debilidad— alertó a los investigadores. Block confirmó evidencia de rastreo que conectaba la actividad del operador directamente con la infraestructura de ese proveedor
.
La investigación de Block encontró lo que Garrett describió como "una especificidad extraordinaria, hasta el nivel de cuenta" . El servicio de análisis funcionó como una herramienta de reconocimiento, permitiendo al atacante mapear rápidamente qué direcciones se generaron en firmware vulnerable y priorizar los objetivos más ricos
.
El error se introdujo en un commit de firmware de marzo de 2021 (a partir de la versión 4.0.1 del firmware Mk3) durante una migración a la biblioteca libsecp256k1 de Bitcoin Core . Un error de macro en la configuración de compilación hizo que el firmware omitiera el generador de números aleatorios por hardware (TRNG) dedicado STM32 del dispositivo y, en su lugar, recurriera al RNG de software determinista Yasmarang de MicroPython
.
La configuración de la placa de producción establecía MICROPY_HW_ENABLE_RNG en cero porque Coldcard tenía un envoltorio separado para el RNG por hardware. Pero la biblioteca libngu no llamó correctamente a ese envoltorio: su condición de comprobación (#ifndef MICROPY_HW_ENABLE_RNG. Como la macro estaba definida (establecida en cero), libngu concluyó silenciosamente que la ruta de hardware estaba disponible y se vinculó a la función
rng_get() basada en software de MicroPython .
Esto redujo la entropía efectiva a aproximadamente 32–40 bits (en lugar de los 128+ bits previstos), lo que significa que solo existían unos 4.000 millones de valores de semilla posibles —algo trivial de forzar por fuerza bruta con hardware moderno . Las semillas generadas sin tiradas de dados añadidas por el usuario o sin una frase de contraseña BIP 39 quedaron completamente expuestas
.
El CEO de Coinkite, Rodolfo Novak (NVK), reconoció más tarde el error: "Establecí explícitamente MICROPY_HW_ENABLE_RNG en cero, pensando que no necesitábamos ninguna de las dos versiones, pero eso no es lo que hace" .
Coinkite amplió más tarde su aviso para incluir ciertas versiones de firmware de Mk4, Mk5 y Q tras un análisis adicional, y lanzó actualizaciones de firmware de emergencia para todos los modelos afectados .
Este exploit ha sacudido una de las promesas centrales de la autocustodia —que el elemento seguro de una cartera hardware garantiza la seguridad criptográfica independientemente de los errores de software .
Para un desglose técnico detallado, consulte el informe de ingeniería de Block y el documento técnico de Coinkite
.