O desenvolvedor de bitcoin Luke Dashjr, em 9 de novembro, listou publicamente nove preocupações sobre o código de geração de números aleatórios na carteira de hardware Coldcard da Coinkite, dizendo que já havia relatado anteriormente essas questões à empresa de forma privada.
“Não estou afirmando que todos podem ser weaponizados, ou que são definitivamente todos bugs,” escreveu Dashjr em seu divulgamento. Ele disse que não sabia se a Coinkite já os corrigiu e descreveu sua revisão como uma olhada rápida, não uma auditoria completa.
Seu thread linka para uma revisão de firmware de julho. As notas de lançamento posteriores da Coinkite e a fonte publicada mostram variações que abordam várias das áreas que ele levantou, incluindo verificações de erro de semente de chip e um teste de inicialização do caminho do RNG de hardware.
https://x.com/i/status/2119836060306018364
A divulgação segue o incidente de geração de seed da Coldcard em julho. A Coinkite afirma que os atacantes exploraram seeds de carteira enfraquecidos, regenerando chaves privadas offline e roubando fundos, sem acessar remotamente os dispositivos.
As postagens numeradas de Dashjr levantaram preocupações sobre o código usado após a correção anterior:
Ele questionou se as amostras aleatórias iniciais deveriam ser descartadas na inicialização, citou a ausência de verificações de semente e erro de relógio do chip, e disse que o manual do chip exige pós-processamento para aplicações criptográficas.
Ele disse que verificações de saída repetida foram aplicadas a leituras bufferizadas, mas não a chamadas diretas, e argumentou que a rotina de detecção de erros de nível inferior não havia sido demonstrada como suficiente por si só.
Ele questionou por que a aleatoriedade do elemento seguro não preservou a força esperada, exigiu testes completos do caminho RNG recém-ativado e solicitou uma verificação no dispositivo, em vez de depender apenas de proteções em tempo de compilação.
Ele alertou que um timeout tratado em um contexto incapaz de processar com segurança uma exceção do Python poderia causar comportamento indefinido, potencialmente fazendo um dispositivo travar ou torná-lo inutilizável.
Dashjr disse que tornou público após ouvir que NVK afirmava que humanos não conseguiam encontrar o defeito do Coldcard. Mais cedo naquele dia, o CEO da Coinkite, Rodolfo Novak, conhecido como NVK, escreveu que “foi necessário um novo modelo de IA para encontrar o que os humanos não conseguiam.” A postagem de Novak referia-se à descoberta do defeito anterior na geração da seed; o thread técnico de Dashjr abordava o código após a correção.
Firmware posterior adicionou verificações RNG
A página de download da Coinkite lista a versão 5.6.3 como o firmware padrão atual para Mk4/Mk5 e 1.5.3Q para Q. Seu histórico de lançamentos data a adição da detecção de erro de seed e um auto teste de inicialização do RNG de hardware na versão 5.6.1, lançada em 20 de ago.
A fonte Mk4 publicada para 5.6.3 descarta amostras de aquecimento, verifica sinalizações de erro de semente, retrya falhas e testa se as chamadas alcançam o gerador de números aleatórios de hardware. As notas de lançamento também afirmam que ambos os elementos seguros agora são amostrados diretamente para cada nova semente principal, em vez de contribuírem apenas por meio da inicialização do RNG no boot.
A fonte atual ainda realiza sua verificação de saída repetida na rotina de leitura com buffer, e não em cada chamada direta. Seus comentários dizem que as bandeiras de erro de relógio são intencionalmente ignoradas, citando a documentação do chip, que afirma que esses erros não invalidam os números gerados.
Para usuários afetados pelo incidente de julho, a orientação permanente da Coinkite continua sendo que atualizar o firmware não conserta uma seed já enfraquecida. Esses usuários devem seguir as orientações de migração dela, a menos que a exceção do dado independente do aviso se aplique.



