Предотвращение атак по сторонним каналам (side-channel attacks)
Майк Уэст в блоге Chromium написал статью про средства предотвращения неявных утечек данных между сайтами в пределах одного процесса браузера — "Mitigating Side-Channel Attacks".
Браузеры полагаются на концепцию origin для предотвращения явной утечки данных между сайтами. Но существуют атаки по сторонним каналам, которые могут обойти ограничения браузера и прочитать любые пользовательские данные любых сайтов. Например, с помощью атаки Spectre можно было читать данные сайтов-соседей, которые попадали в один браузерный процесс. Для этого небезопасный сайт example.com
мог добавить на страницу ресурс другого сайта ( <img src="https://email.com/user_emails.json" />
) и получить доступ к его содержимому через единое адресное пространство памяти процесса. Чтобы предотвратить Spectre, браузеры по умолчанию отключили небезопасные API и включают их лишь только для тех сайтов, которые можно изолировать между разными процессами (Site Isolation).
Для предотвращения атак подобного типа можно использовать другие методы, даже если браузер не поддерживает Site Isolation:
— Ограничение ответов со стороны сервера на основе анализа HTTP-заголовков Sec-Fetch-*
,
— Ограничение возможности загружать ресурс как подресурс (то есть как в примере с img
выше) с помощью cross-origin-resource-policy
(CORP),
— Предотвращение загрузки документа в iframe'ах с помощью X-Frame-Options: SAMEORIGIN
и CSP-политик,
— Ограничение доступа к window opener'а с помощью Cross-Origin-Opener-Policy
(COOP),
— Предотвращение атак MIME-type confusion с помощью X-Content-Type-Options: nosniff
и установки корректных заголовков Content-Type
.
https://blog.chromium.org/2021/03/mitigating-side-channel-attacks.html