Quatro linhas de código.
Mais de 1.596 BTC desaparecidos.
Em março de 2021, uma versão de firmware da COLDCARD parou de pedir números aleatórios ao seu chip de hardware e passou a delegar essa tarefa a software comum. Ninguém deu por isso durante cinco anos. Em julho de 2026, os atacantes fizeram os cálculos e começaram a esvaziar as carteiras.
Uma verificação de segurança que existia e não fez nada
Toda a proteção depende de um número que ninguém consegue adivinhar
Uma carteira de hardware cumpre várias funções. Mostra o que está realmente a assinar em vez de lhe pedir para confiar no ecrã de um computador infetado, e mantém a sua chave guardada num chip construído para resistir a tentativas de abertura. Cada uma dessas defesas assume que o número que deu origem à sua chave não podia ser adivinhado. Se pudesse, um atacante nunca precisaria de ultrapassar nenhuma delas. A reserva de onde é retirada uma frase de 24 palavras contém aproximadamente um número por cada mil átomos no universo observável. Uma reserva desse tamanho não pode ser pesquisada. Esse é todo o modelo de segurança.
12 palavras transportam 128 bits de entropia, 24 transportam 256, além de uma soma de verificação (checksum) a partir do SHA-256 dessa entropia. O BIP-39 estende o resultado para a chave mestre BIP-32.
12 palavras transportam 128 bits de entropia, 24 transportam 256, além de uma soma de verificação (checksum) a partir do SHA-256 dessa entropia. O BIP-39 estende o resultado para a chave mestre BIP-32.
A COLDCARD parou de retirar dessa reserva
Uma alteração de firmware em 2021 fez com que a carteira deixasse silenciosamente de pedir esse 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:
Isto não é segurança reduzida a dois terços. Cada bit duplica o trabalho, pelo que menos 88 bits reduzem a tarefa por um fator de 2⁸⁸. Um bilião é um número grande para uma pessoa e pequeno para alguém que aluga máquinas de alto desempenho para o processar.
A geração de sementes passou de ckcc.rng_bytes() para ngu.random.bytes(). A Coinkite estima cerca de 40 bits de espaço de pesquisa remanescente no Mk3 e cerca de 72 no Mk4/Mk5/Q, face a um alvo de 128 bits. A análise independente da Block atinge a mesma ordem (inferior a 2⁴⁰·⁷ e inferior a 2⁷۳·³) e encontra condições mais restritas onde resta muito menos.2
A geração de sementes passou de ckcc.rng_bytes() para ngu.random.bytes(). A Coinkite estima cerca de 40 bits de espaço de pesquisa remanescente no Mk3 e cerca de 72 no Mk4/Mk5/Q, face a um alvo de 128 bits. A análise independente da Block atinge a mesma ordem (inferior a 2⁴⁰·⁷ e inferior a 2⁷۳·³) e encontra condições mais restritas onde resta 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 lançamento, a gravidade, uma corrente de ar de um aparelho de ar condicionado, ténues tremores no solo. Dezenas de influências que consegue nomear e dezenas que não consegue. Ninguém consegue calcular a trajetória, por isso ninguém consegue adivinhar o resultado. O software funciona de forma diferente. 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 que o dispositivo tinha estado ligado. Um atacante que conheça a receita e os ingredientes recalcula o resultado em vez de o adivinhar.
Com o RNG de hardware desativado, rng_get() ligou-se ao PRNG Yasmarang do MicroPython, inicializado a partir de estado não secreto (UID, SysTick, RTC) e não recolheu nova entropia após isso, pelo que os candidatos são enumerados offline. A Coinkite não considera as sementes misturadas com 50 ou mais lançamentos justos e privados em risco apenas devido a este problema: 50 × log₂6 ≈ 129 bits.3
Com o RNG de hardware desativado, rng_get() ligou-se ao PRNG Yasmarang do MicroPython, inicializado a partir de estado não secreto (UID, SysTick, RTC) e não recolheu nova entropia após isso, pelo que os candidatos são enumerados offline. A Coinkite não considera as sementes misturadas com 50 ou mais lançamentos justos e privados em risco apenas devido a este problema: 50 × log₂6 ≈ 129 bits.3
E a verificação destinada a impedi-lo fez a pergunta errada
Havia uma guarda no código de compilação, escrita especificamente para impedir o envio de firmware sem o gerador de hardware. Perguntava se uma definição existia, e não se a definição estava ativada. A definição existia e estava desativada. A guarda manteve-se em silêncio, a compilação não relatou erros e o firmware foi enviado.
#ifndef apenas testa a definição. A configuração da placa definiu MICROPY_HW_ENABLE_RNG como 0, definido e desativado, pelo que o #error nunca foi acionado e o linker resolveu rng_get() para a alternativa em software.3
#ifndef apenas testa a definição. A configuração da placa definiu MICROPY_HW_ENABLE_RNG como 0, definido e desativado, pelo que o #error nunca foi acionado e o linker resolveu rng_get() para a alternativa em software.3
O defeito, citado a partir do código-fonte.3
Nada nisto pareceu errado durante cinco anos
Uma frase de recuperação fraca parece exatamente igual a uma forte. Vinte e quatro palavras comuns, a soma de verificação correta, um dispositivo que se comporta normalmente. Nada o avisa no ecrã e nenhum erro é gerado na compilação. A fonte esteve pública todo o tempo. Lê-la ainda exigia que alguém abrisse aquele ficheiro em específico.
O comprimento da saída, a ausência de zeros e a não repetição passam todos num PRNG fraco, pelo que os testes de fumo habituais também não o poderiam ter detetado.
O comprimento da saída, a ausência de zeros e a não repetição passam todos num PRNG fraco, pelo que os testes de fumo habituais também não o poderiam ter detetado.
Depois, alguém fez as contas
Nunca tocaram num único dispositivo. Geraram as frases prováveis nas suas próprias máquinas, calcularam que endereços de Bitcoin cada uma produziria e verificaram esses endereços face à cadeia de blocos pública. Todos os endereços com saldo foram esvaziados. Uma carteira que estivesse desligada numa gaveta desde 2022 estava tão exposta quanto uma em utilização diária.
Os candidatos derivam offline através de BIP-39/BIP-32; apenas a consulta final do saldo toca na rede, pelo que não existe qualquer sinal prévio do lado da vítima.3
Os candidatos derivam offline através de BIP-39/BIP-32; apenas a consulta final do saldo toca na rede, pelo que não existe qualquer sinal prévio do lado da vítima.3
Esta página não é uma celebração de vitória.
A Coinkite divulgou a falha, publicou um relatório técnico e lançou uma correção. Investigadores externos conseguiram reconstruir o que aconteceu porque a COLDCARD é de código aberto.
Uma advertência sobre as estimativas: descrevem o esforço de adivinhação que um atacante enfrenta com os pressupostos atuais, e não um cronómetro. Ninguém consegue dizer quanto tempo demoraria a quebrar uma carteira específica.2
Leia isto antes de mais nada
O que precisa de fazer depende do dispositivo que estava a utilizar quando a frase de recuperação foi criada pela primeira vez, e não do que possui hoje.
Assuma que isto ainda está a acontecer. As frases tornaram-se adivinháveis em 2021 e o método é agora público, pelo que qualquer pessoa pode executar a mesma pesquisa. Não há nenhum patch que resolva isto a partir de fora, nem qualquer razão para um atacante parar. Se for afetado, a premissa segura é que o tempo é a única coisa entre si e eles.
Mk2 e Mk3: mova as suas moedas agora
O intervalo afetado compreende o firmware 4.0.1 a 4.1.9. A versão 4.2.0 corrige a forma como as novas frases são criadas, mas nenhuma atualização consegue voltar atrás e adicionar aleatoriedade a uma frase que já exista. Crie uma nova carteira num dispositivo em que confie e transfira os seus fundos.1
Mk4 e Mk5: verifique a versão do firmware
Se a frase foi criada num firmware anterior a 5.6.0 (ou 6.6.0X em versões Edge), atualize, crie uma carteira nova no firmware atualizado e, em seguida, mova os seus fundos. A atualização por si só não reparará a frase antiga.1
Q: o mesmo, o limite é 1.5.0Q
Atualize para 1.5.0Q ou posterior, ou 6.6.0QX em compilações Edge, crie uma nova carteira, anote e teste a cópia de segurança, envie uma pequena transação de teste e, depois, transfira o resto.1
Atualizar o firmware da COLDCARD corrige uma frase de recuperação que já possuo?
Como posso descobrir qual firmware gerou a minha frase de recuperação da COLDCARD?
Como posso verificar se o meu endereço foi afetado por isto?
Os lançamentos de dados ou uma frase-passe protegem uma frase de recuperação do COLDCARD?
O aviso da Coinkite abrange todas as COLDCARD afetadas?
Nenhum dispositivo OneKey é afetado
Nenhum modelo que alguma vez enviámos. O nosso firmware não contém nenhuma dependência de libngu, Coinkite, COLDCARD ou CKCC, pelo que o caminho de código que falhou não está lá para ser acedido, e pode verificar isso por si próprio nos nossos repositórios. No 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 esta falha representou.
Também não aceitámos isso com base na confiança. Quando a notícia rebentou, o Anzen Lab rastreou a nossa aleatoriedade de ponta a ponta (de onde vem, o que a chama e as definições de compilação que decidem qual versão chega ao seu dispositivo) e publicou os ficheiros exatos que verificaram.12
Ler a nova verificação do Anzen LabIsto poderia ter acontecido a uma OneKey?
Esta falha exigia que três coisas diferentes fossem verdadeiras ao mesmo tempo. Numa OneKey nenhuma delas é verdadeira, e pode verificar todas as três por si próprio.
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 inviolável, em vez do processador de uso geral que executa tudo o resto. EAL 6+ é o nível de garantia utilizado para cartões de pagamento e de identidade.
Aleatoriedade que vigia a si própria
Esse chip gera aleatoriedade a partir de ruído físico real e testa continuamente a sua própria saída. Se a aleatoriedade começar a funcionar mal, o chip deteta-o em vez de continuar silenciosamente.
Fomos rever o nosso
Após as notícias sobre a COLDCARD, o Anzen Lab rastreou a nossa própria aleatoriedade de ponta a ponta (de onde vem, o que a chama realmente e as definições de compilação que decidem qual versão acaba no seu dispositivo) e publicou os ficheiros exatos que examinaram.11


Quatro controlos em cada OneKey, e nenhum deles confia nos outros três
Qualquer uma delas pode falhar em algo. O ponto é que todas as quatro teriam de falhar exatamente na mesma coisa. O COLDCARD não tinha essa salvaguarda: uma única definição de compilação não verificada foi suficiente.
Código aberto que consegue verificar de facto
O nosso firmware e as nossas aplicações são públicos no GitHub, e as nossas compilações são reproduzíveis, o que significa que pode recompilar o código por si próprio e confirmar que produz exatamente o software em execução no seu dispositivo. Esse é o passo que deteta um problema de "código certo, versão errada".
OneKey no GitHub
Especialistas externos auditam-nos, oficialmente
A empresa de segurança SlowMist audita-nos e publica os relatórios. Avaliações separadas cobrem o OneKey Pro, o Classic 1S e o nosso SDK. As nossas práticas de segurança são certificadas pela norma ISO/IEC 27001, e a linha Pro e Classic 1S é certificada contra a norma EN 18031 por um organismo nomeado pela UE. Tudo publicado, nada autoavaliado.13
Ler o resumo da auditoria da SlowMistUma equipa paga para quebrar os nossos próprios produtos
O Anzen Lab é a nossa equipa de segurança interna de engenheiros de segurança de hardware, firmware e aplicações, a trabalhar com um conjunto rotativo de investigadores externos. O seu trabalho consiste em quebrar carteiras de hardware, incluindo as nossas, antes de qualquer envio. Quando esta história rebentou, reexaminaram a aleatoriedade da OneKey de ponta a ponta e publicaram exatamente quais os ficheiros que verificaram.11
Ler a análise do Anzen LabPagamos a estranhos para encontrarem os nossos erros
Qualquer pessoa nos pode reportar uma falha de forma privada, através do nosso programa público no BugRap ou diretamente para [email protected], e ser recompensada por isso. A gravidade determina o pagamento, pontuada com base no CVSS. O objetivo principal é tornar a revelação mais atrativa do que a venda.15
OneKey no BugRapTeste a carteira na sua mão
O entro.tools é uma ferramenta gratuita e de código aberto que lê os números aleatórios reais provenientes de uma carteira de hardware e executa os testes de saúde estatística padrão neles, no seu browser, através de USB, sem que nada seja carregado para lado nenhum e sem necessidade de atualização de firmware.
Executa testes de saúde FIPS 140-2, NIST SP 800-22 e SP 800-90B localmente através de WebUSB (Chrome ou Edge em desktop). O dispositivo pede para exportar entropia, um lote de números aleatórios que acabou de gerar, nunca a sua frase de recuperação.16
O teste universal de Maurer precisa de pelo menos 387.840 bits; abaixo disso o relatório marca-o como ignorado em vez de o omitir em silêncio.16
Quais as carteiras que podem ser verificadas
Se um observador externo consegue ler os números aleatórios brutos de um dispositivo. Esta é apenas uma dimensão restrita. Veja a nota abaixo.
Questões que isto levanta para todos os outros
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 é de confiança?
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 pode verificar, não segurança em que lhe pedem para acreditar.
Código aberto e reproduzível, auditado por terceiros, atacado pelo nosso próprio laboratório e pago quando alguém descobre uma falha. Estes são os dispositivos sobre os quais esta discussão se debruça.
Referências
Fontes abaixo, obtidas a 6 de agosto de 2026. O próprio aviso e relatório técnico da Coinkite aparecem primeiro, seguidos por análises independentes ao nível do código-fonte e contabilidade na cadeia de blocos. Os valores de perda continuam a ser revistos em alta: a Galaxy Research confirmou 1.596 BTC a 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)





