0Pricing
Cryptology Academy · Урок

Понижение протокола HTTP и риски смешанного содержимого

Разберитесь, как злоумышленники используют откат к HTTP и почему смешанное содержимое нарушает гарантии безопасности

«Понижение протокола HTTP и риски смешанного содержимого» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Строгая транспортная безопасность HTTP

Заголовок HTTP Strict Transport Security (HSTS) instructs browsers to connect to a site only over HTTPS for a specified period. После его получения браузер отклоняет HTTP-соединения и автоматически заменяет URL-адреса http:// на https://.

Типичный заголовок HSTS: "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload". Значение max-age указывается в секундах (31536000 = 1 год). После сохранения в кэше браузер принудительно использует HTTPS в течение года без какого-либо участия сервера.

max-age и includeSubDomains в HSTS

Параметр max-age задаёт, как долго браузер должен принудительно использовать только HTTPS-соединения, в секундах. Для рабочих сайтов рекомендуется устанавливать значение не менее одного года (31536000).

Директива includeSubDomains распространяет действие HSTS на все поддомены. Это предотвращает атаки, при которых злоумышленник понижает соединение с поддоменом до HTTP и использует его для кражи файлов cookie, установленных без флага Secure в основном домене.

Список предварительной загрузки HSTS

Браузеры поставляются со встроенным списком доменов, для которых всегда используется только HTTPS, даже при самом первом посещении. Этот список поддерживается на сайте hstspreload.org и включает тысячи крупных сайтов.

Предварительная загрузка устраняет уязвимость первого посещения: без неё злоумышленник может перехватить пользователя до получения заголовка HSTS. Для сайтов из списка HTTPS используется уже с самого первого запроса, независимо от состояния кэша HSTS.

Атака с понижением SSL

Атака с понижением SSL, представленная Moxie Marlinspike на конференции Black Hat в 2009 году, — это атака MITM, понижающая HTTPS-соединения до HTTP. Злоумышленник перехватывает первоначальный HTTP-запрос пользователя, отправляет запросы HTTPS настоящему серверу от имени пользователя и пересылает содержимое пользователю по HTTP.

Жертва видит содержимое как обычно, но через HTTP. Любые введённые учётные данные попадают к злоумышленнику. До появления HSTS эта атака была очень эффективной, поскольку пользователи не замечали отсутствия значка замка.

HSTS предотвращает понижение SSL

HSTS предотвращает понижение SSL, поскольку браузер отказывается устанавливать HTTP-соединения с доменами, включёнными в HSTS. Даже если злоумышленник попытается предоставить страницу по HTTP, браузер просто откажется подключаться и покажет ошибку.

Браузер применяет HSTS до выполнения любого сетевого запроса, поэтому злоумышленник не может вмешаться. Единственная сохраняющаяся уязвимость — первое посещение до получения HSTS; предварительная загрузка устраняет и её.

Активное и пассивное смешанное содержимое

Смешанное содержимое возникает, когда страница HTTPS загружает ресурсы по HTTP. Пассивное смешанное содержимое включает изображения, аудио и видео, загруженные по HTTP. Оно не может напрямую изменить страницу, но может раскрывать информацию о пользователе через заголовки HTTP и обеспечивать отслеживание.

Активное смешанное содержимое включает скрипты, таблицы стилей, фреймы и XMLHttpRequests, загруженные по HTTP. Скрипт HTTP может полностью нарушить безопасность страницы HTTPS, поскольку получает полный доступ к DOM и может читать файлы cookie и данные форм.

Блокировка браузером скриптов смешанного содержимого

Современные браузеры по умолчанию блокируют активное смешанное содержимое (скрипты, таблицы стилей и фреймы по HTTP), если содержащая его страница использует HTTPS. В консоли появляется ошибка, а ресурс не загружается.

Начиная с Chrome 81 (2020 год) браузеры начали автоматически заменять HTTP на HTTPS для пассивного смешанного содержимого. Если версия по HTTPS существует, она загружается. Если нет, ресурс блокируется.

Смешанное содержимое в DevTools браузера

Консоль разработчика браузера показывает предупреждения и ошибки, связанные со смешанным содержимым. В Chrome откройте DevTools, перейдите на вкладку «Консоль» и установите фильтр «Смешанное содержимое». Для каждого заблокированного ресурса показывается небезопасный URL-адрес, который необходимо обновить.

Панель «Безопасность» в DevTools показывает подробный обзор безопасности: сведения о сертификате, информацию о соединении и список всех небезопасных ресурсов на странице.

Директива CSP upgrade-insecure-requests

Директива политики безопасности содержимого (CSP) "upgrade-insecure-requests" instructs browsers to automatically upgrade all HTTP requests from the page to HTTPS. Это позволяет обрабатывать устаревшее содержимое с жёстко заданными URL-адресами HTTP.

В отличие от блокировки смешанного содержимого, upgrade-insecure-requests сначала пытается загрузить версию по HTTPS. Директива полезна при переходе с HTTP на HTTPS, когда обновление всех встроенных URL-адресов в устаревшем содержимом было бы непрактичным.

Внедрение рекламы ISP в HTTP

Без HTTPS ISP могут внедрять содержимое в ответы HTTP. Несколько ISP были уличены во внедрении рекламы на веб-страницы, где её изначально не было, добавлении пикселей отслеживания или показе предупреждений, когда пользователи приближаются к ограничению объёма данных.

Такая форма внедрения содержимого невозможна на страницах HTTPS, поскольку ответ аутентифицирован и зашифрован. Любое изменение приведёт к сбою проверки MAC в TLS и, вместо передачи изменённого содержимого, вызовет ошибку соединения.

Почему первое посещение по HTTP остаётся рискованным

Пока браузер не получит заголовок HSTS для домена, самое первое посещение по HTTP остаётся уязвимым. Злоумышленник может перехватить этот первоначальный запрос и выполнить понижение SSL, не вызвав предупреждений браузера.

Именно эта уязвимость, связанная с доверием при первом использовании, объясняет существование списка предварительной загрузки HSTS. Добавление сайта в список гарантирует, что браузеры будут использовать HTTPS для этого домена уже с самого первого запроса, полностью закрывая окно уязвимости первого посещения.

Тест: HSTS

Проверьте, насколько хорошо Вы понимаете принцип строгой транспортной безопасности HTTP.

Основные выводы: HSTS и смешанное содержимое

HSTS instructs browsers to enforce HTTPS-only connections for a domain for a specified duration. Список предварительной загрузки распространяет защиту на самые первые посещения, встраивая политики HSTS непосредственно в браузеры.

Понижение SSL (Moxie Marlinspike, 2009) заменяет HTTPS на HTTP; HSTS предотвращает эту атаку. Активное смешанное содержимое (скрипты HTTP на страницах HTTPS) блокируется браузерами. Директива CSP upgrade-insecure-requests автоматизирует переход с HTTP на HTTPS для устаревшего содержимого.

Часто задаваемые вопросы

Урок «Понижение протокола HTTP и риски смешанного содержимого» бесплатный?

Да — полный текст урока «Понижение протокола HTTP и риски смешанного содержимого» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Понижение протокола HTTP и риски смешанного содержимого»?

Разберитесь, как злоумышленники используют откат к HTTP и почему смешанное содержимое нарушает гарантии безопасности Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Понижение протокола HTTP и риски смешанного содержимого»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Значок замка: что он означает на самом деле
  2. Как сайты получают SSL-сертификаты
  3. Предупреждения о сертификатах TLS и дальнейшие действия
  4. Понижение протокола HTTP и риски смешанного содержимого
← Назад к Cryptology Academy