Co lista kandydatów WebRTC ujawnia o Twoim VPN
Kandydat hosta, refleksyjny serwera lub przekaźnika mówi, skąd pochodzi adres. Tylko wybrana para ICE mówi, którą ścieżkę naprawdę wykorzystały media.
Gdy strona testowa WebRTC wypisze 172.20.4.15, dowiedziała się, że w tej sieci istnieje lokalny interfejs. To prawdziwe ujawnienie i nie jest to ten sam wniosek co „media wyszły przez wyjście VPN”. Wykrywanie kandydatów i trasowanie pakietów to osobne mechanizmy, a większość raportów o wyciekach scala je w jeden wyrok. Który z nich widzisz, decyduje o naprawie.
Zbieranie odbywa się, zanim cokolwiek zostanie wysłane
Przeglądarka wylicza lokalne interfejsy, wysyła żądanie powiązania do serwera STUN i prosi serwer TURN o przydział, a następnie zapisuje wyniki w opisie sesji jako wiersze kandydatów. Wszystko to kończy się bez połączenia, bez mediów i bez drugiej strony. Lista kandydatów jest więc zapisem wykrywania, a nie transmisji.
Nowoczesne przeglądarki mogą zastąpić dosłowny adres kandydata hosta nazwą mDNS .local, więc strona nie może odczytać prywatnego IP. Sieć lokalna nadal widzi zapytania multicastowe, które rozwiązują tę nazwę, czyli adres jest ukrywany przed aplikacją, a nie usuwany z sieci.
Kolejność też ma znaczenie: nowe wczytanie strony zbiera nowy zestaw, z innym przydziałem TURN i być może innym mapowaniem refleksyjnym. Dwa różne przebiegi nie muszą oznaczać dwóch różnych konfiguracji.
Trzy typy kandydatów, trzy rodzaje dowodów
Każdy wiersz pochodzi z innego obserwacji. Każdy typ odpowiada na inne pytanie, a tabela rozdziela je według tego, co mogą i czego nie mogą ustalić.
| Candidate | Derived from | What it establishes | What it cannot establish |
|---|---|---|---|
| Host | An interface on the device | A local address exists in that network | That the peer can reach it |
| Server-reflexive | A STUN binding response | How a NAT mapped this source | Which exit the media will use |
| Peer-reflexive | A connectivity check that arrived | An address seen by the far side | That it was ever advertised |
| Relay | A TURN allocation | The relay server accepted the session | That the relay carries the call |
Kandydat przekaźnika bywa mylony z adresem internetowym użytkownika. Należy do serwera TURN, a jego obecność pokazuje, że przekaźnik był dostępny, a nie że przeglądarka go wybrała. To samo pomylenie działa w drugą stronę przy kandydatach hosta, gdzie nazwa mDNS ukrywa adres przed stroną, podczas gdy sieć nadal przenosi zapytania. Przeczytaj typ, zanim przeczytasz wartość.
Wybrana para odpowiada na pytanie o trasowanie
ICE łączy każdego kandydata lokalnego z każdym zdalnym, wykonuje testy łączności na każdej parze i nominuje zwycięzcę. Ta nominowana para, widoczna w diagnostyce samej przeglądarki, przenosi media. Wszystko inne na liście to możliwość, która przegrała.
Zwycięzca mówi ci o kształcie ścieżki. Przekaźnik do przekaźnika idzie przez serwer TURN, para hostów zostaje w sieci lokalnej, a para refleksyjna serwera idzie prosto przez NAT. To fakt, którego potrzebuje kontrola VPN, i jest to inny fakt niż lista adresów. Dwa połączenia z identycznymi listami kandydatów mogą wybrać różne pary.
Niewybrani kandydaci zostali mimo to zebrani, a zbieranie to ruch sieciowy opuszczający maszynę. Połączenie, które ostatecznie użyło przekaźnika, nie oznacza, że nic nie ujawniono podczas budowania listy.
Kontrole odpowiadają celom, a nie ocenie wycieku
Specyfikacja WebRTC dotycząca obsługi IP opisuje kilka polityk: używanie tylko interfejsu przenoszącego trasę domyślną, używanie wszystkich interfejsów oraz wyłączanie UDP bez pośrednika, tak aby ruch musiał przechodzić przez przekaźnik lub pośrednika. Każda wymienia łączność i opóźnienie na inny rodzaj ekspozycji. Którą przeglądarka implementuje i pod jaką nazwą, zależy od platformy i wersji.
Wybierz politykę według celu. Ukrywanie adresów lokalnych przed stroną to jeden cel; zapobieganie bezpośredniemu ruchowi równorzędnemu to drugi; trzymanie każdego pakietu w tunelu to trzeci. Pierwszy dotyczy głównie tego, czego dowiaduje się aplikacja, drugi tego, która ścieżka jest dozwolona, a trzeci musi być egzekwowany także na granicy platformy lub VPN.
Niezależnie od wybranej kontroli sprawdź obie połowy: uruchom test zbierania i zapisz typy kandydatów, a następnie zbadaj wybraną parę podczas prawdziwej sesji. Czysta lista adresów z bezpośrednią ścieżką mediów to nadal ścieżka, której nie chciałeś.