A equipa de desenvolvimento do Bitcoin Core divulgou e corrigiu três vulnerabilidades no software que faz funcionar a grande maioria dos nós da rede Bitcoin. Nenhuma foi descoberta através de um ataque ou de uma denúncia externa de abuso. Foram detetadas de forma proativa, através de uma análise automatizada com modelos de linguagem de grande escala realizada pelo Project Loupe, uma iniciativa de segurança gerida pela empresa Spiral, com relatórios paralelos submetidos pelos investigadores independentes L0rinc, membro da Bitcoin Red Team, e Andrew Dorman.
O protocolo Bitcoin em si não foi afetado pela vaga de falhas técnicas que comprometeu grande parte da infraestrutura de servidores da internet este mês. Charles Guillemet, Chief Technology Officer da Ledger, descreveu o panorama mais amplo enfrentado pelo setor como um cenário global de cibersegurança aterrador. O código do Bitcoin, no entanto, não ficou imune ao escrutínio, e as três falhas encontradas dizem respeito à forma como o Bitcoin Core gere a memória, e não às regras de consenso da própria rede.
Três fragilidades distintas
A primeira falha permitia um crescimento ilimitado de memória quando um nó par simulava não suportar a norma de comunicação BIP 31. Ao atrasar estrategicamente a leitura de mensagens e ao contornar o mecanismo que desliga nós inativos ao fim de 20 minutos, um atacante podia fazer crescer sem limite a fila de dados de um nó, consumindo até 5 MB por hora em ligações de saída.
A segunda afetava todas as plataformas exceto Linux. Ao enviar dados urgentes através do protocolo TCP, um atacante conseguia contornar o mecanismo limitador de processamento e acumular uma quantidade excessiva de informação, fazendo colapsar trivialmente qualquer nó a correr Windows, macOS ou BSD. Os sistemas Linux ficaram poupados porque o Bitcoin Core utiliza código de monitorização diferente nesse sistema operativo.
A terceira envolvia um overflow nos dados de reversão ("undo data"), a informação usada para reverter transações durante uma reorganização da cadeia. Estes ficheiros de reversão eram guardados em números inteiros de 32 bits, sem limite formal de tamanho. Um mineiro podia gerar blocos maliciosos cujo volume de dados ultrapassasse 4 GiB, provocando o colapso do registo e a sobreposição de dados antigos por novos. Caso ocorresse depois uma reorganização, o nó afetado perdia a capacidade de ler a informação e desligava-se automaticamente.
Correções já em circulação
Duas das três falhas foram classificadas com gravidade média, ambas ligadas ao esgotamento de memória; a terceira, o overflow nos dados de reversão, foi classificada com gravidade baixa. As correções foram lançadas a 27 e 28 de outubro através das versões 29.5, 30.4, 31.2 e 32.1 do Bitcoin Core.
As correções não fecham todas as brechas. Computadores com sistemas operativos de 32 bits e nós que guardam blocos em discos formatados em FAT32 continuam expostos ao problema de overflow, devido a limitações inerentes à leitura de ficheiros com mais de 4 GiB nessas configurações.
O episódio ilustra uma mudança na forma como as vulnerabilidades no software central do Bitcoin estão a ser encontradas: não através de resposta a incidentes após a exploração, mas através de uma análise sistemática e automatizada combinada com revisão humana independente, detetando o tipo de defeitos na gestão de memória que historicamente têm sido o ponto de entrada para ataques de negação de serviço contra a infraestrutura da rede.




