➡️ Julho de 2020 - Foundation Devices lança o Passport copiando o firmware do Coldcard (então sob licença livre GPL) - NVK lamenta publicamente ter escolhido a GPL: "agora temos um clone"
➡️ Final de 2020, início de 2021 - Coinkite muda de licença - Passagem para MIT + Commons Clause: podemos ler o código, mas não temos mais o direito de usá-lo para criar um produto concorrente - Objetivo: matar as cópias comerciais
➡️ 1º de março de 2021 - Commit massivo de 120 arquivos "First pass w/ libNgU" - Retiramos as últimas partes de código sob GPL - É exatamente nesse commit que o bug é introduzido - O gerador de aleatoriedade material (TRNG) é contornado - O firmware muda silenciosamente para um gerador de software previsível (Yasmarang) - Resultado: em vez de 128 bits de entropia, caímos para cerca de 40 bits nos Coldcard Mk3... É fraco. Muito fraco
➡️ 2021 a 2026 - O bug permanece "invisível" por 5 anos - A nova licença restritiva reduziu fortemente o número de pessoas motivadas a auditar o código em profundidade - Menos olhos = o bug sobrevive!
➡️ A chegada da IA muda o jogo - A própria Coinkite passa seu firmware por "um dos melhores modelos de IA" algumas semanas antes do ataque e o modelo não encontra nada! - O atacante certamente usou um LLM (ou vários) para escanear as antigas versões do código open-source e identificou o bug sutil que até a IA da Coinkite perdeu 🤔
➡️ Abril-maio de 2026 - As maiores carteiras que serão esvaziadas em julho recebem quantidades mínimas de bitcoin (dust) - Não é por acaso. É uma marcação de alvos - O atacante já tinha a lista das seeds vulneráveis pelo menos três meses antes
➡️ 30 de julho de 2026 - Entre 01h10 e 01h51 UTC, mais de 1080 BTC saem de 1.196 carteiras - Três dias depois, o total ultrapassa 1367 BTC em 4.585 carteiras - Os fundos são agrupados em poucas carteiras... e quase nada se move depois - Assinatura das transações reconhecível: taxas fixas de 30 sat/vB, sem troco, envios em lote
➡️ O único erro real do atacante - Durante a operação, ele usou uma conta paga em um grande provedor de dados blockchain - Os logs correspondem ao segundo exato - O provedor não era cúmplice, mas tem logs e provavelmente KYC... É a melhor pista para as autoridades
➡️ Por que 30 de julho? - O estoque de seeds vulneráveis com fundos dormentes estava no máximo - Estávamos a poucos dias do início da janela crítica do BIP-110 (o soft fork anti-Ordinals) - Toda a atenção da comunidade hardcore (exatamente o público Coldcard) já estava saturada!
👤 Quem é responsável pelo quê?
- Coinkite: mudou de licença para se proteger comercialmente e introduziu o bug no mesmo movimento
- O atacante: teve uma paciência rara, preparou seu golpe por meses (ou anos) e executou quase perfeitamente
- A comunidade: confiou no "open-source" e em uma carteira de hardware sem nunca verificar de verdade como a aleatoriedade era gerada
👉 A lição:
- Rolagens de dados + passphrase não são opcionais
- "Open-source" não significa "auditado"
- Uma licença muito restritiva pode matar as auditorias
- A IA muda radicalmente o equilíbrio de poder: um bug sutil pode ficar escondido por 5 anos... até que um modelo o encontre em uma noite
- Um atacante com tempo quase sempre vence uma comunidade com confiança excessiva!