Luki w zabezpieczeniach KeyTrap i NSEC3 wpływające na większość implementacji DNSSEC

W różnych implementacjach protokołu DNSSEC zidentyfikowano dwie luki w zabezpieczeniach, wpływające na programy rozpoznawania nazw BIND, PowerDNS, dnsmasq, Knot Resolver i Unbound DNS. Luki mogą powodować odmowę usługi dla programów rozpoznawania nazw DNS, które przeprowadzają weryfikację DNSSEC, powodując duże obciążenie procesora, które zakłóca przetwarzanie innych żądań. Aby przeprowadzić atak, wystarczy wysłać żądanie do resolwera DNS za pomocą DNSSEC, co prowadzi do wywołania do specjalnie zaprojektowanej strefy DNS na serwerze atakującego.

Zidentyfikowane problemy:

  • CVE-2023-50387 (nazwa kodowa KeyTrap) – podczas uzyskiwania dostępu do specjalnie zaprojektowanych stref DNS prowadzi do odmowy usługi ze względu na znaczne obciążenie procesora i długi czas wykonywania kontroli DNSSEC. Aby przeprowadzić atak, konieczne jest umieszczenie strefy domeny ze szkodliwymi ustawieniami na serwerze DNS kontrolowanym przez atakującego, a także zapewnienie dostępu do tej strefy rekursywnemu serwerowi DNS, którego atakujący szuka odmowy usługi .

    Złośliwe ustawienia obejmują użycie kombinacji sprzecznych kluczy, rekordów RRSET i podpisów cyfrowych dla strefy. Próba weryfikacji przy użyciu tych kluczy skutkuje czasochłonnymi, wymagającymi dużych zasobów operacjami, które mogą całkowicie obciążyć procesor i zablokować przetwarzanie innych żądań (przykładowo twierdzi się, że w ataku na BIND udało się zatrzymać przetwarzanie inne wnioski o 16 godzin).

  • CVE-2023-50868 (nazwa kodowa NSEC3) to odmowa usługi wynikająca z wykonywania znacznych obliczeń podczas obliczania skrótów w rekordach NSEC3 (Next Secure v3) podczas przetwarzania specjalnie spreparowanych odpowiedzi DNSSEC. Metoda ataku jest podobna do pierwszej luki, z tą różnicą, że na serwerze DNS atakującego tworzony jest specjalnie zaprojektowany zestaw rekordów NSEC3 RRSET.

Należy zauważyć, że pojawienie się wyżej wymienionych podatności spowodowane jest definicją w specyfikacji DNSSEC zdolności serwera DNS do wysyłania wszystkich dostępnych kluczy kryptograficznych, natomiast programy rozpoznawania nazw muszą przetwarzać wszelkie otrzymane klucze do czasu pomyślnego zakończenia sprawdzania lub wszystkich otrzymane klucze zostały zweryfikowane.

Aby blokować luki, programy rozpoznawania nazw ograniczają maksymalną liczbę kluczy DNSSEC zaangażowanych w proces łańcucha zaufania i maksymalną liczbę obliczeń skrótu dla NSEC3, a także ograniczają ponowne próby weryfikacji dla każdego RRSET (kombinacja klucza i podpisu) i każdej odpowiedzi serwera.

Luki zostały naprawione w aktualizacjach Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) i BIND (9.16.48, 9.18.24) .9.19.21 i XNUMX). Stan podatności w dystrybucjach można ocenić na stronach: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.

Serwer DNS BIND w wersjach 9.16.48, 9.18.24 i 9.19.21 dodatkowo naprawił kilka kolejnych luk:

  • CVE-2023-4408 Analizowanie dużych wiadomości DNS może powodować duże obciążenie procesora.
  • CVE-2023-5517 — Żądanie specjalnie spreparowanej strefy odwrotnej może prowadzić do awarii z powodu uruchomienia sprawdzania potwierdzenia. Problem pojawia się tylko w konfiguracjach z włączoną opcją „nxdomain-redirect”.
  • CVE-2023-5679 – Rekurencyjne wykrywanie hosta może prowadzić do awarii z powodu uruchomienia sprawdzania potwierdzenia w systemach z obsługą DNS64 i włączoną funkcją „serve-stale” (ustawienia, włączenie nieaktualnej pamięci podręcznej i włączenie nieaktualnej odpowiedzi).
  • CVE-2023-6516 Specjalnie spreparowane zapytania rekurencyjne mogą spowodować wyczerpanie dostępnej pamięci przez proces.

Źródło: opennet.ru

Dodaj komentarz