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
Não. Uma atualização altera a forma como o dispositivo gera nova aleatoriedade. Ela não pode voltar no tempo e adicionar imprevisibilidade a uma frase que já existe. Esse número foi gerado uma vez, do pool errado, e nenhuma versão posterior altera o que foi gerado. Uma frase criada em um firmware afetado continua fraca em um dispositivo totalmente atualizado. A solução é uma nova carteira, criada após a atualização, com os fundos transferidos para ela.
A maioria das pessoas não sabe, e o dispositivo não registra isso. A orientação da Coinkite é tratar a frase como em risco, a menos que você possa descartar essa possibilidade com certeza, por exemplo, sabendo a data de compra ou configuração, ou sabendo que usou dados ou uma frase de acesso. Se você não puder descartar essa possibilidade, aja como se estivesse afetado. Migrar uma carteira que acabou por estar segura custa uma tarde; o outro erro é permanente.
Pesquisadores independentes publicam um verificador em coldcardentropy.org cobrindo 6.657 endereços em seis níveis de evidência. A consulta é executada no seu navegador e não pede nada além de um endereço público, nunca uma frase de recuperação, chave ou frase de acesso, e nenhuma ferramenta que peça isso deve ser usada. Leia o aviso como ele está escrito: uma correspondência mostra que o endereço está em um conjunto de dados público, não que os fundos foram roubados, e a ausência de correspondência não prova que uma carteira é segura.
Dados podem. A Coinkite coloca de 50 a 98 lançamentos justos, independentes e privados em 128 bits apenas a partir dos dados, e 99 ou mais em cerca de 256, desde que os lançamentos nunca tenham sido gravados ou expostos. Uma frase de acesso fica acima da frase em vez de substituí-la, ganhando tempo contra alguém que já possui a frase.
O aviso oficial começa no firmware 4.0.1 do Mk3, mas o mesmo código existe na versão 4.0.0, e pesquisadores independentes estendem o alcance afetado ainda mais para trás. Trate a faixa publicada como um limite mínimo.
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
Nenhum modelo que já lançamos. Em um OneKey, a chave vem do gerador de hardware dentro do elemento seguro, nunca de software no processador principal, e essa substituição foi exatamente o que causou essa falha. O Anzen Lab reexaminou nossa própria aleatoriedade após a notícia e publicou os arquivos que verificou.
Este defeito está presente no firmware do COLDCARD, nos modelos e versões acima. A Coinkite afirma que o TAPSIGNER, OPENDIME e SATSCARD não foram afetados, pois utilizam bases de código diferentes. A empresa não diz nada sobre o firmware atual de nenhum outro fabricante, e não estamos em posição de auditar o de mais ninguém. Se você possui outra marca, pergunte se o fabricante publica informações suficientes para que terceiros possam verificar.
Até certo ponto, sim. O entro.tools examina endereços públicos na blockchain em busca das impressões digitais estatísticas de geração fraca e cobre OneKey, Trezor e KeepKey. Ele lê apenas a blockchain, nunca pede sua frase de recuperação, e nenhuma ferramenta que faça isso deve ser confiável.
Pelo que você mesmo pode verificar. O código-fonte do firmware é público e uma compilação feita a partir desse código pode ser comparada ao binário no dispositivo? Uma empresa externa o audita e publica o relatório? Existe um canal pago e privado para um pesquisador que descobre algo? Essas três respostas decidem se uma falha é encontrada por alguém que avisa o fabricante ou por alguém que não avisa.
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)





