Quatro linhas de código.
Mais de 1.596 BTC perdidos.
Em março de 2021, uma compilação de firmware do COLDCARD parou de pedir números aleatórios ao seu chip de hardware e passou a usar software comum para calculá-los. Ninguém percebeu isso por cinco anos. Em julho de 2026, os invasores fizeram as contas e começaram a esvaziar as carteiras.
Uma verificação de segurança que estava lá e não fez nada
Toda a proteção depende de um número que ninguém consegue adivinhar
Uma carteira de hardware executa várias tarefas. Ela mostra o que você está realmente assinando, em vez de pedir que confie na tela de um computador infectado, e mantém sua chave dentro de um chip construído para resistir a violações físicas. Cada uma dessas defesas assume que o número que originou sua chave não podia ser adivinhado. Se pudesse, um invasor nunca precisaria superar nenhuma delas. O conjunto do qual uma frase de 24 palavras é retirada contém aproximadamente um número para cada mil átomo no universo observável. Um conjunto desse tamanho não pode ser vasculhado. Esse é todo o modelo de segurança.
12 palavras carregam 128 bits de entropia, 24 carregam 256, mais um checksum do SHA-256 dessa entropia. O BIP-39 estende o resultado para a chave mestre do BIP-32.
12 palavras carregam 128 bits de entropia, 24 carregam 256, mais um checksum do SHA-256 dessa entropia. O BIP-39 estende o resultado para a chave mestre do BIP-32.
A COLDCARD parou de extrair daquele conjunto
Uma alteração de firmware em 2021 fez silenciosamente com que a carteira parasse de pedir aquele número ao seu chip de aleatoriedade dedicado e passasse a calcular um através de software comum. Lado a lado, este é o incidente completo:
Isso não é segurança reduzida em dois terços. Cada bit duplica o trabalho, portanto 88 bits a menos reduzem o trabalho por um fator de 2⁸⁸. Um trilhão é um número grande para uma pessoa e pequeno para alguém que aluga máquinas de alto desempenho para processá-lo.
A geração de seed mudou de ckcc.rng_bytes() para ngu.random.bytes(). A Coinkite estima cerca de 40 bits de espaço de busca restante no Mk3 e cerca de 72 no Mk4/Mk5/Q, em comparação com uma meta de 128 bits. Uma análise independente feita pela Block chega à mesma ordem (abaixo de 2⁴⁰·⁷ e abaixo de 2⁷३·³) e encontra condições mais restritas em que sobra muito menos.2
A geração de seed mudou de ckcc.rng_bytes() para ngu.random.bytes(). A Coinkite estima cerca de 40 bits de espaço de busca restante no Mk3 e cerca de 72 no Mk4/Mk5/Q, em comparação com uma meta de 128 bits. Uma análise independente feita pela Block chega à mesma ordem (abaixo de 2⁴⁰·⁷ e abaixo de 2⁷३·³) e encontra condições mais restritas em que sobra muito menos.2
Porque o software não pode ser aleatório
Pense no que torna o lançamento de uma moeda imprevisível. A força do arremesso, a gravidade, uma corrente de ar de um ar-condicionado, leves tremores no chão. Dezenas de influências que você pode nomear e dezenas que não pode. Ninguém consegue calcular a trajetória, então ninguém pode prever o resultado. O software funciona de maneira diferente. Ele executa uma fórmula fixa sobre um punhado de valores iniciais e produz uma resposta fixa. Aqui, esses valores eram o número de série do chip e o tempo em que o dispositivo permaneceu ligado. Um invasor que descobre a receita e os ingredientes recalcula a saída em vez de adivinhá-la.
Com o RNG de hardware desativado, rng_get() vinculou-se ao PRNG Yasmarang do MicroPython, inicializado a partir de estado não secreto (UID, SysTick, RTC), e não coletou nova entropia após isso, permitindo que os candidatos fossem enumerados offline. A Coinkite não considera seeds misturadas com 50 ou mais lançamentos justos e privados em risco apenas por esse problema: 50 × log₂6 ≈ 129 bits.3
Com o RNG de hardware desativado, rng_get() vinculou-se ao PRNG Yasmarang do MicroPython, inicializado a partir de estado não secreto (UID, SysTick, RTC), e não coletou nova entropia após isso, permitindo que os candidatos fossem enumerados offline. A Coinkite não considera seeds misturadas com 50 ou mais lançamentos justos e privados em risco apenas por esse problema: 50 × log₂6 ≈ 129 bits.3
E a verificação destinada a impedir isso fez a pergunta errada
Havia uma proteção na compilação, escrita especificamente para impedir que o firmware fosse distribuído sem o gerador de hardware. Ela perguntava se uma configuração existia, não se a configuração estava ativada. A configuração existia e estava desativada. A proteção permaneceu em silêncio, a compilação não relatou erros e o firmware foi enviado.
#ifndef testa apenas a definição. A configuração da placa definiu MICROPY_HW_ENABLE_RNG como 0, definido e desativado, portanto o #error nunca foi acionado e o vinculador resolveu rng_get() para o fallback de software.3
#ifndef testa apenas a definição. A configuração da placa definiu MICROPY_HW_ENABLE_RNG como 0, definido e desativado, portanto o #error nunca foi acionado e o vinculador resolveu rng_get() para o fallback de software.3
O defeito, citado do código-fonte.3
Nada nisso pareceu errado por cinco anos
Uma frase de recuperação fraca parece exatamente com uma forte. Vinte e quatro palavras comuns, a soma de verificação correta, um dispositivo que se comporta normalmente. Nada avisa na tela e nenhum erro ocorre na compilação. O código-fonte esteve público o tempo todo. Lê-lo ainda exigia que alguém abrisse aquele arquivo específico.
O comprimento da saída, a ausência de zeros e a não repetição passam em um PRNG fraco, de modo que os testes básicos habituais também não poderiam ter detectado isso.
O comprimento da saída, a ausência de zeros e a não repetição passam em um PRNG fraco, de modo que os testes básicos habituais também não poderiam ter detectado isso.
Então alguém fez os cálculos
Eles nunca tocaram em um único dispositivo. Eles geraram as frases prováveis em suas próprias máquinas, descobriram quais endereços Bitcoin cada uma produziria e verificaram esses endereços em relação ao blockchain público. Cada endereço com saldo foi esvaziado. A carteira que estava guardada sem uso em uma gaveta desde 2022 estava exatamente tão exposta quanto uma em uso diário.
Os candidatos são derivados offline via BIP-39/BIP-32; apenas a consulta final de saldo acessa a rede, portanto, não há nenhum sinal do lado da vítima com antecedência.3
Os candidatos são derivados offline via BIP-39/BIP-32; apenas a consulta final de saldo acessa a rede, portanto, não há nenhum sinal do lado da vítima com antecedência.3
Esta página não é uma comemoração de vitória.
A Coinkite divulgou a falha, publicou um relatório técnico e lançou uma correção. Pesquisadores externos puderam reconstruir o que aconteceu porque o COLDCARD é de código aberto.
Uma advertência sobre as estimativas: elas descrevem o esforço de adivinhação que um atacante enfrenta sob as suposições atuais, e não um cronômetro. Ninguém pode dizer quanto tempo uma carteira específica levaria para ser quebrada.2
Leia isto antes de qualquer outra coisa
O que você precisa fazer depende de qual dispositivo você estava usando quando a frase de recuperação foi criada pela primeira vez, e não de qual você possui hoje.
Assuma que isso ainda está acontecendo. As frases tornaram-se adivinháveis em 2021 e o método agora é público, então qualquer pessoa pode executar a mesma busca. Não há correção que resolva isso de fora, e nenhum motivo para um invasor parar. Se você for afetado, a premissa segura é que o tempo é a única coisa entre você e eles.
Mk2 e Mk3: mova suas moedas agora
O intervalo afetado é o firmware 4.0.1 até 4.1.9. A versão 4.2.0 corrige a criação de novas frases, mas nenhuma atualização pode voltar no tempo e adicionar aleatoriedade a uma frase que já existe. Crie uma nova carteira em um dispositivo em que você confia e transfira seus fundos.1
Mk4 e Mk5: verifique a versão do firmware
Se a frase foi criada em um firmware anterior ao 5.6.0 (ou 6.6.0X em compilações Edge), atualize, crie uma carteira totalmente nova no firmware atualizado e, em seguida, mova seus fundos. Apenas atualizar o dispositivo não repara a frase antiga.1
Q: o mesmo, o limite é 1.5.0Q
Atualize para a versão 1.5.0Q ou posterior, ou 6.6.0QX em compilações Edge, crie uma nova carteira, anote e teste o backup, envie uma pequena transação de teste e, em seguida, mova o restante.1
Atualizar o firmware da COLDCARD corrige uma frase de recuperação que eu já possuo?
Como descubro qual firmware gerou a minha frase de recuperação da COLDCARD?
Como faço para verificar se meu endereço foi pego nisso?
Lançamentos de dados ou uma passphrase protegem uma frase de recuperação do COLDCARD?
O aviso da Coinkite cobre todas as COLDCARD afetadas?
Nenhum dispositivo OneKey é afetado
Nenhum modelo que já enviamos apresenta isso. Nosso firmware não possui nenhuma dependência do libngu, Coinkite, COLDCARD ou CKCC, portanto o caminho de código que falhou não está presente para ser alcançado, e você mesmo pode verificar isso em nossos repositórios. Em nosso hardware atual, a chave vem do gerador verdadeiramente aleatório dentro de um elemento seguro certificado, nunca de software no processador principal. Essa substituição foi o que causou essa falha.
Também não aceitamos isso cegamente. Quando a notícia estourou, o Anzen Lab rastreou nossa aleatoriedade de ponta a ponta (de onde ela vem, o que a chama e as configurações de compilação que determinam qual versão chega ao seu dispositivo) e publicou os arquivos exatos que eles verificaram.12
Ler a nova verificação do Anzen LabIsso poderia ter acontecido com uma OneKey?
Esta falha exigia que três coisas diferentes fossem verdadeiras ao mesmo tempo. Em uma OneKey nenhuma delas é verdadeira, e você mesmo pode verificar todas as três.
Então, de onde vem a aleatoriedade da OneKey?
Gerada dentro de um chip certificado EAL 6+
As suas chaves são criadas e mantidas dentro de um chip dedicado e resistente a violações, e não no processador de uso geral que executa todo o resto. EAL 6+ é o nível de garantia utilizado em cartões de pagamento e de identidade.
Aleatoriedade que monitora a si mesma
Esse chip gera aleatoriedade a partir de ruído físico real e testa continuamente sua própria saída. Se a aleatoriedade começar a apresentar falhas, o chip percebe em vez de continuar funcionando silenciosamente.
Fomos lá e reexaminamos a nossa
Após as notícias sobre o COLDCARD, o Anzen Lab rastreou nossa própria aleatoriedade do início ao fim (de onde ela vem, o que realmente a chama e as configurações de compilação que decidem qual versão acaba no seu dispositivo) e publicou os arquivos exatos que eles examinaram.11


Quatro verificações em cada OneKey, e nenhuma delas confia nas outras três
Qualquer uma delas pode falhar em algum ponto. O objetivo é que todas as quatro teriam que falhar na mesma coisa. A COLDCARD não tinha essa redundância: uma única configuração de compilação não verificada foi suficiente.
Código aberto que você pode realmente verificar
Nosso firmware e nossos aplicativos são públicos no GitHub, e nossas compilações são reproduzíveis, o que significa que você mesmo pode recompilar o código e confirmar que ele produz exatamente o software em execução no seu dispositivo. Esse é o passo que detecta um problema de "código certo, versão errada".
OneKey no GitHub
Especialistas externos nos verificam, oficialmente
A empresa de segurança SlowMist nos audita e publica os relatórios. Avaliações separadas cobrem o OneKey Pro, o Classic 1S e nosso SDK. Nossas práticas de segurança são certificadas pela ISO/IEC 27001, e a linha Pro e Classic 1S é certificada contra a norma EN 18031 por um órgão nomeado pela União Europeia. Tudo publicado, nada autoavaliado.13
Leia o resumo da auditoria da SlowMistUma equipe paga para quebrar nossos próprios produtos
O Anzen Lab é nossa equipe interna de segurança focada em hardware, firmware e engenharia de segurança de aplicativos, trabalhando em conjunto com um grupo rotativo de pesquisadores externos. O trabalho deles é quebrar carteiras de hardware, incluindo as nossas, antes que qualquer coisa seja lançada. Quando essa história veio à tona, eles reexaminaram a aleatoriedade da OneKey de ponta a ponta e publicaram exatamente quais arquivos verificaram.11
Leia a análise do Anzen LabPagamos a estranhos para encontrarem nossos erros
Qualquer pessoa pode nos relatar uma falha em caráter privado, por meio do nosso programa público no BugRap ou diretamente em [email protected], e ser remunerada por isso. A gravidade decide o pagamento, pontuada pelo CVSS. O objetivo principal é tornar o ato de nos informar mais atraente do que vendê-la.15
OneKey no BugRapTeste a carteira em sua mão
O entro.tools é uma ferramenta gratuita de código aberto que lê os números aleatórios reais provenientes de uma carteira de hardware e executa os testes padrão de integridade estatística neles, diretamente no seu navegador, via USB, sem enviar nada para lugar nenhum e sem exigir atualização de firmware.
Executa testes de integridade FIPS 140-2, NIST SP 800-22 e SP 800-90B localmente via WebUSB (Chrome ou Edge para desktop). O dispositivo pede para exportar entropia, um lote de números aleatórios que acabou de gerar, nunca sua frase de recuperação.16
O teste universal de Maurer precisa de pelo menos 387.840 bits; abaixo disso o relatório o marca como ignorado em vez de omiti-lo silenciosamente.16
Quais carteiras podem ser verificadas
Se um terceiro consegue ler os números aleatórios brutos de um dispositivo. Esta é uma dimensão restrita. Veja a nota abaixo dela.
Perguntas que isso levanta para todo o resto do setor
A OneKey é afetada pela falha de entropia da COLDCARD?
Quais carteiras de hardware são afetadas pela falha de entropia da COLDCARD?
Posso testar a aleatoriedade da minha própria carteira?
Como posso avaliar se uma carteira de hardware é confiável?
Explicar o que é complicado é trabalho nosso

Quão difícil é adivinhar sua frase de recuperação? A ColdCard tornou isso fácil

A COLDCARD ainda é segura? Modelos afetados, firmware corrigido e guia de migração de frases antigas

Como as carteiras OneKey geram sua frase de recuperação — e de onde vem a aleatoriedade
Segurança que você pode verificar, não segurança que exigem que você acredite.
Código aberto e reproduzível, auditado por terceiros, testado por nosso próprio laboratório e recompensado financeiramente quando alguém encontra uma brecha. Estes são os dispositivos sobre os quais esta discussão trata.
Referências
Fontes abaixo, recuperadas em 6 de agosto de 2026. O aviso próprio e o relatório técnico da Coinkite aparecem primeiro, seguidos por análises independentes de código-fonte e contabilidade on-chain. Os números de perdas ainda estão sendo revisados para cima: a Galaxy Research confirmou 1.596 BTC em 4 de agosto e estimou as perdas suspeitas em cerca de 2.055 BTC.
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)





