Um malformado GETDATA
mensagem poderia acionar um loop infinito no nó receptor, usando 100% da CPU alocada para este thread e não fazendo mais progresso nesta conexão.
Esta questão é considerada Baixo gravidade.
Detalhes
Antes do Bitcoin Core 0.20.0, um invasor (ou até mesmo um cliente com bugs) poderia nos enviar um GETDATA
mensagem que faria com que nosso thread net_processing começasse a girar em 100% e não progredisse mais no processamento de mensagens para o peer do invasor. Ele ainda progrediria no processamento de mensagens de outros pares, portanto, é apenas um DoS de CPU com baixo impacto além disso (não fazer progresso para os pares invasores não é um problema). Ele também aumenta o uso de memória de longo prazo por peer em 1,5 MB por peer do invasor.
John Newbery abriu RP #18808 para corrigir esse problema revelando apenas a falta de progresso.
Atribuição
Créditos a John Newbery por encontrar esse bug, divulgá-lo de forma responsável e corrigi-lo.
Linha do tempo
- 2020-04-29 John Newbery abre #18808
- 2020-05-08 John Newbery relata sua descoberta por e-mail
- 12/05/2020 #18808 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.