Novo ataque SAD DNS para inserir dados falsos no cache DNS

Uma equipe de pesquisadores da Universidade da Califórnia, Riverside, publicou uma nova variante do ataque SAD DNS (CVE-2021-20322) que funciona apesar das proteções adicionadas no ano passado para bloquear a vulnerabilidade CVE-2020-25705. O novo método é geralmente semelhante à vulnerabilidade do ano passado e difere apenas no uso de um tipo diferente de pacotes ICMP para verificar portas UDP ativas. O ataque proposto permite a substituição de dados fictícios no cache do servidor DNS, que podem ser usados ​​para substituir o endereço IP de um domínio arbitrário no cache e redirecionar solicitações do domínio para o servidor do invasor.

O método proposto funciona apenas na pilha de rede Linux devido à sua conexão com as peculiaridades do mecanismo de processamento de pacotes ICMP no Linux, que atua como uma fonte de vazamento de dados que simplifica a determinação do número da porta UDP utilizada pelo servidor para enviar um solicitação externa. Mudanças que bloqueiam o vazamento de informações foram adotadas no kernel Linux no final de agosto (a correção foi incluída no kernel 5.15 e nas atualizações de setembro para as ramificações LTS do kernel). A correção se resume a passar a usar o algoritmo de hash SipHash em caches de rede em vez do Jenkins Hash. O status de correção da vulnerabilidade nas distribuições pode ser avaliado nestas páginas: Debian, RHEL, Fedora, SUSE, Ubuntu.

De acordo com os pesquisadores que identificaram o problema, cerca de 38% dos resolvedores abertos na rede são vulneráveis, incluindo serviços DNS populares como OpenDNS e Quad9 (9.9.9.9). Quanto ao software de servidor, um ataque pode ser realizado usando pacotes como BIND, Unbound e dnsmasq em um servidor Linux. O problema não aparece em servidores DNS executados em sistemas Windows e BSD. Para realizar um ataque com sucesso, é necessário usar falsificação de IP, ou seja, é necessário que o ISP do invasor não bloqueie pacotes com um endereço IP de origem falso.

Como lembrete, o ataque SAD DNS contorna as proteções adicionadas aos servidores DNS para bloquear o método clássico de envenenamento de cache DNS proposto em 2008 por Dan Kaminsky. O método de Kaminsky manipula o pequeno tamanho do campo de ID de consulta DNS, que tem apenas 16 bits. Para selecionar o identificador de transação DNS correto necessário para falsificação de nome de host, basta enviar aproximadamente 7000 solicitações e simular cerca de 140 mil respostas fictícias. O ataque se resume ao envio de um grande número de pacotes com ligação de IP fictício e com diferentes identificadores de transação DNS para o resolvedor DNS. Para evitar o cache da primeira resposta, cada resposta fictícia contém um nome de domínio ligeiramente modificado (1.example.com, 2.example.com, 3.example.com, etc.).

Para se proteger contra esse tipo de ataque, os fabricantes de servidores DNS implementaram uma distribuição aleatória do número de portas da rede de origem a partir das quais as solicitações de resolução são enviadas, o que compensou o tamanho insuficientemente grande do identificador. Após implementar a proteção para envio de resposta fictícia, além de selecionar um identificador de 16 bits, foi necessário selecionar uma das 64 mil portas, o que aumentou o número de opções de seleção para 2^32.

O método SAD DNS permite simplificar radicalmente a determinação do número da porta da rede e reduzir o ataque ao método Kaminsky clássico. Um invasor pode detectar o acesso a portas UDP ativas e não utilizadas, aproveitando o vazamento de informações sobre a atividade das portas de rede ao processar pacotes de resposta ICMP. O método nos permite reduzir o número de opções de pesquisa em 4 ordens de magnitude - 2^16+2^16 em vez de 2^32 (131_072 em vez de 4_294_967_296). O vazamento de informações que permite determinar rapidamente as portas UDP ativas é causado por uma falha no código de processamento de pacotes ICMP com solicitações de fragmentação (sinalizador ICMP Fragmentation Needed) ou redirecionamento (sinalizador ICMP Redirect). O envio desses pacotes altera o estado do cache na pilha da rede, o que permite determinar, com base na resposta do servidor, qual porta UDP está ativa e qual não está.

Cenário de ataque: quando um resolvedor DNS tenta resolver um nome de domínio, ele envia uma consulta UDP ao servidor DNS que atende o domínio. Enquanto o resolvedor aguarda uma resposta, um invasor pode determinar rapidamente o número da porta de origem que foi usada para enviar a solicitação e enviar uma resposta falsa a ela, personificando o servidor DNS que atende o domínio usando falsificação de endereço IP. O resolvedor DNS armazenará em cache os dados enviados na resposta falsa e, por algum tempo, retornará o endereço IP substituído pelo invasor para todas as outras solicitações DNS para o nome de domínio.

Fonte: opennet.ru

Adicionar um comentário