Grupa badawcza z kilku amerykańskich uniwersytetów oraz firm Cloudflare i Microsoft opracowała nową technikę ataku na protokół RADIUS, stosowany przez operatorów telekomunikacyjnych, usługi chmurowe oraz dostawców VPN do uwierzytelniania, autoryzacji i rozliczania użytkowników. Atak, który otrzymał kodową nazwę Blast-RADIUS, umożliwia podrabianie odpowiedzi serwera RADIUS w trakcie uwierzytelniania oraz nawiązywanie połączenia użytkownika bez znajomości hasła dostępu.
Aby wykorzystać lukę (CVE-2024-3596), atakujący musi mieć możliwość przechwytywania ruchu tranzytowego i przeprowadzenia pełnoprawnego ataku MITM, który pozwala na odczytywanie, przechwytywanie, blokowanie i modyfikowanie przychodzących i wychodzących pakietów UDP, przesyłanych przez punkty dostępu w celu zgłaszania uwierzytelnienia klientów (Access-Request) oraz zwracanych przez serwer RADIUS z potwierdzeniem lub odrzuceniem operacji. Po przechwyceniu żądania uwierzytelnienia, atakujący może wysłać fałszywą odpowiedź, wskazując w niej inny typ wyniku (na przykład Access-Accept zamiast Access-Reject). Atakujący ma także potencjalną możliwość przechwycenia odpowiedzi Access-Challenge, stosowanej w uwierzytelnianiu dwuskładnikowym, i zastąpienia jej odpowiedzią Access-Accept, aby ominąć dodatkowy etap weryfikacji.

Atak opiera się na tym, że protokół RADIUS korzysta z transportu UDP i weryfikuje integralność przesyłanych wiadomości za pomocą algorytmu MD5. Do weryfikacji wiadomości przesyłanych między serwerem dostępem a serwerem RADIUS stosowany jest sekret, znany zarówno punktowi dostępu, jak i serwerowi RADIUS, ale nieznany atakującemu. W odpowiedzi na żądanie uwierzytelnienia, serwer RADIUS generuje hasz MD5, dzięki któremu serwer dostępu może potwierdzić, że wiadomość została wysłana przez autoryzowany serwer. Hasz MD5 obejmuje losową wartość przesłaną w żądaniu, identyfikator żądania, zwracane atrybuty oraz sekret.
Atakujący w trakcie ataku MITM może przechwycić identyfikator przesłany w żądaniu oraz losową wartość, a także być w stanie przewidzieć kod operacji, rozmiar i atrybuty. Zadanie sprowadza się do utworzenia poprawnego hasha kontrolnego, który odpowiadałby zmienionemu wyniku operacji i przeszedłby weryfikację przez haszowanie z użyciem sekretnych kluczy. Algorytm MD5 nie jest odporny na kolizje, co pozwala atakującemu, manipulując nieistotnym wypełnieniem, dobrać zestaw danych o pożądanych parametrach, którego hash MD5 będzie odpowiadał hashowi MD5 pierwotnej odpowiedzi, a następnie wysłać fałszywą odpowiedź z kodem pomyślnego przejścia autoryzacji (Access-Accept) zamiast wiadomości o błędzie.

Ponieważ podczas przetwarzania pakietów z żądaniem dostępu (Access-Request) nie stosuje się uwierzytelniania ani sprawdzania integralności, w trakcie ataku w pierwotnym żądaniu od serwera dostępu atakujący może dodać dodatkowy atrybut „Proxy-State”, który zostanie odzwierciedlony przez serwer RADIUS w jego odpowiedzi. Zawartość „Proxy-State” jest dobierana z uwagi na kolizję, tak aby wartość kontrolnego hasha MD5 w rzeczywistych i fałszywych odpowiedziach była identyczna. W trakcie eksperymentu poszukiwanie kolizji w MD5 w celu przeprowadzenia ataku zajęło 3-6 minut, co jest dłuższe niż typowy czas oczekiwania wynoszący 30-60 sekund, ale czas poszukiwania kolizji można skrócić, korzystając z mocniejszego sprzętu, zaangażowania GPU oraz równoległego wykonywania operacji.
Jako główną miarę ochrony przed luką bezpieczeństwa proponuje się wdrożenie protokołu EAP (Extensible Authentication Protocol, RFC 3579), w którym do dodatkowej weryfikacji wiadomości używa się atrybutu Message-Authenticator. W celu ochrony przed atakiem można również zastosować rozszerzenia protokołu (RadSec), które obejmują przesyłanie wiadomości RADIUS przez zaszyfrowane kanały oparte na TLS lub DTLS. Ponadto można zminimalizować wartości czasów oczekiwania na odpowiedzi oraz zablokować odpowiedzi z atrybutem Proxy-State. Przesyłanie wiadomości RADIUS ponad TCP utrudnia atak, ale nie wyklucza jego przeprowadzenia.
Kod do przeprowadzenia ataku nie został jeszcze opublikowany w otwartym dostępie, ale projektowi hashclash przekazano zmiany, które poprawiają dobór kolizji w MD5, uwzględniając specyfikę ataku. W serwerze RADIUS FreeRADIUS problem został rozwiązany w wydaniach 3.0.27 i 3.2.5 poprzez włączenie obowiązkowego zastosowania atrybutu Message-Authenticator oraz dodanie ustawienia ograniczającego przetwarzanie pakietów z atrybutem Proxy-State.
Źródło: opennet.ru
