
Bitcoin Magazine
O Fim da Era do Código Fechado Está Próximo: Obscuridade Nunca Foi Segurança
Nos últimos dias, pessoas que estavam tentando fazer tudo certo perderam seu Bitcoin. Elas compraram um assinador de hardware respeitado, geraram uma semente offline usando esse dispositivo e confiaram no dispositivo para fazer a única coisa que um assinador existe para fazer: produzir um número que ninguém mais pode adivinhar. O Coldcard não fez isso. Um guardião pré-processador que verificava a coisa errada havia silenciosamente redirecionado a geração de sementes para um PRNG de software fraco (gerador de números pseudorrandômicos), o Yasmarang do MicroPython, em vez da fonte de entropia de hardware. Em alguns modelos, a entropia efetiva colapsou para cerca de 40 bits. A falha foi lançada em março de 2021 e permaneceu em firmware legível publicamente por mais de cinco anos. Ataques varreram 500 endereços antes que alguém entendesse o porquê; em poucos dias, a contagem da Galaxy Research alcançou 4.585 endereços e quase $90 milhões; o ataque está em andamento na data deste artigo.
A suposição de trabalho da Coinkite, com ampla concordância sobre X, é que alguém usou IA para vasculhar o firmware disponível publicamente para encontrar o bug. Se foi assim que esse atacante o encontrou ou não, o próximo o fará. Embora uma auditoria assistida por IA tenha sido realizada semanas antes do roubo, não encontrou nada (potencialmente devido às capacidades do modelo, potencialmente devido à construção específica da busca). Desde que o ataque começou, pesquisadores mostraram vários modelos de fronteira localizando a mesma falha em minutos a partir de um único prompt. O código ficou aberto à revisão humana por cinco anos e nenhum humano o detectou.
A Coinkite havia mudado seu firmware de uma licença de software livre para termos de código disponível, MIT com uma Cláusula de Commons, após a Foundation Devices usar o código em um produto concorrente. Você poderia ler o código-fonte, mas não construir um negócio com ele. Isso não mudou nada. O bug existia em um código que uma máquina poderia ler, independentemente do que a licença permitia; ele entrou na árvore, na verdade, na própria reescrita que removeu o último do código GPL. A mudança de licença não aumentou a proteção; apenas mudou a economia de encontrar o bug.
Na era da IA altamente qualificada, tudo que é distribuído é legível, ou em breve será. Remova os símbolos de um binário, passe-o por um decompilador, e sai o pseudo-C que cumprimenta qualquer um que abriu o Ghidra: variáveis sem nome, fluxo de controle achatado, funções rotuladas como FUN_00401a20. Inlegível para a maioria das pessoas. Essa alta barreira para a compreensão humana era todo o prêmio de segurança do "código fechado."
Um programa compilado não tem escolha a não ser dizer a verdade. Código que permanece criptografado não pode ser executado. No momento da execução, o processador deve receber as instruções reais, então, seja o que for que o programa faça, ele entrega à máquina um relato completo e exato de como fazê-lo. A informação está toda lá no código de máquina. A ofuscação não remove, e não pode remover, isso.
Se ler um binário parece difícil demais para uma máquina dominar em breve, pese isso contra o que as máquinas já estão fazendo com problemas muito mais difíceis. Ler um binário é análise: cada fato que você precisa está na sua frente, e o trabalho é extração. A invenção matemática é de outra ordem de dificuldade, porque exige um objeto que ninguém jamais viu. Às 02:19 UTC do dia 20 de julho, Levent Alpöge, um matemático que trabalha com o Claude Fable 5 da Anthropic, postou um contraexemplo à conjectura jacobiana de Keller, um problema em aberto desde 1939 e difícil o suficiente para estar na lista de desafios de Stephen Smale para o século XXI. Gerações tentaram. A refutação é composta por três polinômios em três variáveis. Lean verificou isso em poucas horas, e é curto o suficiente para que qualquer um possa confirmar em um sistema de álgebra computacional em cerca de um minuto.
A jacobiana caiu em uma tarde, enquanto o questionador aparentemente assistia à partida final da Copa do Mundo da FIFA. Em maio, um modelo da OpenAI derrubou a conjectura da unidade de distância de Erdős, uma questão em aberto desde 1946; no final de julho, uma conjectura de teoria dos grafos de 30 anos caiu com quatro comandos; entre elas veio a refutação da jacobiana e uma série de outros resultados que permaneceram por décadas.
Defina esse ritmo ao lado da modesta tarefa de ler código de máquina que já está disponível na Internet. Os modelos de hoje lidam melhor com a saída de código-fonte e descompiladores do que com bytes brutos, então um binário totalmente fechado mantém uma margem fina. Essa margem é um obstáculo de custo, e está se erodindo na velocidade que você está observando em todos os outros lugares. Apostar na segurança sobre quanto tempo isso dura significa apostar contra um relógio que só está acelerando.
A mesma capacidade que encontra seu bug de entropia lê seu método proprietário. Esta é a vítima silenciosa, e impacta empresas que nunca se consideraram expostas a qualquer coisa de código aberto. O segredo comercial em software enviado sempre foi apenas obscuridade em um terno. A lei disse isso desde que a lei de segredo comercial existe: engenharia reversa de um produto que você possui legalmente é jogo limpo, e, portanto, um segredo sobrevive apenas enquanto essa engenharia reversa permanecer cara. Quando o custo de extração cai para uma assinatura e um prompt, o segredo incorporado no código que você entrega aos seus clientes deixa de ser um. Seu algoritmo inteligente, seu formato não documentado, sua vantagem no binário: legível para qualquer um que se importe em olhar, em uma linha do tempo cada vez mais medida em minutos.
Nada disso necessariamente torna o código aberto seguro. O Heartbleed ficou escondido na biblioteca TLS mais amplamente implantada na Terra por dois anos, porque visibilidade sem atenção financiada não encontra nada. O backdoor xz mostrou que o modelo de contribuição aberta é em si uma superfície de ataque, uma que um adversário paciente pode atravessar com um rosto amigável e dois anos de bons commits. Enquanto a abertura antes era um escudo, agora não é mais. O que isso faz é comprar revisores que têm permissão para olhar, builds que podem ser reproduzidos e verificados de forma independente, uma saída quando um fornecedor morre ou muda, e o reconhecimento de que tudo isso acontecerá quer você goste ou não.
Agora devemos assumir que cada linha enviada será lida por alguém que deseja causar dano, porque será.O defensor possui uma vantagem estrutural que o atacante nunca terá: tempo. Você pode aplicar os mesmos modelos de fronteira no seu próprio código antes do lançamento, no espaço entre o commit e o envio, enquanto o atacante espera por um binário que ainda não existe. Torne suas compilações reproduzíveis, para que se conectem à fonte e a fonte possa ser verificada. Projete para falhar de forma fechada e mantenha o núcleo confiável pequeno o suficiente para que um único bug não comprometa tudo. Para o negócio específico de manter Bitcoin, aprenda a lição que o Coldcard está ensinando em tempo real: possua a entropia que você não pode se dar ao luxo de ter adivinhado, mantenha o elemento seguro mínimo e atrás de uma interface publicada, e espalhe suas chaves por implementações independentes, para que nenhum dispositivo único, e nenhum erro de um único fornecedor, represente toda a sua exposição.
Para o Bitcoin, as apostas são implacáveis de uma maneira que não são em outros lugares, já que o mero conhecimento das chaves privadas concede posse. O bug da entropia deixou cicatrizes permanentes. Corrigir o gerador não faz nada pelas sementes que já produziu; um espaço de chave fraco permanece vulnerável para sempre, e a divulgação entrega ao atacante a receita. Já vimos isso antes. A vulnerabilidade Milk Sad na ferramenta exploradora libbitcoin, bx, gerou chaves privadas a partir de um valor de 32 bits, e os atacantes estavam drenando as carteiras que ela produziu antes que a falha fosse tornada pública. Os atacantes seguem sua própria agenda, convidados ou não. Para dinheiro que não pode ser recuperado, “encontrável eventualmente” é um sinônimo de “perdido eventualmente.”
O Bitcoin nunca confiou na obscuridade. O protocolo é aberto, suas regras verificáveis por qualquer um, sua segurança não repousa em segredos, mas em matemática e incentivos que se mantêm à vista. O hardware e o software que construímos ao seu redor merecem o mesmo padrão, porque a alternativa não está mais sobre a mesa. A escolha nunca foi aberta ou fechada. Foi disciplinada ou exposta.
A lição mais ampla dessa situação do Coldcard é que ter software de código fechado é como ter uma semente gerada por um Coldcard quebrado; parece bom, mas é fundamentalmente construído sobre areia. Todos podem ler o código — a única pergunta que resta é se você reconhece esse fato, ou se você e seus usuários aprendem isso da maneira que os usuários do Coldcard aprenderam, um endereço drenado de cada vez.
Este é um post de convidado de Colin Crossman, que é um produtor de conteúdo na Fedi. As opiniões expressas são inteiramente suas e não refletem necessariamente as de BTC Inc ou da Bitcoin Magazine.
Este post O Fim da Era do Código Fechado Está Próximo: A Obscuridade Nunca Foi Segurança apareceu pela primeira vez na Bitcoin Magazine e é escrito por Colin Crossman.
Fonte: BitcoinMagazine





