Um nó pode ser forçado a alocar uma quantidade significativa de memória ao receber uma mensagem especialmente criada.
INV
mensagem. Isto era particularmente um problema para nós com pouca memória disponível ou com um grande número de conexões.
Esta questão é considerada Médio gravidade.
Detalhes
Um INV
mensagem preenchida com 50.000 itens de bloqueio pode causar 50.000 getheaders
respostas a serem enviadas em um único ProcessMessages()
chamar. Cada resposta contém um localizador e tem cerca de 1 kB. Tudo seria colocado no buffer de envio de uma só vez. O invasor pode simplesmente se recusar a receber dados para evitar que o buffer de 50 MB seja esgotado.
John Newbery abriu RP #18962 para corrigir esse problema, pretextando um ganho de largura de banda ao enviar um único GETHEADERS
por recebido INV
.
Atribuição
Créditos a John Newbery por encontrar esse bug, divulgá-lo de forma responsável e corrigi-lo.
Linha do tempo
- 2020-05-08 John Newbery relata sua descoberta por e-mail
- 2020-05-12 John Newbery abre #18962
- 14/05/2020 #18962 foi mesclado
- 2020-06-03 Bitcoin Core versão 0.20.0 é lançada com uma correção
- 2021-09-13 A última versão vulnerável do Bitcoin Core (0.19.x) chega ao EOL
- 2024-07-03 Divulgação pública.