Nowa wersja ataku SAD DNS do wstrzykiwania fałszywych danych do pamięci podręcznej DNS

Grupa badawcza z Uniwersytetu Kalifornijskiego w Riverside opublikowała nową wersję ataku SAD DNS (CVE-2021-20322), działającego mimo zabezpieczeń wprowadzonych w zeszłym roku w celu zablokowania luk CVE-2020-25705. Nowa metoda jest w ogólnym zarysie 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 wprowadzenie fałszywych danych do pamięci podręcznej serwera DNS, co może być wykorzystane do podmiany w pamięci podręcznej adresu IP dowolnej domeny i przekierowania zapytań do domeny na serwer złośliwych znaczenia.

Proponowana metoda działa tylko w stosie sieciowym Linux z powodu powiązania z cechą działania mechanizmu przetwarzania pakietów ICMP w Linux, który jest źródłem wycieków danych, co ułatwia identyfikację numeru UDP portu, który został użyty serwerem do wysyłania zewnętrznego zapytania. Zmiany blokujące wyciek informacji zostały przyjęte do jądra Linux pod koniec sierpnia (poprawka trafiła do jądra 5.15 i wrześniowych aktualizacji gałęzi LTS jądra). Poprawka polega na przejściu na wykorzystanie w pamięciach podręcznych sieciowych algorytmu haszowania SipHash zamiast Jenkins Hash. Status usunięcia luk w dystrybucjach można ocenić na tych stronach: Debian, RHEL, Fedora, SUSE, Ubuntu.

Z danych przedstawionych przez badaczy wynika, że około 38% dostępnych w sieci otwartych resolverów jest podatnych na tę lukę, w tym popularne usługi DNS, takie jak OpenDNS i Quad9 (9.9.9.9). Jeśli chodzi o oprogramowanie serwerowe, to atak może być przeprowadzony na serwerze Linux z wykorzystaniem pakietów, takich jak BIND, Unbound i dnsmasq. Na serwerach DNS działających w systemach Windows i BSD problem się nie ujawnia. Aby skutecznie przeprowadzić atak, należy zastosować spoofing IP, co wymaga, aby dostawca dostępu atakującego nie blokował pakietów z fałszywym adresem IP.

Przypomnijmy, że atak SAD DNS umożliwia obejście zabezpieczeń wprowadzonych do serwerów DNS w celu zablokowania klasycznej metody ataku na pamięć podręczną DNS, zaproponowanej w 2008 roku przez Dana Kaminsky'ego. Metoda Kaminsky'ego manipuluje niewielkim rozmiarem pola z identyfikatorem zapytania DNS, wynoszącym zaledwie 16 bitów. Aby dobrać właściwy identyfikator transakcji DNS potrzebny do spoofingu nazwy hosta, wystarczy wysłać około 7000 zapytań i symulować około 140 tysięcy fikcyjnych odpowiedzi. Atak polega na wysyłaniu do resolvera DNS dużej liczby pakietów z fikcyjnym powiązaniem z IP oraz różnymi identyfikatorami transakcji DNS. Aby zapobiec buforowaniu pierwszej odpowiedzi, w każdej fikcyjnej odpowiedzi podawane jest nieco zmienione imię domeny (1.example.com, 2.example.com, 3.example.com itd.).

Aby chronić przed tego rodzaju atakiem, producenci serwerów DNS wprowadzili losowe przydzielanie numerów portów sieciowych, z których wysyłane są zapytania o rozwiązanie, co zrekompensowało zbyt mały rozmiar identyfikatora. Po wprowadzeniu zabezpieczenia, aby wysłać fikcyjną odpowiedź, oprócz dobrania 16-bitowego identyfikatora, konieczne stało się również dobranie jednego z 64 tysięcy portów, co zwiększyło liczbę możliwości dobrania do 2^32.

Metoda SAD DNS pozwala na radykalne uproszczenie określenia numeru portu sieciowego i sprowadzenie ataku do klasycznej metody Kaminsky'ego. Atakujący może zidentyfikować zapytania do nieużywanych i aktywnych portów UDP, wykorzystując wyciek informacji o aktywności portów sieciowych podczas przetwarzania odpowiednich pakietów ICMP. Metoda ta pozwala na skrócenie liczby wariantów do sprawdzenia o 4 rzędy wielkości — 2^16+2^16 zamiast 2^32 (131_072 zamiast 4_294_967_296). Wyciek informacji, który pozwala szybko określić aktywne porty UDP, wynika z niedoróbek w kodzie przetwarzania pakietów ICMP z zapytaniami o fragmentację (flaga ICMP Fragmentation Needed) lub przekierowanie (flaga ICMP Redirect). Wysyłanie takich pakietów zmienia stan pamięci podręcznej w stosie sieciowym, co pozwala na podstawie reakcji serwera określić, który z portów UDP jest aktywny, a który nie.

Scenariusz ataku: Gdy rozwiązywacz DNS próbuje ustalić nazwę domeny, wysyła zapytanie UDP do serwera DNS obsługującego domenę. W momencie, gdy rozwiązywacz oczekuje na odpowiedź, atakujący szybko może określić numer używanego portu źródłowego, a następnie wysłać fałszywą odpowiedź, podszywając się pod serwer DNS obsługujący domenę, korzystając z techniki spoofingu. adresy IPRozwiązywacz DNS umieści w pamięci podręcznej dane przekazane w fałszywej odpowiedzi, a przez jakiś czas dla wszystkich innych zapytań DNS dotyczących tej nazwy domeny będzie zwracał podstawiony przez atakującego adres IP.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster