Knowledge Base

Safe Active Host Header Check

Safe Active Host Header Check

Категория: Web App Security · Риск: medium

Safe Active Host Header Check

Что проверяет NodeRoute

NodeRoute отправляет один безопасный `GET` с неожиданным `Host`:

Host: noderoute-host-probe.invalid

Сканер смотрит, отражается ли этот host в `Location` или HTML, и не вызывает ли он 5xx.

Почему это важно

Некоторые приложения используют `request.host` для генерации абсолютных ссылок, reset-ссылок, canonical URL или cache keys.

Если чужой Host отражается, возможны:

Хороший результат

Плохой результат

Быстрая проверка

curl -skI -H "Host: attacker.invalid" https://example.com/
curl -sk  -H "Host: attacker.invalid" https://example.com/ | head

Хороший результат:

HTTP/2 421

или:

HTTP/1.1 400 Bad Request

Плохой результат:

HTTP/1.1 200 OK
...
обычный HTML сайта или API-ответ

Как исправить

Nginx

server {
    listen 80 default_server;
    return 421;
}

server {
    listen 443 ssl default_server;
    server_name _;
    ssl_reject_handshake on;
}

server {
    server_name example.com www.example.com;
    proxy_set_header Host $host;
}

В приложении задайте `BASE_URL` явно, а не из `request.host`.

Если `ssl_reject_handshake` недоступен, используйте отдельный default-server с валидным сертификатом и `return 421;`.

Связанные проверки