Host Header Injection: защита ссылок сброса пароля и proxy-заголовков
Почему нельзя строить доверенные ссылки из произвольного Host или X-Forwarded-Host и как настроить допустимые домены приложения.
Коротко о главном
- Чем опасно
- Отправка ссылки восстановления на посторонний домен.
- С чего начать защиту
- Используйте настроенный публичный origin для чувствительных ссылок.
- Как подтвердить
- Нужны ручной аудит и проверка реализации. Отсутствие находок во внешнем скане не подтверждает безопасность.
В этой статье
- Продукт
- Веб-приложения
- Оценка риска
- Уровень зависит от конфигурации
Как проверить и что учитывать
Нужна ручная проверка
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Не делайте вывод о наличии уязвимости только по одному внешнему признаку: подтвердите результат в настройках и версии компонента.
Что нужно для подтверждения
На тестовом контуре с почтовым перехватчиком проверьте допустимые и неизвестные хосты. Письма должны содержать только настроенный домен; альтернативные заголовки не должны изменять доверенный origin.
Ограничения вывода
- Внешний ответ не раскрывает все роли, обработчики и настройки внутренних компонентов.
- Используйте только свои системы или письменное разрешение владельца; нагрузочные проверки согласуйте отдельно.
Что это за уязвимость
Host описывает адрес обращения, но не является доверенной настройкой приложения. Если из него строится ссылка для письма или решение безопасности, недоверенный домен может попасть в чувствительный сценарий.
Когда возникает риск
Проверьте генерацию абсолютных URL и доверие forwarded-заголовкам. Proxy должен перезаписывать клиентские значения, а приложение — доверять только известной цепочке посредников.
Возможные последствия
Почему нельзя строить доверенные ссылки из произвольного Host или X-Forwarded-Host и как настроить допустимые домены приложения.
- Отправка ссылки восстановления на посторонний домен.
- Ошибки маршрутизации или общего кэша.
Как защитить приложение
Исправляйте причину в обработчике, а не только внешний симптом.
- Используйте настроенный публичный origin для чувствительных ссылок.
- Разрешайте только известные хосты и отклоняйте остальные на входе.
- Настройте доверенные proxy и исключите произвольные forwarded-заголовки клиента.
Как безопасно проверить исправление
На тестовом контуре с почтовым перехватчиком проверьте допустимые и неизвестные хосты. Письма должны содержать только настроенный домен; альтернативные заголовки не должны изменять доверенный origin.
Оценка риска и границы сканирования
Средний уровень — ориентировочная редакционная оценка, не CVSS подтверждённой находки. Для конкретной системы приоритет зависит от доступных данных, полномочий и компенсирующих мер; последствия могут быть значительно серьёзнее.
Отсутствие находки во внешнем скане не доказывает безопасность реализации. Проверяйте сценарии после входа, альтернативные маршруты и внутренние сервисы.
Как проходит проверка
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Автоматический результат показывает внешний признак риска и требует проверки специалистом с учётом конкретной конфигурации.
Проверить другие внешние рискиЧто делать после обнаружения
- Зафиксируйте затронутый сценарий и сохраните журналы без токенов и персональных данных.
- Ограничьте проблемный обработчик, оцените доступные данные и назначьте владельца исправления.
- Устраните первопричину и добавьте регрессионную проверку на тестовых данных.
Частые вопросы
Что означает риск «Host Header Injection»?
Почему нельзя строить доверенные ссылки из произвольного Host или X-Forwarded-Host и как настроить допустимые домены приложения.
Можно ли подтвердить проблему только внешней проверкой?
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Итог нужно сопоставить с конфигурацией, версиями и правами доступа на вашем сайте.
Что сделать в первую очередь?
Используйте настроенный публичный origin для чувствительных ссылок.