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
), resultando em um desvio do limite máximo de ajuste de tempo.::min()) ==
std::numeric_limits::min()
Os dois bugs permitem que um invasor force o tempo ajustado da vítima (system time + network time
) 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.
offset
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