Web Proxy Autodiscovery Protocol
Web Proxy Autodiscovery Protocol (WPAD) — протокол автоматического обнаружения настроек веб-прокси, позволяющий клиентским устройствам получать URL файла конфигурации прокси-сервера. Поиск файла конфигурации осуществляется через механизмы DHCP и DNS. После успешного обнаружения и загрузки файл выполняется клиентом для определения параметров использования прокси-сервера.
История
Протокол WPAD определяет только механизм поиска местоположения этого файла, однако наиболее часто используемый формат конфигурационного файла — это формат автоматической настройки прокси, изначально разработанный компанией Netscape в 1996 году для Netscape Navigator 2.0[1]. Протокол WPAD был разработан консорциумом компаний, включая Inktomi Corp., Microsoft, RealNetworks Inc. и Sun Microsystems, Inc. (ныне Oracle Corp.). WPAD описан в интернет-драфте, срок действия которого истёк в декабре 1999 года[2]. Несмотря на это, WPAD поддерживается всеми популярными браузерами[3][4]. WPAD впервые был реализован в Internet Explorer 5.0.
Контекст
Чтобы все браузеры в организации могли использовать одну и ту же политику прокси без необходимости ручной настройки на каждом клиенте, существует два основных подхода:
- Стандарт PAC (Proxy auto-config): создание и публикация центрального файла конфигурации прокси. Подробности описаны в отдельной статье.
- Стандарт Web Proxy Autodiscovery Protocol (WPAD): обеспечивает автоматический поиск файла всеми браузерами организации без ручной настройки. Это и есть предмет данной статьи.
Стандарт WPAD определяет два альтернативных метода, которыми системный администратор может объявлять расположение конфигурационного файла прокси: с помощью протокола DHCP или системы DNS.
Перед загрузкой первой страницы веб-браузер, реализующий этот метод, отправляет локальному DHCP-серверу запрос DHCPINFORM и использует полученный в ответе URL в качестве местоположения WPAD. Если сервер DHCP не предоставляет необходимую информацию, используется DNS. Если, например, сетевое имя компьютера пользователя — «pc.department.branch.example.com», браузер поочерёдно попытается загрузить следующие адреса (пока не найдёт файл конфигурации внутри домена клиента).
Кроме того, в Windows, если запрос по DNS не дал результата, используется LLMNR (Link-Local Multicast Name Resolution).
Также в Windows при неудаче DNS-запроса применяется NetBIOS[5][6].
Особенности
DHCP имеет больший приоритет, чем DNS: если по DHCP получен URL WPAD, дополнительный поиск через DNS не проводится. Однако это работает только для DHCPv4 — в DHCPv6 опция WPAD не предусмотрена.
Следует отметить, что Firefox не поддерживает использование DHCP, только DNS. То же актуально для Chrome на не-Windows-платформах и версий Chrome до 13[3][4].
При формировании запроса DNS первая часть доменного имени (имя хоста клиента) удаляется и заменяется на «wpad.». Далее по иерархии части домена отбрасываются, пока не будет найден WPAD PAC-файл или не покинут пределы организации.
Браузер делает предположение о границе организации. Это обычно работает для доменов вида «company.com» или «university.edu», но не для «company.co.uk».
В поисках по DNS имя файла всегда «wpad.dat», а для DHCP может быть указан любой URL. Традиционно файлы PAC часто называют «proxy.pac» (их игнорируют при поиске по WPAD через DNS).
MIME-тип файла конфигурации должен быть «application/x-ns-proxy-autoconfig».
В данный момент браузеры Internet Explorer и Konqueror поддерживают оба метода — DHCP и DNS; DNS-метод доступен во всех основных браузерах[7][8].
Требования
Для работы WPAD должны быть выполнены следующие условия:
- Для метода с использованием только DNS, должна быть DNS-запись хоста WPAD.
- Узел по адресу WPAD должен уметь отдавать веб-страницу.
- В обоих случаях веб-сервер должен отдавать файл WPAD с MIME-типом «application/x-ns-proxy-autoconfig».
- Если используется DNS-метод, файл с именем «wpad.dat» нужно разместить в корневом каталоге HTTP-сервера WPAD.
- PAC-файлы подробно рассматриваются в статье «Proxy auto-config».
- Следует проявлять осторожность при настройке WPAD на виртуальном хостинге. При автоматическом обнаружении прокси, WinHTTP и WinINET в Internet Explorer 6 и ранее отправят заголовок
Host: <IP-адрес>, а IE7+ и Firefox —Host: wpad. Поэтому лучше размещать wpad.dat на хосте по умолчанию. - В спецификации Internet Explorer 6.0.2900.2180.xpsp_sp2_rtm требуется файл «wpad.da» вместо «wpad.dat».
- Если в качестве DNS-сервера используется Windows Server 2003 (или новее), потребуется отключить Глобальный список блокировки DNS-запросов или отредактировать реестр[9][10].
Безопасность
Несмотря на то что протокол WPAD значительно упрощает настройку прокси в организациях, его нужно применять с осторожностью: ошибки конфигурации могут позволить злоумышленникам изменить прокси-сервер браузера пользователя.
- Атакующий, находящийся в сети, может поднять собственный DHCP-сервер и передавать адрес вредоносного PAC-файла.
- Некоторые интернет-провайдеры внедряют перехват DNS-запросов, что может нарушить работу WPAD, направляя запросы пользователей на неподходящий сервер.
- Фильтрация или утечка WPAD-запросов может привести к коллизиям внутренних доменов и глобальных доменных имён: если злоумышленник зарегистрирует такой домен и настроит прокси, он может производить атаки типа «Man-in-the-middle» (MitM) через интернет[11].
С помощью файла WPAD злоумышленник может направить браузеры пользователей на собственный прокси-сервер и перехватывать/модифицировать весь www-трафик. Хоть в Windows в 2005 году и был выпущен патч, он касался только зоны .com[12]. На конференции Kiwicon было показано, что во всём остальном мире эта уязвимость сохранялась: для тестовых целей был зарегистрирован домен в Новой Зеландии, на который приходило множество WPAD-запросов в секунду со всей страны. Многие домены wpad.tld (например, COM, NET, ORG, US) теперь направлены на localhost на клиенте для защиты, но некоторые домены до сих пор зарегистрированы на частных лиц.
Поэтому администратору необходимо обеспечить доверие к любым DHCP-серверам в организации и контролировать все возможные wpad-домены организации. В противном случае, если соответствующий wpad-домен не настроен, пользователь может обратиться к внешнему сайту, оказавшемуся очередным по иерархии, и использовать его как конфигурацию. В результате любой, кто зарегистрирует соответствующий поддомен wpad в определённом домене верхнего уровня, получит возможность организовать атаку «человек посередине» на значительную часть интернет-трафика этого домена, подставив свой прокси[13].
Помимо этого, WPAD-файл представляет собой JavaScript[14] и выполняется во всех браузерах вне зависимости от того, включён ли JavaScript для просмотра веб-страниц.
Примечания
Литература
- Jonathan de Boyne Pollard. Automatic proxy HTTP server configuration in web browsers (англ.). Frequently Given Answers (2004). Архивировано 3 июня 2013 года.
- Jim Groves. DNS Server Global Query Block List (англ.) (ноябрь 2007).
- PAC File & WPAD Examples (англ.) (18 сентября 2015).