Deux vulnérabilités ont été identifiées dans diverses implémentations du protocole DNSSEC, affectant les résolveurs DNS BIND, PowerDNS, dnsmasq, Knot Resolver et Unbound. Ces vulnérabilités permettent de provoquer un déni de service des résolveurs DNS effectuant une validation via DNSSEC, en raison d'une charge CPU élevée qui entrave le traitement d'autres requêtes. Pour mener l'attaque, il suffit d'envoyer au résolveur DNS utilisant DNSSEC une requête qui entraîne l'accès à une zone DNS spécialement conçue sur le serveur de l'attaquant.
Problèmes identifiés :
- CVE-2023-50387 (nom de code KeyTrap) - lors de l'accès à des zones DNS spécialement conçues, cela provoque un déni de service en raison d'une charge CPU significative et d'une durée prolongée de la vérification DNSSEC. Pour réaliser l'attaque, il est nécessaire de placer sur un serveur DNS contrôlé par l'attaquant une zone de domaine avec des configurations malveillantes, et d'amener le serveur DNS récursif à interroger cette zone, ce dont l'attaquant cherche à provoquer le déni de service.
Les configurations malveillantes consistent à utiliser pour la zone une combinaison de clés conflictuelles, d'enregistrements RRSET et de signatures numériques. Une tentative de vérification utilisant ces clés entraîne l'exécution d'opérations coûteuses en ressources, qui peuvent saturer complètement le CPU et bloquer le traitement d'autres requêtes (par exemple, il est rapporté qu'une attaque contre BIND a permis d'arrêter le traitement d'autres requêtes pendant 16 heures).
- CVE-2023-50868 (nom de code NSEC3) - déni de service en raison d'un calcul intensif lors du calcul des hachages dans les enregistrements NSEC3 (Next Secure v3) lors du traitement de réponses DNSSEC spécialement conçues. La méthode d'attaque ressemble à la première vulnérabilité, sauf que sur le serveur DNS de l'attaquant est créée un ensemble spécialement conçu d'enregistrements NSEC3 RRSET.
Il est noté que l'apparition des vulnérabilités susmentionnées est due à la définition dans la spécification DNSSEC de la possibilité pour le serveur DNS d'envoyer toutes les clés cryptographiques disponibles, alors que les résolveurs doivent traiter toutes les clés reçues, tant que la vérification n'est pas réussie ou que toutes les clés reçues n'ont pas été vérifiées.
Pour remédier aux vulnérabilités dans les résolveurs, le nombre maximal de clés DNSSEC impliquées dans le processus de construction de la chaîne de confiance est limité, tout comme le nombre maximal de calculs de hachages pour NSEC3, et les tentatives de vérification sont également restreintes pour chaque RRSET (combinaison de clés et de signatures) et chaque réponse. de serveurs.
Les vulnérabilités ont été corrigées dans les mises à jour d'Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) et BIND (9.16.48, 9.18.24 et 9.19.21). On peut évaluer le statut des corrections de vulnérabilités dans les distributions sur les pages suivantes : Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.
Dans les versions du serveur DNS BIND 9.16.48, 9.18.24 et 9.19.21, plusieurs autres vulnérabilités ont également été corrigées :
- CVE-2023-4408 — l'analyse de gros messages DNS peut entraîner une charge élevée sur le CPU.
- CVE-2023-5517 — une requête de zone inversée spécialement formatée peut entraîner un plantage dû à un échec de la vérification assert. Le problème ne se manifeste que dans les configurations avec le paramètre «nxdomain-redirect» activé.
- CVE-2023-5679 — la définition récursive d'un hôte peut provoquer un plantage dû à un échec de la vérification assert sur les systèmes avec prise en charge de DNS64 et «serve-stale» (paramètres stale-cache-enable et stale-answer-enable) activés.
- CVE-2023-6516 — des requêtes récursives spécialement formatées peuvent entraîner l'épuisement de la mémoire disponible pour le processus.
Source : opennet.ru
