Damus

Recent Notes

TioSatoChico profile picture
DESMASCARANDO O COLDCARD

➡️ 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!

#COLDCARD 🪦
1
Lucas · 5d
Quem diria que o movimento para continuar relevante seria justamente o 1º passo para a queda
Lucas · 5d
Seja soberano