Um atacante esvaziou 1.196 endereços de Bitcoin em 41 minutos no dia 30 de julho, levando 1.082,65 BTC avaliados em cerca de US$ 70,2 milhões na época. A Galaxy Research mapeou a varredura e a vinculou a uma falha de firmware na Coldcard, a carteira hardware exclusiva para Bitcoin fabricada pela empresa canadense Coinkite.
Um erro de integração de firmware de março de 2021 direcionou a geração de sementes para um gerador de números pseudoaleatórios (PRNG) determinístico em software, em vez do gerador de números aleatórios (RNG) de hardware do STM32.
A Block afirma que um atacante que consiga determinar ou restringir suficientemente o UID (identificador único) do dispositivo, o estado do temporizador e o histórico de chamadas anteriores do RNG pode reproduzir fluxos candidatos de saída offline, sem acessar o dispositivo. As sementes candidatas podem então ser verificadas derivando seus endereços e comparando-os com dados públicos da blockchain.
A Coinkite disponibilizou firmware de emergência para todos os modelos e trilhas de lançamento afetados em 31 de julho, mas instalá-lo não corrige uma semente já existente. A Coinkite orienta os proprietários com sementes expostas a gerar uma nova semente em firmware corrigido e transferir suas moedas.
Restaurar a semente antiga no firmware atualizado ou em outra carteira mantém a fragilidade. Nenhum relatório público reconstruiu a semente de uma vítima e a associou a um endereço esvaziado.
A Block rastreou o defeito até a configuração de produção da Coldcard, que define MICROPY_HW_ENABLE_RNG como zero porque a Coinkite fornece seu próprio wrapper de RNG de hardware. A biblioteca libngu verificava se a macro existia, e não se estava habilitada, vinculando a build ao fallback Yasmarang do MicroPython. O fallback do MicroPython era inicializado a partir do ID único do chip e dos registradores do temporizador, e não coletava entropia nova após a inicialização.
A Coinkite estima a entropia efetiva em aproximadamente 40 bits no Mk3 e cerca de 72 bits no Mk4, Mk5 e Q, diante de 128 bits de uma semente BIP-39 de 12 palavras (padrão de codificação de carteiras em lista de palavras). A Block não apresenta um número prático único. Ela estabelece tetos condicionais abaixo de 240,7 e 273,3 e alerta que este último não equivale a 73 bits de segurança criptográfica. Não publicou nenhum benchmark de força bruta.
O reseed dos modelos mais recentes aumenta o número de candidatos, mas a Block afirma que o custo prático depende das informações de UID disponíveis, do tempo de inicialização, das chamadas anteriores de RNG e do custo de derivação.
Exposição por versão
A exposição depende do firmware em execução no momento em que a semente foi criada, e não da versão instalada atualmente:
- Mk2 e Mk3: a Coinkite lista versões do Mk3 de 4.0.1 a 4.1.9, corrigidas na 4.2.0, e não cita o Mk2. A Block coloca tanto o Mk2 quanto o Mk3 nas versões 4.0.0 a 4.1.9 no caminho vulnerável.
- Mk4 e Mk5: qualquer versão anterior à 5.6.0.
- Q: qualquer versão anterior à 1.5.0Q.
- Builds Edge: anteriores à 6.6.0X para Mk4 e Mk5, anteriores à 6.6.0QX para Q.
A Coinkite afirma que uma semente criada com pelo menos 50 lançamentos de dados justos, independentes e privados não está em risco apenas por causa dessa falha. Se o número ou a privacidade dos lançamentos for incerto, a Coinkite recomenda migrar. Uma passphrase (senha adicional) BIP-39 forte e única cria uma carteira separada que as palavras da semente sozinhas não conseguem acessar, mas a empresa ainda recomenda substituir a semente.
Multissig (carteiras com múltiplas assinaturas) só ajuda quando o quórum não é formado inteiramente por dispositivos afetados. TAPSIGNER, OPENDIME e SATSCARD usam bases de código diferentes e não são afetados.
Ninguém identificou o atacante. A Galaxy, que mapeou a varredura de 1.196 endereços, afirmou não ter encontrado outras transações de Bitcoin nos 30 dias anteriores com a mesma assinatura de 30 sat/vB (satoshis por byte de taxa) sem troco.
Ela alertou que o padrão identifica o operador, não o roubo, porque uma varredura "parece igual a um proprietário de moedas decidindo movê-las".
A divulgação ocorre após a pesquisa Ill Bloom da Coinspect no início de julho, uma falha separada de PRNG fraco em carteiras de software mais antigas, vinculada a mais de US$ 5 milhões drenados de endereços em Bitcoin, Ethereum, Tron, Rootstock e Polygon desde maio.