Neuer SAD-DNS-Angriff, um gefälschte Daten in den DNS-Cache einzufügen

Ein Forscherteam der University of California, Riverside, hat eine neue Variante des SAD-DNS-Angriffs (CVE-2021-20322) veröffentlicht, die trotz der im letzten Jahr hinzugefügten Schutzmaßnahmen zur Blockierung der Schwachstelle CVE-2020-25705 funktioniert. Die neue Methode ähnelt grundsätzlich der letztjährigen Schwachstelle und unterscheidet sich lediglich durch die Verwendung eines anderen Typs von ICMP-Paketen zur Überprüfung aktiver UDP-Ports. Der vorgeschlagene Angriff ermöglicht die Ersetzung fiktiver Daten im DNS-Server-Cache, die dazu verwendet werden können, die IP-Adresse einer beliebigen Domäne im Cache zu ersetzen und Anfragen an die Domäne an den Server des Angreifers umzuleiten.

Die vorgeschlagene Methode funktioniert aufgrund ihrer Verbindung zu den Besonderheiten des ICMP-Paketverarbeitungsmechanismus in Linux nur im Linux-Netzwerkstapel, der als Quelle für Datenlecks fungiert und die Bestimmung der UDP-Portnummer vereinfacht, die der Server zum Senden von Nachrichten verwendet externe Anfrage. Änderungen, die Informationslecks blockieren, wurden Ende August in den Linux-Kernel übernommen (der Fix war in Kernel 5.15 und September-Updates für die LTS-Zweige des Kernels enthalten). Die Lösung läuft darauf hinaus, auf die Verwendung des SipHash-Hashing-Algorithmus in Netzwerk-Caches anstelle von Jenkins Hash umzusteigen. Der Stand der Behebung der Schwachstelle in Distributionen kann auf diesen Seiten beurteilt werden: Debian, RHEL, Fedora, SUSE, Ubuntu.

Laut den Forschern, die das Problem identifiziert haben, sind etwa 38 % der offenen Resolver im Netzwerk anfällig, darunter beliebte DNS-Dienste wie OpenDNS und Quad9 (9.9.9.9). Was Serversoftware betrifft, kann ein Angriff durch die Verwendung von Paketen wie BIND, Unbound und dnsmasq auf einem Linux-Server durchgeführt werden. Das Problem tritt nicht auf DNS-Servern auf, die auf Windows- und BSD-Systemen ausgeführt werden. Um einen Angriff erfolgreich durchführen zu können, ist es notwendig, IP-Spoofing einzusetzen, d. h. Es ist erforderlich, dass der ISP des Angreifers keine Pakete mit einer gefälschten Quell-IP-Adresse blockiert.

Zur Erinnerung: Der SAD-DNS-Angriff umgeht die Schutzmaßnahmen, die DNS-Servern hinzugefügt wurden, um die klassische DNS-Cache-Poisoning-Methode zu blockieren, die 2008 von Dan Kaminsky vorgeschlagen wurde. Kaminskys Methode manipuliert die winzige Größe des DNS-Abfrage-ID-Felds, das nur 16 Bit beträgt. Um die richtige DNS-Transaktionskennung auszuwählen, die für das Spoofing von Hostnamen erforderlich ist, reicht es aus, etwa 7000 Anfragen zu senden und etwa 140 fiktive Antworten zu simulieren. Der Angriff läuft darauf hinaus, eine große Anzahl von Paketen mit einer fiktiven IP-Bindung und mit unterschiedlichen DNS-Transaktionskennungen an den DNS-Resolver zu senden. Um das Zwischenspeichern der ersten Antwort zu verhindern, enthält jede Dummy-Antwort einen leicht geänderten Domänennamen (1.example.com, 2.example.com, 3.example.com usw.).

Um sich vor dieser Art von Angriffen zu schützen, implementierten die Hersteller von DNS-Servern eine zufällige Verteilung der Anzahl der Quellnetzwerk-Ports, von denen Auflösungsanfragen gesendet werden, wodurch die unzureichend große Größe der Kennung ausgeglichen wurde. Nach der Implementierung des Schutzes für das Senden einer fiktiven Antwort war es zusätzlich zur Auswahl einer 16-Bit-Kennung erforderlich, einen von 64 Ports auszuwählen, wodurch sich die Anzahl der Auswahlmöglichkeiten auf 2^32 erhöhte.

Mit der SAD-DNS-Methode können Sie die Ermittlung der Netzwerk-Portnummer radikal vereinfachen und den Angriff auf die klassische Kaminsky-Methode reduzieren. Ein Angreifer kann den Zugriff auf ungenutzte und aktive UDP-Ports erkennen, indem er bei der Verarbeitung von ICMP-Antwortpaketen durchgesickerte Informationen über die Aktivität von Netzwerkports ausnutzt. Die Methode ermöglicht es uns, die Anzahl der Suchoptionen um 4 Größenordnungen zu reduzieren – 2^16+2^16 statt 2^32 (131_072 statt 4_294_967_296). Der Informationsverlust, mit dem Sie schnell aktive UDP-Ports ermitteln können, wird durch einen Fehler im Code für die Verarbeitung von ICMP-Paketen mit Fragmentierungsanforderungen (ICMP Fragmentation Needed Flag) oder Umleitung (ICMP Redirect Flag) verursacht. Durch das Senden solcher Pakete ändert sich der Zustand des Caches im Netzwerkstapel, sodass anhand der Antwort des Servers festgestellt werden kann, welcher UDP-Port aktiv ist und welcher nicht.

Angriffsszenario: Wenn ein DNS-Resolver versucht, einen Domänennamen aufzulösen, sendet er eine UDP-Anfrage an den DNS-Server, der die Domäne bedient. Während der Resolver auf eine Antwort wartet, kann ein Angreifer schnell die Quellportnummer ermitteln, die zum Senden der Anfrage verwendet wurde, und eine gefälschte Antwort darauf senden, indem er sich mithilfe von IP-Adress-Spoofing als der DNS-Server ausgibt, der die Domäne bedient. Der DNS-Resolver speichert die in der gefälschten Antwort gesendeten Daten zwischen und gibt für einige Zeit die vom Angreifer ersetzte IP-Adresse für alle anderen DNS-Anfragen für den Domänennamen zurück.

Source: opennet.ru

Kommentar hinzufügen