Vulnerabilidades KeyTrap e NSEC3 que afetam a maioria das implementações de DNSSEC

Duas vulnerabilidades foram identificadas em várias implementações do protocolo DNSSEC, afetando os resolvedores BIND, PowerDNS, dnsmasq, Knot Resolver e Unbound DNS. As vulnerabilidades podem causar negação de serviço para resolvedores DNS que realizam validação DNSSEC, causando uma alta carga de CPU que interfere no processamento de outras solicitações. Para realizar um ataque, basta enviar uma solicitação a um resolvedor DNS usando DNSSEC, o que leva a uma chamada para uma zona DNS especialmente projetada no servidor do invasor.

Problemas identificados:

  • CVE-2023-50387 (codinome KeyTrap) – Ao acessar zonas DNS especialmente projetadas, leva a uma negação de serviço devido à carga significativa da CPU e ao longo tempo de execução das verificações DNSSEC. Para realizar um ataque, é necessário colocar uma zona de domínio com configurações maliciosas em um servidor DNS controlado pelo invasor, e também garantir que esta zona seja acessada por um servidor DNS recursivo, cuja negação de serviço o invasor busca .

    Configurações maliciosas envolvem o uso de uma combinação de chaves conflitantes, registros RRSET e assinaturas digitais para uma zona. A tentativa de verificação usando essas chaves resulta em operações demoradas e com uso intensivo de recursos que podem carregar completamente a CPU e bloquear o processamento de outras solicitações (por exemplo, afirma-se que em um ataque ao BIND foi possível interromper o processamento de outras solicitações por 16 horas).

  • CVE-2023-50868 (codinome NSEC3) é uma negação de serviço devido à computação significativa sendo executada ao calcular hashes em registros NSEC3 (Next Secure v3) ao processar respostas DNSSEC especialmente criadas. O método de ataque é semelhante à primeira vulnerabilidade, exceto que um conjunto especialmente projetado de registros NSEC3 RRSET é criado no servidor DNS do invasor.

Note-se que o aparecimento das vulnerabilidades acima mencionadas é causado pela definição na especificação DNSSEC da capacidade do servidor DNS enviar todas as chaves criptográficas disponíveis, enquanto os resolvedores devem processar quaisquer chaves recebidas até que a verificação seja concluída com êxito ou todas as chaves recebidas foram verificadas.

Como medidas para bloquear vulnerabilidades, os resolvedores limitam o número máximo de chaves DNSSEC envolvidas no processo de cadeia de confiança e o número máximo de cálculos de hash para NSEC3, e também limitam novas tentativas de verificação para cada RRSET (combinação de assinatura de chave) e cada resposta do servidor.

As vulnerabilidades são corrigidas em atualizações para Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) e BIND (9.16.48, 9.18.24). .9.19.21 e XNUMX). O status das vulnerabilidades nas distribuições pode ser avaliado nestas páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.

As versões 9.16.48, 9.18.24 e 9.19.21 do servidor DNS BIND também corrigiram várias outras vulnerabilidades:

  • CVE-2023-4408 A análise de mensagens DNS grandes pode causar alta carga de CPU.
  • CVE-2023-5517 - Uma solicitação para uma zona reversa especialmente criada pode levar a uma falha devido ao acionamento de uma verificação de afirmação. O problema só aparece em configurações com a configuração “nxdomain-redirect” habilitada.
  • CVE-2023-5679 – A detecção recursiva de host pode levar a uma falha devido ao acionamento de uma verificação de declaração em sistemas com suporte DNS64 e “serve-stale” habilitado (configurações, stale-cache-enable e stale-answer-enable).
  • CVE-2023-6516 Consultas recursivas especialmente criadas podem fazer com que o processo esgote a memória disponível para elas.

Fonte: opennet.ru

Adicionar um comentário