Bitcoin Core :: Divulgação do CVE-2017-18350

MEDIA TEAM

Os nós eram potencialmente vulneráveis ​​a um buffer overflow por servidores SOCKS maliciosos. Uma correção foi lançada em 6 de novembro de 2017 no Bitcoin Core versão 0.15.1.

CVE-2017-18350 é uma vulnerabilidade de buffer overflow que permite que um servidor proxy SOCKS malicioso substitua a pilha de programas em sistemas com um char tipo (incluindo PCs x86 comuns de 32 e 64 bits).

A vulnerabilidade foi introduzida em 60a87bce873 (suporte SOCKS5) e lançado pela primeira vez no Bitcoin Core v0.7.0rc1 em 27 de agosto de 2012. Uma correção foi ocultada em d90a00eabed (“Melhorar e documentar o código SOCKS”) lançado em v0.15.1, 6 de novembro de 2017.

Para ficar vulnerável, o nó deve ser configurado para usar esse proxy malicioso em primeiro lugar. Observe que usando qualquer proxy em uma rede insegura (como a Internet) é potencialmente uma vulnerabilidade, pois a conexão pode ser interceptada para esse fim.

Após uma solicitação de conexão do nó, o proxy malicioso responderia com uma confirmação de um nome de domínio de destino diferente daquele solicitado. Normalmente, esse reconhecimento é totalmente ignorado, mas se o comprimento usar o bit alto (ou seja, um comprimento de 128 a 255 inclusive), ele será interpretado pelas versões vulneráveis ​​como um número negativo. Quando o número negativo é passado para a chamada do sistema recv() para ler o nome de domínio, ele é convertido novamente em um número positivo/não assinado, mas em um tamanho muito maior (normalmente 32 bits), resultando em uma leitura efetivamente infinita. e além do buffer de pilha fictício de 256 bytes.

Para corrigir esta vulnerabilidade, o buffer fictício foi alterado para um tipo de dados explicitamente não assinado, evitando a conversão de/para um número negativo.

O crédito vai para práticorápido por descobrir e fornecer a correção inicial para a vulnerabilidade, e Wladimir J. van der Laan por uma versão disfarçada da correção, bem como pela limpeza geral do código em risco.

  • 01/04/2012: Vulnerabilidade introduzida no PR #1141.
  • 08/05/2012: Vulnerabilidade mesclada ao repositório mestre git.
  • 27/08/2012: Vulnerabilidade publicada na v0.7.0rc1.
  • 17/09/2012: Vulnerabilidade lançada na v0.7.0.
  • 21/09/2017: PracticalSwift divulga vulnerabilidade à equipe de segurança.
  • 23/09/2017: Wladimir abre PR #11397 para corrigir discretamente a vulnerabilidade.
  • 27/09/2017: Correção mesclada ao repositório git mestre.
  • 18/10/2017: Correção mesclada no repositório git 0,15.
  • 04/11/2017: Correção publicada na v0.15.1rc1.
  • 09/11/2017: Correção lançada na v0.15.1.
  • 22/06/2019: Existência de vulnerabilidade divulgada para bitcoin-dev ML.
  • 08/11/2019: Divulgação de detalhes de vulnerabilidade para bitcoin-dev ML.

Leave a comment

Leave a Reply

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