Почему google.com не устанавливает директиву includeSubDomains в заголовке ответа HSTS?

Почему google.com не устанавливает директиву includeSubDomains в заголовке ответа HTTP-строгой безопасности транспорта?

Заголовок резонанса HSTS на google.com выглядит примерно так:

Strict-Transport-Security:max-age=86400

Почему нет

Strict-Transport-Security: max-age=86400; includeSubDomains

Второй должен быть более безопасным с моей стороны, верно ??


person allencharp    schedule 30.01.2018    source источник


Ответы (2)


Это статично

Используя Google Chrome, вы можете переходить chrome://net-internals/#hsts и запрашивать разные домены. Ввод google.com и щелчок по запросу вернет список результатов.

В этом списке результатов вы можете видеть, что static_sts_include_subdomains истинно, а dynamic_sts_include_subdomains ложно. Это лучше, чем динамическая установка, которая уязвима для атаки, когда в самый первый раз, когда браузер запрашивает домен с http:// (не https://), злоумышленник перехватывает соединение. Чтобы преодолеть эту слабость, у нас есть статический режим, который позволяет жестко кодировать записи HSTS непосредственно в исходный код браузера.

Надеюсь это поможет

person Horkrine    schedule 30.01.2018
comment
Спасибо за ваш ответ, HSTS также поддерживает директиву предварительной загрузки, устраняет ли это слабость? не уверены в статическом режиме, который вы упомянули? есть ли ссылка, которую я мог бы прочитать ...? еще раз спасибо ! - person allencharp; 30.01.2018
comment
Флаг preload указывает на согласие владельца сайта на предварительную загрузку своего домена. Владельцу сайта все равно нужно пойти и добавить домен в список. Google также выполняет переадресацию при первом подключении. Дополнительное перенаправление требуется для того, чтобы любой браузер, поддерживающий HSTS, записывал запись HSTS для домена верхнего уровня, а не только для субдомена. - person Horkrine; 30.01.2018
comment
Если вы хотите узнать больше о это, но это в целом HSTS. - person Horkrine; 30.01.2018
comment
в чем разница dynamic_sts_include_subdomains и static_sts_include_subdomains .. спасибо за вашу помощь! - person allencharp; 30.01.2018
comment
Динамический означает, что браузеру было дано указание включить HSTS с помощью заголовка ответа HTTP (обслуживаемого через TLS). Статический режим позволяет жестко кодировать записи HSTS непосредственно в исходный код браузера (как указано в ответе). - person Horkrine; 30.01.2018

Да, использовать includeSubDomains безопаснее.

Например, злоумышленник может настроить и использовать поддомен (например, hacked.google.com) и получить к нему доступ через HTTP и использовать его для доступа или переопределения файлов cookie, установленных в домене верхнего уровня (google.com), даже если этот домен верхнего уровня является защищен HSTS. Конечно, если вы используете атрибут Secure в своих файлах cookie, это может не быть проблемой, но это всего лишь один пример того, почему использовать includeSubDomains.

Вы не можете установить атрибут includeSubDomains, если все поддомены не доступны по HTTPS (очевидно). Так что, если бы у Google был blog.google.com и он все еще не обновил его до HTTPS, это могло бы объяснить, почему они не будут использовать includeSubDomains в домене верхнего уровня.

Однако, как справедливо указывает @Horkine, Google предварительно загружает свои домены в код браузера Chrome (и этот список предварительной загрузки также используется другими браузерами), поэтому этот HTTP-заголовок не используется в современных браузерах.

Weirldy есть некоторые несоответствия между предварительно загруженной версией и версией HTTP-заголовков HTTP. Честно говоря, это очень странно. Между прочим, эти несоответствия также нарушают их собственные правила предварительной загрузки.

www.google.com

  • Предварительно загруженная версия для www.google.com имеет атрибут includeSubDomains.
  • Версия HTTP-заголовка Strict-Transport-Security не имеет атрибута includeSubDomains, но не имеет атрибута preload.

google.com

  • Предварительно загруженная версия для google.com имеет атрибут includeSubDomains
  • HTTP-заголовок Strict-Transport-Security не публикуется.

Почему эти несоответствия? Остается только догадываться:

  • Может быть, они так и не добрались до обновления своего HTTP-заголовка после завершения обновления всех своих сайтов?

  • Или это может быть связано с тем, что некоторые приложения обнаруживают браузер для старых браузеров (которые не включают код предварительной загрузки, но понимают заголовок HSTS) и перенаправляют старые браузеры на http://old.google.com по какой-то причине?

  • Или это может быть регионально?

Все это на самом деле предположение, поскольку только Google может ответить, и я не знаю никакой документации о том, что они используют на своем собственном сайте и почему.

Но, да, отвечая на последний вопрос, безопаснее включить includeSubDomains (если возможно), и еще безопаснее предварительная загрузка (хотя и не без рисков, если вы не на 100% уверены, что используете только HTTPS).

person Barry Pollard    schedule 30.01.2018