Vulnerabilidade no Servidor de DNS do Windows - CVE-2020-1350

O CERT.Bahia alerta sobre vulnerabilidade crítica no servidor de DNS do Windows.

Descrição

Recentemente o grupo de pesquisa da Checkpoint descobriu uma vulnerabilidade no servidor de DNS do Windows. O white paper da pesquisa está disponível em [0] e a essa vulnerabilidade foi atribuído CVE-2020-1350.

O problema acontece devido a uma não validação no tamanho do buffer alocado para um tipo de consulta DNS que passa pelo servidor Windows, causando um integer overflow que leva a um heap buffer overflow.

Pela criticidade do serviço e facilidade de exploração, essa vulnerabilidade recebeu nota máxima no CVSSv3: 10.0 CRITICA (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).

Cenários

A exploração acontece ao consultar um registro que a resposta terá um tamanho maior do que o previamente suportado pelo servidor. Isso faz com que não seja necessário nenhum tipo de autenticação nem interação do usuário.

Na pesquisa, inclusive, foi mostrado como é possível fazer a exploração utilizando o navegador.

Sistemas Afetados

De acordo com blogpost da Microsoft, todas as versões do Windows Server são afetadas.

Prova de Conceito

Já existem provas de conceito de exploração públicas que causam negação de serviço do DNS, como em [1] e [2], o que aumenta a possibilidade de criação de exploits para execução de código remoto.

Soluções

A Microsoft lançou patches de segurança que corrigem a vulnerabilidade, disponíveis em [3].

Para real funcionamento do patch será necessário reiniciar o servidor.

Soluções Paliativas

Caso não seja possível aplicar o patch pois será preciso reiniciar o servidor, recomendamos aplicar uma solução paliativa, mas informamos que é extremamente importante a aplicação do patch o mais breve possível.

A solução paliativa consiste em alterar o tamanho máximo de respostas DNS permitidas:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters" /v "TcpReceivePacketSize" /t REG_DWORD /d 0xFF00 /f

Após modificação do registro como mostrado acima será necessário reiniciar o serviço DNS:

net stop dns && net start dns

Referências