Antes do Bitcoin Core v25.1, um invasor pode fazer com que um nó não baixe o bloco mais recente.
Esta questão é considerada Médio gravidade.
Detalhes
Ao receber um anúncio de novo bloco por meio de uma mensagem de cabeçalhos ou blocos compactos, o nó receptor solicita ao peer entregador o bloco completo ou os detalhes da transação ausentes. Se o ponto anunciador não responder conforme exigido pelo protocolo ponto a ponto, o nó Bitcoin Core afetado aguardará até 10 minutos antes de desconectar o ponto e fazer outra tentativa de download do bloco. Se o invasor conseguir fazer múltiplas conexões de entrada ou saída, esse processo poderá ser repetido.
Atrasar a entrega de blocos pode causar degradação da rede, retardando a convergência da rede, tornando os pagamentos de mineração menos justos e causando problemas de vivacidade.
Esta questão foi ainda agravada por outras questões divulgadas recentemente (por exemplo, a acumulação de inventário), quando os mempools eram relativamente heterogéneos, não permitindo a reconstrução oportunista de blocos compactos por pares honestos.
Uma mitigação foi introduzida em #27626introduzido no Bitcoin Core v26.0 e portado para v25.1. Ele garante que os blocos possam ser solicitados simultaneamente de até 3 pares de blocos compactos de alta largura de banda, um dos quais deve ser uma conexão de saída.
Atribuição
Relatado e corrigido por Greg Sanders.
Linha do tempo
- 08/05/2023 – Usuários relatando tempos limite de bloqueio no Canal IRC #bitcoin-core-dev
- 09/05/2023 – Primeiros problemas do github descrevendo o problema https://github.com/bitcoin/bitcoin/issues/25258#issuecomment -1540028533
- 11/05/2023 – PR de mitigação aberto https://github.com/bitcoin/bitcoin/pull/27626
- 24/05/2023 – PR fundido antes do Bitcoin Core v26.0
- 25/05/2023 – Backport para Bitcoin Core v25.1 mesclado https://github.com/bitcoin/bitcoin/pull/27752
- 19/10/2023 – Lançado Bitcoin Core v25.1
- 05-11-2024 – Divulgação pública