Divulgação do netsplit devido ao ajuste do timestamp

MEDIA TEAM

Divulgação dos detalhes de um bug de estouro de número inteiro que corria o risco de causar uma divisão de rede, cuja correção foi lançada em 15 de janeiro de 2021 no Bitcoin Core versão 0.21.0.

Esta questão é considerada Médio gravidade.

Detalhes técnicos

Uma vulnerabilidade de divisão de rede resultou de dois bugs separados no código de processamento do version
mensagens:

  • Estouro de número inteiro assinado ao calcular o deslocamento de tempo para pares recém-conectados.
  • bug lógico abs64 (abs64(std::numeric_limits::min()) ==
    std::numeric_limits::min()
    ), resultando em um desvio do limite máximo de ajuste de tempo.

Os dois bugs permitem que um invasor force o tempo ajustado da vítima (system time + network time
offset
) seja distorcido de modo que quaisquer novos blocos sejam rejeitados por terem um carimbo de data/hora muito distante no futuro. Deve-se notar que este ataque pressupõe que o invasor esteja entre os primeiros 200 pares a se conectar à vítima, já que apenas os deslocamentos de tempo dessas conexões iniciais são levados em consideração no tempo ajustado.

Atribuição

O crédito vai para práticorápido por descobrir e fornecer a correção inicial para a vulnerabilidade, e Pieter Wuille pela correção, bem como pela limpeza geral do código em risco.

Linha do tempo

  • 10/10/2020 Relatório inicial enviado para security@bitcoincore.org
  • 13/10/2020 Correção incorporada ao Bitcoin Core (https://github.com/bitcoin/bitcoin/pull/20141)
  • 2021-01-15 v0.21.0 lançada
  • 2022-04-25 A última versão vulnerável do Bitcoin Core (0.20.x) chega ao EOL
  • 2024-07-03 Divulgação pública
Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *