In verschiedenen Implementierungen des DNSSEC-Protokolls wurden zwei Schwachstellen entdeckt, die DNS-Resolver wie BIND, PowerDNS, dnsmasq, Knot Resolver und Unbound betreffen. Diese Schwachstellen können zu einem Denial of Service (DoS) bei DNS-Resolvern führen, die eine Validierung mit DNSSEC durchführen, da sie zu einer hohen CPU-Auslastung führen, die die Bearbeitung anderer Anfragen beeinträchtigt. Für einen Angriff reicht es aus, eine Anfrage an einen DNS-Resolver, der DNSSEC verwendet, zu senden, die auf eine speziell gestaltete DNS-Zone auf dem Server des Angreifers verweist.
Identifizierte Probleme:
- CVE-2023-50387 (Codename KeyTrap) — der Zugriff auf speziell gestaltete DNS-Zonen führt zu einem Denial of Service aufgrund einer erheblichen CPU-Auslastung und einer langen Ausführungszeit der DNSSEC-Überprüfung. Für einen Angriff ist es notwendig, eine Domain-Zone mit schädlichen Einstellungen auf dem vom Angreifer kontrollierten DNS-Server zu hosten und eine rekursive DNS-Serveranfrage an diesen Bereich zu richten, was vom Angreifer zum Denial of Service angestrebt wird.
Die schädlichen Einstellungen bestehen darin, eine Kombination aus widersprüchlichen Schlüsseln, RRSET-Einträgen und digitalen Signaturen für die Zone zu verwenden. Der Versuch einer Überprüfung mit diesen Schlüssel führt zu langwierigen, ressourcenintensiven Operationen, die die CPU vollständig auslasten und die Bearbeitung anderer Anfragen blockieren können (es wird beispielsweise behauptet, dass bei einem Angriff auf BIND die Bearbeitung anderer Anfragen 16 Stunden lang gestoppt wurde).
- CVE-2023-50868 (Codename NSEC3) — Denial of Service aufgrund erheblicher Berechnungen beim Berechnen von Hashes in NSEC3 (Next Secure v3) Einträgen bei der Verarbeitung speziell gestalteter DNSSEC-Antworten. Die Angriffsmethode ähnelt der ersten Schwachstelle, nur dass auf dem Server des Angreifers ein speziell gestalteter NSEC3 RRSET erstellt wird.
Es wird darauf hingewiesen, dass das Auftreten der oben genannten Schwachstellen durch die Definition in der DNSSEC-Spezifikation ausgelöst wurde, die es dem DNS-Server ermöglicht, alle verfügbaren kryptografischen Schlüssel zu senden, während die Resolver alle empfangenen Schlüssel bearbeiten müssen, bis die Überprüfung erfolgreich abgeschlossen ist oder alle empfangenen Schlüssel überprüft wurden.
Um die Schwachstellen in den Resolvern zu blockieren, wird die maximale Anzahl von DNSSEC-Schlüsseln, die beim Aufbau einer Vertrauenskette verwendet werden, sowie die maximale Anzahl von Hash-Berechnungen für NSEC3 begrenzt; zudem werden die wiederholten Überprüfungsversuche für jedes RRSET (Kombinationen von Schlüsseln und Signaturen) und jede Antwort limitiert. Server.
Die Schwachstellen wurden in den Updates von Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) und BIND (9.16.48, 9.18.24 und 9.19.21) behoben. Den Status der Behebung der Schwachstellen in den Distributionen kann man auf den folgenden Seiten einsehen: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.
In den Versionen des DNS-Servers BIND 9.16.48, 9.18.24 und 9.19.21 wurden zusätzlich mehrere weitere Schwachstellen behoben:
- CVE-2023-4408 — das Parsen großer DNS-Nachrichten kann zu einer hohen CPU-Auslastung führen.
- CVE-2023-5517 — eine Anfrage an eine speziell gestaltete Reverse-Zone kann zu einem Absturz aufgrund der Auslösung einer Assert-Überprüfung führen. Das Problem tritt nur in Konfigurationen mit aktivierter Einstellung „nxdomain-redirect“ auf.
- CVE-2023-5679 — die rekursive Definition eines Hosts kann zu einem Absturz aufgrund der Auslösung einer Assert-Überprüfung auf Systemen mit aktivierter Unterstützung für DNS64 und „serve-stale“ (Einstellungen, stale-cache-enable und stale-answer-enable) führen.
- CVE-2023-6516 — speziell gestaltete rekursive Anfragen können zu einem Ausfall des verfügbaren Speichers des Prozesses führen.
Quelle: opennet.ru
