# WebRTC DoS {{#include ../../banners/hacktricks-training.md}} **Ten problem został opisany w tym wpisie na blogu:** [**https://www.rtcsec.com/article/novel-dos-vulnerability-affecting-webrtc-media-servers/**](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 1. **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. 2. **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. 3. **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. {{#include ../../banners/hacktricks-training.md}}