Um grupo de pesquisadores da Universidade da Califórnia em Riverside publicou uma nova variante do ataque SAD DNS (CVE-2021-20322), que continua a funcionar apesar da proteção adicionada no ano passado para bloquear a vulnerabilidade CVE-2020-25705. O novo método é essencialmente semelhante à vulnerabilidade do ano passado, diferenciando-se apenas pelo uso de um tipo diferente de pacotes ICMP para verificar portas UDP ativas. O ataque proposto permite a injeção de dados falsos no cache do servidor DNS, o que pode ser usado para substituir o endereço IP de um domínio qualquer no cache e redirecionar solicitações para o domínio para o servidor do atacante.
O método proposto é funcional apenas na pilha de rede do Linux devido à vinculação às características do mecanismo de processamento de pacotes ICMP no Linux, que é a fonte de vazamento de dados, facilitando a identificação do número da porta UDP utilizada. servidor para enviar uma solicitação externa. Mudanças para bloquear o vazamento de informações foram incorporadas ao núcleo do Linux no final de agosto (a correção foi incluída no núcleo 5.15 e nas atualizações de setembro dos ramos LTS do núcleo). A correção consiste na alteração do uso do algoritmo de hash SipHash em vez do Jenkins Hash nos caches de rede. O status de correção da vulnerabilidade nas distribuições pode ser avaliado nas seguintes páginas: Debian, RHEL, Fedora, SUSE, Ubuntu.
De acordo com os pesquisadores que descobriram o problema, cerca de 38% dos resolvedores abertos disponíveis na rede estão vulneráveis, incluindo serviços DNS populares, como OpenDNS e Quad9 (9.9.9.9). Em termos de software de servidor, o ataque pode ser realizado em servidores Linux utilizando pacotes como BIND, Unbound e dnsmasq. Em servidores DNS que operam com sistemas Windows e BSD, o problema não se manifesta. Para que o ataque seja bem-sucedido, é necessário utilizar spoofing de IP, ou seja, é preciso que o provedor do atacante não bloqueie pacotes com um endereço IP de origem falso.
Lembramos que o ataque SAD DNS permite contornar 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 tamanho diminuto do campo do identificador da consulta DNS, que possui apenas 16 bits. Para descobrir o identificador da transação DNS necessário para falsificação de nome de host, basta enviar cerca de 7000 consultas e simular cerca de 140 mil respostas falsas. O ataque consiste no envio a um resolvedor DNS de um grande número de pacotes com uma ligação falsa ao IP e com diferentes identificadores de transação DNS. Para evitar o cache da primeira resposta, em cada resposta falsa é especificado um nome de domínio ligeiramente modificado (1.example.com, 2.example.com, 3.example.com, etc.).
Para proteger contra esse tipo de ataque, os fabricantes de servidores DNS implementaram a distribuição aleatória dos números das portas de rede de origem a partir das quais são enviados os pedidos de resolução, o que compensou o tamanho insuficientemente grande do identificador. Após a implementação da proteção, para enviar uma resposta falsa além de descobrir o identificador de 16 bits, tornou-se necessário também adivinhar uma das 64 mil portas, o que aumentou o número de combinações a 2^32.
O método SAD DNS permite simplificar drasticamente a determinação do número da porta de rede e reduzir o ataque ao método clássico de Kaminsky. O atacante pode identificar acessos a portas UDP não utilizadas e ativas, aproveitando a vazamento de informações sobre a atividade das portas de rede ao processar pacotes ICMP de resposta. O método permite reduzir em 4 ordens de grandeza o número de combinações a serem testadas — 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 pedidos de fragmentação (bandeira ICMP Fragmentation Needed) ou redirecionamento (bandeira ICMP Redirect). O envio de tais pacotes altera o estado do cache na pilha de rede, permitindo, com base na reação do servidor, determinar qual das portas UDP está ativa e qual não está.
Cenário de ataque: Quando o resolvedor DNS tenta determinar um nome de domínio, ele envia uma consulta UDP para o servidor DNS do domínio em questão. No momento em que o resolvedor aguarda a resposta, o atacante pode rapidamente identificar o número da porta de origem que foi usada para enviar a solicitação e enviar uma resposta falsa, se passando pelo servidor DNS legítimo, usando spoofing. endereços IPO resolvedor DNS armazenará em cache os dados fornecidos na resposta falsa e por um tempo retornará o endereço IP enganoso fornecido pelo atacante para todas as outras consultas DNS do nome de domínio.
Fonte: opennet.ru
