WebRTC DoS
Reading time: 3 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Ten problem został opisany w tym wpisie na blogu: https://www.rtcsec.com/article/novel-dos-vulnerability-affecting-webrtc-media-servers/
Opisana podatność w serwerach mediów WebRTC wynika z warunków wyścigu podczas inicjalizacji sesji medialnych, szczególnie pomiędzy weryfikacją zgody na media ICE a inicjacją ruchu DTLS. Oto szczegółowy opis:
Pochodzenie podatności
- Alokacja portów UDP: Gdy użytkownik inicjuje połączenie WebRTC, serwer mediów alokuje porty UDP do obsługi strumieni mediów, a adres IP i port są komunikowane za pomocą sygnalizacji.
- Procesy ICE i STUN: Przeglądarka użytkownika używa ICE do weryfikacji zgody na media, wykorzystując STUN do określenia ścieżki połączenia do serwera mediów.
- Sesja DTLS: Po pomyślnej weryfikacji STUN rozpoczyna się sesja DTLS w celu ustanowienia kluczy głównych SRTP, przechodząc do SRTP dla strumienia mediów.
Mechanizm eksploatacji
- Eksploatacja warunku wyścigu: Napastnik może wykorzystać warunek wyścigu, wysyłając wiadomość DTLS ClientHello przed legalnym użytkownikiem, potencjalnie używając nieprawidłowego zestawu szyfrów, takiego jak
TLS_NULL_WITH_NULL_NULL
. Powoduje to błąd DTLS na serwerze, uniemożliwiając ustanowienie sesji SRTP.
Proces ataku
- Skanowanie portów: Napastnik musi zgadnąć, które porty UDP obsługują przychodzące sesje medialne, wysyłając wiadomości ClientHello z zestawem szyfrów null do tych portów, aby wywołać podatność.
- Diagram ataku: Sekwencja obejmuje wiele wiadomości ClientHello wysyłanych przez napastnika do serwera, przeplatanych z legalną sygnalizacją i wiadomościami DTLS, co prowadzi do niepowodzenia w uzgadnianiu z powodu błędnego zestawu szyfrów.
Testowanie i łagodzenie
- Bezpieczne testowanie: Używając narzędzi takich jak Scapy, napastnicy odtwarzają wiadomości DTLS ClientHello, celując w konkretne porty mediów. Do etycznego testowania wprowadzono modyfikacje w Chromium (np.
JsepTransport::AddRemoteCandidates
), aby bezpiecznie naśladować zachowanie ofiary. - Środki łagodzące: Rozwiązania obejmują odrzucanie pakietów z niezweryfikowanych adresów, co zostało wdrożone w nowszych wersjach bibliotek, takich jak libnice. Główne rozwiązanie podkreśla zaufanie do procesu weryfikacji ICE i przetwarzanie tylko pakietów z zweryfikowanymi kombinacjami IP i portów.
Scenariusze niepodatne
- Konfiguracje serwera DTLS: Przypadki, w których przeglądarka działa jako serwer DTLS lub gdy serwer mediów nie używa portów ephemerowych do sesji medialnych, nie są podatne na tę podatność.
Wnioski
Ta podatność podkreśla delikatną równowagę w procesach inicjalizacji sesji medialnych oraz potrzebę precyzyjnego timingu i mechanizmów weryfikacji, aby zapobiec eksploatacji. Programiści są zachęcani do wdrażania zalecanych poprawek bezpieczeństwa i zapewnienia solidnych procesów weryfikacji, aby złagodzić takie podatności.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.