Ataque hacker a carteiras físicas de Bitcoin causa prejuízos de 89 milhões de dólares

Uma falha no gerador de números aleatórios da carteira ColdCard provocou o caos — e sem precisar de acesso físico ou remoto a esses dispositivos

ColdCard
Sem comentários Facebook Twitter Flipboard E-mail
victor-bianchin

Victor Bianchin

Redator
victor-bianchin

Victor Bianchin

Redator

Victor Bianchin é jornalista.

2239 publicaciones de Victor Bianchin

Quem já investiu em criptomoedas sabe bem: as carteiras físicas ("cold wallets") eram consideradas a forma ideal de proteger os ativos contra possíveis roubos. Esses dispositivos sempre prometiam a mesma coisa: que as chaves necessárias para movimentar o dinheiro jamais sairiam da carteira. Mas isso não era verdade.

No dia 31 de julho, centenas de proprietários de carteiras ColdCard viram seu dinheiro desaparecer em apenas 40 minutos. Os hackers não precisaram ter acesso físico aos dispositivos, infectá-los com malware nem se conectar a eles remotamente. Bastou fazer algo que deveria ser impossível: adivinhar as chaves privadas para roubar os fundos. O ataque afetou 1.367 bitcoins, cerca de 89 milhões de dólares nos preços atuais, retirados de 4.585 endereços de carteiras diferentes. Embora seja um roubo relativamente pequeno quando comparado a outros grandes ataques do passado, o mais significativo é a forma como ele foi executado.

O ataque não rompeu o isolamento inerente às carteiras e nem extraiu as chaves armazenadas nelas. A falha era ainda mais grave: ocorreu no momento em que o dispositivo gerou essas chaves. Uma carteira de Bitcoin primeiro cria uma semente (seed), uma sequência de dados aleatórios. A partir dela são derivadas as chaves privadas e os endereços. Se essa semente for realmente imprevisível, testar todas as possibilidades é inviável, até mesmo para os supercomputadores mais poderosos do planeta. O problema é que, se a semente não for verdadeiramente aleatória, não importa que o cofre (a carteira) esteja completamente isolado e fechado.

Parecia aleatório, mas não era 

Em 2021, os responsáveis pela ColdCard alteraram parte do código usado para gerar sementes ao integrar uma biblioteca chamada libNgU. A intenção era utilizar o gerador físico de números aleatórios do dispositivo. No entanto, um erro de integração fez com que o programa passasse a usar, como alternativa, um gerador de números pseudoaleatórios do MicroPython embarcado, que expunha a biblioteca libsecp256k1 e outras primitivas do Bitcoin, conforme explicou a empresa Coinkite em sua análise técnica do desastre de segurança que afetou as carteiras ColdCard.

O gerador alternativo utilizava dados como o identificador fixo do chip e diversos registros relacionados ao relógio interno do dispositivo. Esses valores produzem números que podem parecer aleatórios, mas não oferecem um nível de aleatoriedade criptográfica suficientemente robusto, pois seu intervalo de possibilidades podia ser limitado. Com conhecimento suficiente do firmware e do funcionamento do hardware, um atacante poderia recriar, fora do dispositivo, uma lista de possíveis sementes.

Ataque de força bruta

Nos modelos Mk2 e Mk3 afetados, a Coinkite estima que o espaço efetivo para a geração de sementes foi reduzido para 40 bits. Nos modelos Mk4 e Mk5, havia um elemento adicional de entropia, elevando as sementes para 72 bits. No entanto, a análise dos especialistas da Block revelou que um problema nesse firmware fazia com que as sementes ficassem limitadas, na prática, a apenas 32 bits. Isso significava que "adivinhar" as chaves deixava de ser algo virtualmente impossível e passava a depender apenas de poder computacional e tempo.

Esses 32 bits resultam em cerca de 4,3 bilhões de possíveis chaves diferentes. Parece um número gigantesco para um ser humano testar manualmente, mas é perfeitamente administrável para máquinas capazes de realizar cálculos em massa. Para cada semente, o atacante podia gerar os possíveis endereços e compará-los com o blockchain do Bitcoin. Quando encontrava um endereço com saldo, obtinha a chave necessária para movimentar os fundos. Não importava que a carteira física estivesse guardada em segurança, até mesmo dentro de um cofre: o atacante nem sequer precisava acessá-la, pois, com essas informações, era como se tivesse a carteira em suas próprias mãos.

Um roubo em ondas

A primeira grande operação de transferência esvaziou 1.082,65 BTC de 1.196 carteiras em apenas 41 minutos no dia 31 de julho. Novas varreduras elevaram o total roubado para 1.367 bitcoins, cerca de 89 milhões de dólares. Um estudo da Galaxy Research indica que o mais provável é que um único atacante tenha sido responsável pela ação, embora também seja possível que vários invasores diferentes tenham explorado o mesmo conjunto de chaves vulneráveis.

A Coinkite já disponibilizou atualizações de firmware que corrigem o problema nos dispositivos afetados. No entanto, instalar a atualização apenas impede que novas sementes vulneráveis sejam geradas; isso não torna segura uma semente criada anteriormente. A recomendação dos desenvolvedores da ColdCard é atualizar o dispositivo, gerar uma semente completamente nova e, em seguida, transferir os fundos para essa nova carteira.

Os responsáveis pela ColdCard reconhecem que o código do dispositivo era público e que as auditorias anteriores verificaram a presença do gerador físico de números aleatórios e do mecanismo de geração de sementes, mas não analisaram detalhadamente qual implementação estava realmente sendo utilizada pela função responsável por criar essas sementes. Eles também admitem ter utilizado um modelo avançado de IA para tentar analisar a segurança do software, mas o problema não foi identificado. Há especulações de que alguém possa ter usado um modelo de IA para revisar versões antigas do código e encontrar a falha, embora não existam evidências de que a vulnerabilidade tenha sido descoberta dessa maneira.

Imagem | Wikimedia

Este texto foi traduzido/adaptado do site Xataka Espanha.


Inicio