Известный прокси подтверждает путь метаданных, но присланный ему адрес всё ещё сверяют с разрешёнными адресами приложения.
Проверка заголовка Host
Определение
Проверка заголовка Host — сверка указанного в запросе имени и порта с явным списком адресов, которые обслуживает приложение.
Также ищут: Host header validation · проверка Host · authority allowlist · X-Forwarded-Host validation
Зачем это знать
Непроверенный Host может попасть в ссылку сброса пароля, перенаправление, ключ кеша или выбор виртуального узла.
Карта понятия
Что подтверждено
Host передаёт имя и порт целевого URI и помогает серверу различать ресурсы для нескольких имён, поэтому значение влияет на маршрутизацию.
Граница применимости: Заголовок Host и адрес цели в HTTP.
Критичные абсолютные URL и маршруты строят из настроенного основного адреса или разрешённого Host, а не из произвольного Host или X-Forwarded-Host.
Граница применимости: Защита от подмены заголовка Host.
Ссылка восстановления доступа должна вести на адрес, разрешённый приложением. Если её абсолютный адрес собрать из непроверенного Host или пересланного аналога, внешняя строка запроса начнёт определять назначение чувствительной ссылки.
Граница применимости: Защитное правило построения ссылок по OWASP; не требование HTTP выдавать ссылки восстановления.
Проверка имени сервиса в сертификате отвечает на вопрос, к какому TLS-узлу подключился клиент. Она сама не проверяет, допустим ли адрес, который пришёл в конкретном HTTP-запросе к приложению.
Граница применимости: Разделение проверки имени транспортного сервиса и разрешённого адреса HTTP.
Когда приложение использует пересланное имя узла, требуются две проверки по выбранной архитектуре: происхождение значения от доверенного прокси и принадлежность имени к обслуживаемым адресам. Одна проверка не выполняет другую.
Граница применимости: Защитная политика для приложений, использующих пересланные метаданные адреса.
Не путать
Имя в проверке TLS относится к ожидаемому узлу соединения; Host — к адресу запрошенного ресурса HTTP.
Что проверить
- Задайте обслуживаемые имена и порты приложения.
- Стройте чувствительные ссылки из проверенного основного адреса.
- Проверьте отдельное поведение неизвестного Host.
- Учтите пересланное имя только от доверенного пути.
- Не заменяйте список разрешённых адресов фактом успешного TLS.
- Проверьте перенаправления и ссылки восстановления доступа.
- Повторите проверку при изменении числа прокси и правил маршрутизации.
Первоисточники
- Testing for Host Header Injection
Описывает атаки через Host/X-Forwarded-Host и рекомендует не доверять им при построении reset links, redirects и routing decisions.
- Service Identity in TLS
Задаёт construction и verification reference identifiers для TLS services; server identity находится в subjectAltName, не в commonName.
Утверждения: 04
- Forwarded HTTP Extension
Определяет Forwarded для client, proxy, host и protocol metadata и предупреждает о privacy и integrity рисках.
Утверждения: 05