El desarrollador de bitcoin Luke Dashjr el 9 de noviembre enumeró públicamente nueve preocupaciones sobre el código de generación de números aleatorios en el monedero de hardware Coldcard de Coinkite, diciendo que anteriormente las había reportado a la empresa de forma privada.
“No estoy afirmando que todos estos puedan ser utilizados como armas, ni que definitivamente sean todos errores”, escribió Dashjr en su divulgación. Dijo que no sabía si Coinkite los había corregido y describió su revisión como una mirada rápida, no una auditoría completa.
Su hilo enlaza a una revisión del firmware de julio. Las notas de lanzamiento posteriores de Coinkite y su código fuente publicado muestran variaciones que abordan varias de las áreas que él planteó, incluyendo comprobaciones de errores de semilla de chip y una prueba de inicio de la ruta del RNG de hardware.
https://x.com/i/status/2119836060306018364
La divulgación sigue al incidente de generación de semillas de Coldcard en julio. Coinkite afirma que los atacantes explotaron semillas de monedero debilitadas regenerando claves privadas sin conexión y robando fondos, sin acceder remotamente a los dispositivos.
Las entradas numeradas de Dashjr generaron preocupaciones sobre el código utilizado tras la corrección anterior:
Cuestionó si las muestras aleatorias iniciales deberían descartarse al inicio, citó la falta de verificaciones de semilla y error de reloj del chip, y dijo que el manual del chip requería procesamiento posterior para aplicaciones criptográficas.
Dijo que las verificaciones de salida repetida se aplican a las lecturas con búfer pero no a las llamadas directas, y argumentó que la rutina de detección de errores de nivel inferior no había demostrado ser suficiente por sí sola.
Cuestionó por qué la aleatoriedad del elemento seguro no había preservado la fortaleza esperada, instó a realizar pruebas completas de la ruta RNG recién habilitada y solicitó una verificación en el dispositivo en lugar de confiar únicamente en las salvaguardias de tiempo de compilación.
Él advirtió que un tiempo de espera gestionado en un contexto incapaz de procesar de forma segura una excepción de Python podría causar comportamiento indefinido, posiblemente provocando el colapso de un dispositivo o dejándolo inutilizable.
Dashjr dijo que se hizo público tras enterarse de que NVK afirmaba que los humanos no podían encontrar el defecto de Coldcard. Ese mismo día, el CEO de Coinkite, Rodolfo Novak, conocido como NVK, escribió que “se necesitaba un nuevo modelo de IA para encontrar lo que los humanos no podían”. La publicación de Novak se refería al descubrimiento del defecto anterior en la generación de semillas; el hilo técnico de Dashjr abordaba el código tras la corrección.
Firmware posterior agregó verificaciones de RNG
La página de descarga de Coinkite enumera la versión 5.6.3 como el firmware estándar actual para Mk4/Mk5 y la 1.5.3Q para Q. Su historial de lanzamientos indica que la detección de errores en la semilla y la prueba de autoiniciado del RNG de hardware se añadieron en la versión 5.6.1, lanzada el 20 de agosto.
La fuente publicada Mk4 para 5.6.3 descarta las muestras de calentamiento, verifica las banderas de error de semilla, reintentará los fallos y comprueba si las llamadas llegan al generador de números aleatorios de hardware. Las notas de la versión también indican que ambos elementos seguros ahora se muestrean directamente para cada nueva semilla maestra, en lugar de contribuir únicamente mediante la inicialización del RNG en el arranque.
La fuente actual aún realiza su verificación de salida repetida en la rutina de lectura con búfer, en lugar de en cada llamada directa. Sus comentarios indican que se ignoran deliberadamente las banderas de error de reloj, citando la documentación del chip que afirma que esos errores no invalidan los números generados.
Para los usuarios afectados por el incidente de julio, la guía permanente de Coinkite sigue siendo que actualizar el firmware no repara una semilla debilitada existente. Esos usuarios deben seguir su guía de migración, a menos que se aplique la excepción de dados independientes del aviso.



