A equipe de Engenharia e Segurança Bitcoin da Block, liderada pelo engenheiro Clay Garrett, identificou que o invasor usou uma conta paga em um conhecido provedor de serviços de blockchain para identificar e consultar eficientemente endereços vulneráveis . O padrão on-chain do invasor — varreduras sequenciais e extraordinariamente rápidas de endereços que compartilhavam a mesma fraqueza — chamou a atenção dos investigadores. A Block confirmou evidências que conectam a atividade do operador diretamente à infraestrutura desse provedor
.
A investigação da Block encontrou o que Garrett descreveu como "especificidade extraordinária, até o nível da conta" . O serviço de análise funcionou como uma ferramenta de reconhecimento, permitindo que o invasor mapeasse rapidamente quais endereços foram gerados em firmware vulnerável e priorizasse os alvos mais ricos
.
O bug foi introduzido em um commit de firmware em março de 2021 (começando com a versão 4.0.1 do firmware Mk3) durante uma migração para a biblioteca libsecp256k1 do Bitcoin Core . Um erro de macro de configuração de build fez com que o firmware ignorasse o gerador de números aleatórios por hardware (TRNG) STM32 dedicado do dispositivo e, em vez disso, recorresse ao RNG de software determinístico Yasmarang do MicroPython
.
A configuração da placa de produção definiu MICROPY_HW_ENABLE_RNG como zero porque a Coldcard tinha um wrapper de RNG de hardware separado. No entanto, a biblioteca libngu falhou ao chamar esse wrapper corretamente: sua condição de guarda (#ifndef MICROPY_HW_ENABLE_RNG. Como a macro foi definida (definida como zero), a libngu silenciosamente concluiu que o caminho do hardware estava disponível e se vinculou à função
rng_get() baseada em software do MicroPython .
Isso reduziu a entropia efetiva para aproximadamente 32–40 bits (em vez dos 128+ bits pretendidos), significando que haviam apenas cerca de 4 bilhões de valores de sementes possíveis — trivialmente bruteforcável com hardware moderno . Sementes geradas sem a adição de lançamentos de dados pelo usuário ou uma frase-senha BIP 39 estavam completamente expostas
.
O CEO da Coinkite, Rodolfo Novak (NVK), reconheceu o erro posteriormente: "Eu defini explicitamente MICROPY_HW_ENABLE_RNG como zero, pensando que não precisávamos de nenhuma das versões, mas não é isso que ele faz" .
A Coinkite expandiu posteriormente seu aviso para incluir certas versões de firmware do Mk4, Mk5 e Q após análises adicionais, e lançou atualizações de firmware de emergência para todos os modelos afetados .
Este exploit abalou uma das promessas centrais da autocustódia — a de que o elemento seguro de uma carteira de hardware garante segurança criptográfica, independentemente de bugs de software .
Para uma análise técnica detalhada, veja o relatório de engenharia da Block e o background técnico da Coinkite
.