Falha grave no Bitcoin Core permitia execução remota de código
Desenvolvedores do Bitcoin Core divulgaram hoje uma vulnerabilidade crítica (CVE-2024-52911) que permitia que mineradores executassem código remotamente em nós de outros usuários na rede. A falha afetava versões do software entre 0.14.1 e 28.4 e foi descoberta e relatada de forma responsável pelo desenvolvedor Cory Fields.
Embora o ataque fosse extremamente caro e tecnicamente complexo, a exploração bem-sucedida poderia ter consequências graves, como o crash de nós ou até mesmo a tomada de controle remoto da memória dos sistemas afetados.
Como funcionava o ataque?
A vulnerabilidade explorava um erro de uso após liberação de memória (use-after-free) no mecanismo de validação de blocos do Bitcoin Core. Durante o processo de validação, o software pré-calcula e armazena dados de entrada de transações em cache, enquanto threads em segundo plano validam scripts usando a memória do computador.
Se um nó fosse alvo de um ataque CVE-2024-52911, ele poderia continuar lendo dados do cache mesmo após esses dados terem sido liberados por outro processo. Isso criava uma condição anormal de memória, permitindo a execução remota de código.
Por que o ataque era tão caro?
Para explorar a vulnerabilidade, um minerador precisaria:
- Direcionar uma quantidade massiva de poder computacional (hashpower) para minerar blocos especialmente criados;
- Produzir blocos inválidos que não poderiam ser usados para recompensas de mineração (coinbase), resultando em prejuízo financeiro;
- Superar a barreira de dificuldade de mineração, que exige um gasto energético extremamente alto.
Devido a esses custos, a exploração prática da vulnerabilidade era improvável, embora não impossível. A equipe do Bitcoin Core destacou que, historicamente, não há registros de ataques desse tipo terem sido realizados.
Nós antigos ainda estão vulneráveis
Apesar da divulgação da falha e do lançamento de versões corrigidas (v29 e superiores), uma parcela significativa da rede ainda utiliza software vulnerável. Segundo estimativas, até 43% dos nós do Bitcoin ainda rodam versões antigas e desatualizadas.
Como as atualizações de nós completos são voluntárias e não automáticas, muitos operadores não aplicaram as correções necessárias. Isso deixa uma parte considerável da rede exposta a possíveis explorações, mesmo que o risco seja baixo.
Detecção e correção responsáveis
A vulnerabilidade foi detectada ainda em novembro de 2024 por Cory Fields, que a reportou de forma privada. Quatro dias depois, o desenvolvedor Pieter Wuille propôs uma correção por meio do Pull Request (PR) 31112, intitulado "Melhorar o registro de depuração de erros na validação paralela de scripts".
A descrição da correção foi propositalmente redigida de forma a parecer uma atualização de manutenção rotineira, evitando chamar atenção para a gravidade da falha. A equipe do Bitcoin Core publicou seu primeiro advisory de segurança relacionado à segurança de memória em cerca de dois anos, destacando a importância da correção.
"Creditamos a Cory Fields, do DCI, por encontrar e relatar o problema. Esta é, até onde sabemos, a primeira vulnerabilidade de segurança de memória divulgada publicamente no Bitcoin Core."
O que os usuários devem fazer?
Os operadores de nós do Bitcoin são fortemente aconselhados a atualizar imediatamente para a versão 29 ou superior do Bitcoin Core. A atualização é simples e pode ser feita por meio do site oficial ou dos repositórios do projeto.
Embora o risco de exploração seja baixo devido aos altos custos do ataque, a atualização é essencial para garantir a segurança e a estabilidade da rede. Nós desatualizados não apenas estão vulneráveis a essa falha específica, como também podem enfrentar outros problemas de segurança não corrigidos.