Web Proxy Auto-Discovery Protocol

Web Proxy Auto-Discovery Protocol (WPAD) – protokół umożliwiający komputerom klienckim automatyczne odnalezienie konfiguracji serwera proxy, z którego mają korzystać przy połączeniach z internetem. Jego celem jest uniknięcie ręcznego konfigurowania ustawień proxy na każdej stacji roboczej z osobna, co ma znaczenie zwłaszcza w dużych sieciach firmowych.

WPAD nigdy nie uzyskał statusu RFC – jedyną uzgodnioną definicją pozostaje szkic internetowy z 1999 roku, który wygasł w grudniu tego samego roku. Mimo to protokół jest obsługiwany przez wszystkie popularne przeglądarki i systemy operacyjne, a w systemach Windows jest domyślnie włączony. Z korzystaniem z niego wiąże się szereg zagrożeń, opisywanych zbiorczo jako BadWPAD.

Specyfikacja

Protokół opisali w 1999 roku Paul Gauthier, Josh Cohen, Martin Dunsmuir i Charles E. Perkins w szkicu internetowym draft-ietf-wrec-wpad-01, przygotowanym w ramach prac IETF. Dokument wygasł w grudniu 1999 roku i nie został przekształcony w standard.

Zgodnie z założeniami szkicu zadaniem WPAD nie jest wskazanie klientowi samego serwera proxy, lecz jedynie adresu pliku konfiguracyjnego (configuration URL, CURL), z którego klient pobierze właściwe ustawienia. Szkic zakłada też, że różni klienci pytający o ten sam adres mogą otrzymać różne pliki konfiguracyjne – w zależności od nagłówka User-Agent, adresu IP czy podsieci.

Wykrywanie serwera

Szkic przewiduje trzy mechanizmy odnalezienia adresu pliku konfiguracyjnego, stosowane kolejno, aż któryś zakończy się powodzeniem.

DHCP

Serwer DHCP może przekazać adres pliku konfiguracyjnego jako wartość opcji 252. Odbywa się to zwykle w momencie dołączania komputera do sieci. Opcja 252 nie znajduje się przy tym na liście prawidłowych opcji DHCP określonych w RFC 2132.

SLP

Protokół Service Location Protocol, zdefiniowany w 1999 roku w RFC 2608, pozwala aplikacjom odnajdywać usługi sieciowe za pomocą zapytań rozgłoszeniowych. Odpowiedź dla usługi WPAD ma postać schematu service:wpad: z adresem pliku konfiguracyjnego.

DNS

W wariancie DNS klient wyznacza nazwę swojej sieci, usuwając nazwę własnego komputera z pełnej nazwy domenowej, i wysyła zapytanie o rekord SRV dotyczący usługi WPAD. Jeżeli nie otrzyma odpowiedzi, powtarza próbę dla rekordów TXT, a następnie dla rekordu A, dopisując do nazwy sieci przedrostek wpad. Gdy i to zawiedzie, usuwa skrajnie lewy człon nazwy i powtarza cały proces – aż do osiągnięcia domeny najwyższego poziomu. Mechanizm ten określa się jako DNS devolution.

Po odnalezieniu nazwy serwera adres pliku konfiguracyjnego jest budowany według schematu http://nazwa:80/wpad.dat.

Plik konfiguracyjny PAC

Plik pobierany przez klienta, nazywany plikiem PAC (proxy auto-config), jest skryptem w języku JavaScript. Powinien zawierać funkcję FindProxyForURL, która dla każdego żądanego adresu wskazuje, czy i przez które proxy należy nawiązać połączenie. Zbiór instrukcji dopuszczonych w takim pliku jest ograniczony – należą do niego m.in. dnsDomainIs i shExpMatch.

W praktyce podczas sprawdzania poprawności pliku wykonywany jest cały zawarty w nim kod JavaScript, a nie wyłącznie funkcja FindProxyForURL.

Implementacje

Choć definicja protokołu wygasła w 1999 roku, WPAD jest obsługiwany przez systemy Windows i Linux oraz przez przeglądarki Edge, Internet Explorer, Firefox, Chrome i Safari, a także przez systemy Android, macOS i iOS.

Badanie opublikowane w 2023 roku w czasopiśmie ACM Computing Surveys wykazało istotne różnice między opisem ze szkicu a rzeczywistym działaniem implementacji:

W systemie Linux WPAD jest domyślnie wyłączony – system ignoruje wartość opcji 252 i nie poszukuje serwera WPAD, o ile korzystania z protokołu nie wymusi konfiguracja przeglądarki.

W 2009 roku Microsoft opublikował poradę bezpieczeństwa dotyczącą mechanizmu DNS devolution, ograniczającą jego stosowanie: nie jest on wykorzystywany, gdy sufiks pochodzi z listy przeszukiwania sufiksów DNS ani gdy nazwa domeny składa się tylko z dwóch członów.

Bezpieczeństwo

 Zobacz też: BadWPAD#Przypadek_polskich_domen_wpad.*.pl.

Mechanizmy, na których opiera się WPAD, nie przewidują żadnej formy uwierzytelnienia, co ułatwia podszycie się pod serwer WPAD. Wartości opcji DHCP mogą zostać sfałszowane, zapytania DNS wyciekają poza sieć organizacji, w sieci lokalnej można odpowiadać na zapytania rozgłoszeniowe, a w pliku PAC można umieścić złośliwy kod JavaScript.

Pierwszą podatność związaną z protokołem odnotowano już w 1999 roku (CVE-1999-0858), a do 2022 roku zarejestrowano 23 podatności CVE zawierające w opisie słowo wpad. Autorzy przeglądu w ACM Computing Surveys określają WPAD jako protokół powszechnie używany, podatny na wiele różnych ataków i trudny do naprawienia, i zalecają wyłączanie go wszędzie tam, gdzie serwery proxy nie są potrzebne. Zagadnienia te omawia szerzej hasło BadWPAD.

Przypisy

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Elyssa Boulila, Marc Dacier, WPAD: Waiting Patiently for an Announced Disaster, „ACM Computing Surveys”, 55 (10), 2023 [dostęp 2026-08-28] (ang.).
  2. 1 2 Paul Gauthier, Josh Cohen, Martin Dunsmuir, Charles E. Perkins, Web Proxy Auto-Discovery Protocol. Internet-Draft draft-ietf-wrec-wpad-01 [online], IETF, 1999 [dostęp 2026-08-28] (ang.).
  3. ↑ Microsoft Security Advisory 971888: Update for DNS Devolution [online], Microsoft, 2009 [dostęp 2026-08-28] (ang.).