Nowy atak SAD DNS polegający na umieszczeniu fałszywych danych w pamięci podręcznej DNS

Zespół badaczy z Uniwersytetu Kalifornijskiego w Riverside opublikował nowy wariant ataku SAD DNS (CVE-2021-20322), który działa pomimo dodanych w zeszłym roku zabezpieczeń blokujących lukę CVE-2020-25705. Nowa metoda jest zasadniczo podobna do ubiegłorocznej luki i różni się jedynie wykorzystaniem innego rodzaju pakietów ICMP do sprawdzania aktywnych portów UDP. Proponowany atak pozwala na podstawienie fikcyjnych danych do pamięci podręcznej serwera DNS, co może zostać wykorzystane do zastąpienia adresu IP dowolnej domeny w pamięci podręcznej i przekierowania żądań domeny do serwera atakującego.

Proponowana metoda działa tylko w stosie sieciowym systemu Linux ze względu na powiązanie ze specyfiką mechanizmu przetwarzania pakietów ICMP w systemie Linux, który działa jako źródło wycieku danych, co ułatwia określenie numeru portu UDP używanego przez serwer do wysyłania żądanie zewnętrzne. Zmiany blokujące wyciek informacji zostały zaadoptowane do jądra Linuksa pod koniec sierpnia (poprawka została uwzględniona w jądrze 5.15 i wrześniowych aktualizacjach gałęzi LTS jądra). Poprawka sprowadza się do przejścia na używanie algorytmu haszującego SipHash w pamięciach sieciowych zamiast Jenkins Hash. Stan usunięcia luki w dystrybucjach można ocenić na stronach: Debian, RHEL, Fedora, SUSE, Ubuntu.

Według badaczy, którzy zidentyfikowali problem, około 38% otwartych programów rozpoznawania nazw w sieci jest podatnych na ataki, w tym popularne usługi DNS, takie jak OpenDNS i Quad9 (9.9.9.9). Jeśli chodzi o oprogramowanie serwerowe, atak można przeprowadzić przy użyciu pakietów takich jak BIND, Unbound i dnsmasq na serwerze Linux. Problem nie pojawia się na serwerach DNS działających w systemach Windows i BSD. Aby skutecznie przeprowadzić atak, konieczne jest zastosowanie IP Spoofing, czyli tzw. wymagane jest, aby dostawca usług internetowych atakującego nie blokował pakietów zawierających fałszywy źródłowy adres IP.

Przypominamy, że atak SAD DNS omija zabezpieczenia dodane do serwerów DNS w celu zablokowania klasycznej metody zatruwania pamięci podręcznej DNS zaproponowanej w 2008 roku przez Dana Kaminsky'ego. Metoda Kamińskiego manipuluje niewielkim rozmiarem pola identyfikatora zapytania DNS, który wynosi tylko 16 bitów. Aby wybrać poprawny identyfikator transakcji DNS niezbędny do fałszowania nazw hostów, wystarczy wysłać około 7000 140 żądań i zasymulować około 1 tysięcy fikcyjnych odpowiedzi. Atak polega na wysłaniu dużej liczby pakietów z fikcyjnym powiązaniem IP i różnymi identyfikatorami transakcji DNS do mechanizmu rozpoznawania nazw DNS. Aby zapobiec buforowaniu pierwszej odpowiedzi, każda fikcyjna odpowiedź zawiera nieco zmodyfikowaną nazwę domeny (2.example.com, 3.example.com, XNUMX.example.com itd.).

Aby zabezpieczyć się przed tego typu atakiem, producenci serwerów DNS wdrożyli losowy rozkład numerów źródłowych portów sieciowych, z których wysyłane są żądania rozdzielczości, co kompensowało niewystarczająco duży rozmiar identyfikatora. Po wdrożeniu zabezpieczenia przed wysyłaniem fikcyjnej odpowiedzi, oprócz wybrania 16-bitowego identyfikatora, konieczne stało się wybranie jednego z 64 tysięcy portów, co zwiększyło liczbę opcji wyboru do 2^32.

Metoda SAD DNS pozwala radykalnie uprościć wyznaczanie numeru portu sieciowego i ograniczyć atak do klasycznej metody Kamińskiego. Osoba atakująca może wykryć dostęp do nieużywanych i aktywnych portów UDP, wykorzystując wyciekające informacje o aktywności portów sieciowych podczas przetwarzania pakietów odpowiedzi ICMP. Metoda pozwala zmniejszyć liczbę opcji wyszukiwania o 4 rzędy wielkości - 2^16+2^16 zamiast 2^32 (131_072 zamiast 4_294_967_296). Wyciek informacji pozwalający na szybkie określenie aktywnych portów UDP jest spowodowany luką w kodzie przetwarzającym pakiety ICMP z żądaniami fragmentacji (flaga ICMP Fragmentation Needed) lub przekierowaniem (flaga ICMP Redirect). Wysłanie takich pakietów zmienia stan pamięci podręcznej w stosie sieciowym, co pozwala na podstawie odpowiedzi serwera określić, który port UDP jest aktywny, a który nie.

Scenariusz ataku: gdy moduł rozpoznawania nazw DNS próbuje rozpoznać nazwę domeny, wysyła zapytanie UDP do serwera DNS obsługującego domenę. Podczas gdy moduł rozpoznawania nazw czeka na odpowiedź, osoba atakująca może szybko ustalić numer portu źródłowego, który został użyty do wysłania żądania i wysłać na nie fałszywą odpowiedź, podszywając się pod serwer DNS obsługujący domenę, stosując fałszowanie adresu IP. Mechanizm rozpoznawania nazw DNS będzie buforował dane przesłane w fałszywej odpowiedzi i przez pewien czas będzie zwracał adres IP podstawiony przez atakującego w przypadku wszystkich innych żądań DNS dotyczących nazwy domeny.

Źródło: opennet.ru

Dodaj komentarz