Firefox представил новую архитектуру безопасности браузера с изоляцией сайтов
Firefox, как и любой другой браузер, может загружать код с ненадёжных и потенциально опасных сайтов, а потом запускать его на компьютере. Чтобы защитить пользователей и вывести безопасность работы в интернете на новый уровень, команда Mozilla решила переработать свой браузер.
Новая архитектура безопасности с изоляцией сайтов расширяет существующие механизмы защиты за счёт разделения контента. Теперь под каждый сайт будет создаваться свой отдельный процесс операционной системы. Это позволит полностью изолировать код с разных сайтов. В частности, обеспечить защиту от вредоносных ресурсов, пытающихся получить доступ к конфиденциальной информации с других площадок, которые посещают пользователи. Например, введённые пароли, номера кредитных карт и т.п.
Для защиты данных Firefox применяет различные механизмы безопасности, например, Правило ограничения домена (Same Origin Policy – «Принцип одинакового источника»), которое ограничивает взаимодействие информации, поступившей из разных источников. То есть предотвращает доступ злоумышленников к информации с других ресурсов, загружаемых в одном и том же приложении. Но этого недостаточно. Чтобы оградить пользователей от потенциальных угроз, следует полностью разделять пространство памяти, выделенное под разные сайты – новая архитектура Firefox обеспечивает эти гарантии безопасности.
Почему так важно разделение пространства памяти
В начале 2018 года специалисты, исследующие вопросы безопасности, обнаружили две основные уязвимости, известные как Meltdown (аппаратная уязвимость, которая использует ошибку реализации спекулятивного выполнения команд в некоторых процессорах Intel и ARM, из-за которой процессор игнорирует права доступа к страницам.) и Spectre (группа аппаратных уязвимостей большинства процессоров, позволяющая считывать данные через сторонний канал). Специалисты продемонстрировали, как ненадёжный сайт может дать злоумышленникам доступ к памяти процесса даже на таком высокоуровневом языке, как JavaScript (на котором работает почти каждый сайт).
Для защиты от уязвимостей были развёрнуты временные меры противодействия со стороны ОС, ЦП и основных веб-браузеров. Они быстро нейтрализовали атаки, однако привели к снижению производительности. Но это были именно временные заплатки.
Firefox решила коренным образом переделать архитектуру браузера, чтобы оградить пользователей от текущих и будущих версий подобных уязвимостей. На картинке ниже подробно рассматривается пример того, как злоумышленник может получить доступ к личным данным при атаке, подобной Spectre.
С новой архитектурой Firefox загружает каждый сайт в своём собственном процессе, тем самым изолируя их память друг от друга. Например, у пользователя открыто два сайта: www.my-bank.com и www.attacker.com. Как показано на картинке выше, со старой архитектурой браузера контент с обоих сайтов может быть загружен в один и тот же процесс операционной системы. Если с сайта www.attacker.com произойдёт атака наподобие Spectre, злоумышленники смогут запрашивать и получать доступ к данным с сайта my-bank.com.
Несмотря на существующие меры безопасности, единственный способ обеспечить полноценную защиту памяти – это изоляция контента с разных сайтов и использование разделения процессов операционной системы.
Как работала прежняя архитектура браузера
После запуска Firefox создавал один привилегированный процесс (или родительский процесс), который затем запускал и координировал действия нескольких веб-процессов. Родительский процесс является наиболее привилегированным, поскольку ему разрешено выполнять любое действие, которое может выполнить конечный пользователь.
Эта многопроцессная архитектура позволяла Firefox разделять более сложный или менее надёжный код на отдельные процессы, большинство из которых имеют ограниченный доступ к ресурсам операционной системы или пользовательским файлам. Как следствие, менее привилегированный код должен был запросить более привилегированный код для выполнения операций, которые он сам выполнить не мог.
Например, сайту необходимо запросить у родительского процесса разрешение на сохранение загруженного файла, потому что у него нет разрешения делать запись на диск компьютера. Иными словами, если злоумышленнику удается скомпрометировать процесс, запускаемый сайтом, ему придётся дополнительно обойти один из API-интерфейсов, чтобы убедить родительский процесс действовать от его имени.
Родительский процесс Firefox (по состоянию на апрель 2021 г.) запускал фиксированное количество процессов: восемь процессов веб-контента, до двух дополнительных полу-привилегированных процессов веб-контента и четыре служебных процесса для веб-расширений, операций с графическим процессором, работы в сети и декодирования медиа.
Хотя разделение контента на восемь процессов уже обеспечивало неплохую защиту, оно не соответствовало стандартам безопасности Mozilla, поскольку позволяло двум совершенно разным сайтам работать в одном и том же процессе операционной системы и, следовательно, совместно использовать память процесса. Чтобы избежать этого, Firefox переходит на архитектуру изоляции сайтов, которая загружает каждый сайт в свой собственный процесс.

Что происходит на иллюстрации выше? Пользователь открывает в разных вкладках сайты: www.my-bank.com, www.getpocket.com, www.mozilla.org и www.attacker.com. Может так получиться, что my-bank.com и attacker.com будут обрабатываться одним и тем же процессом операционной системы, то есть они будут совместно использовать память этого процесса. Соответственно, злоумышленник может выполнить атаку типа Spectre для доступа к данным с my-bank.com.

Ещё один важный момент: без изоляции сайтов браузер будет загружать все всплывающие страницы в том же процессе, что и сайт верхнего уровня. Субфреймы (реклама, встроенное видео), тоже обрабатываются в общем процессе. В результате вредоносный сайт может получить доступ к субфреймам и конфиденциальной информации, которую вы там вводите. Новая архитектура безопасности изоляции сайтов в Firefox не позволит совершать такие атаки.
Как работает новая архитектура Firefox с изоляцией сайтов
При добавлении Изоляции сайтов в Firefox для настольных ПК каждый уникальный сайт будет создавать свой отдельный процесс. Например, если вы загрузите «https://mozilla.org» и «http://getpocket.com», браузер с изоляцией сайтов разделит их по двум разным процессам операционной системы, поскольку они не являются одним и тем же сайтом.
Точно так же https://getpocket.com (обратите внимание, здесь именно протокол https, а не http, как в предыдущем абзаце) также будет загружен в отдельный процесс. То есть все три сайта будут загружаться в разных процессах.
Более того, существуют некоторые домены, такие как «.github.io» или «.blogspot.com», которые являются слишком общими, чтобы можно было идентифицировать их, как «сайт». Поэтому для работы с ними Firefox будет использовать поддерживаемый сообществом список доменов верхнего уровня (eTLD), чтобы помочь различать сайты.
Поскольку «github.io» указан как eTLD, «a.github.io» и «b.github.io» будут загружаться в разных процессах. Если вернуться к примерам, о которых говорилось ранее, сайты www.my-bank.com и www.attacker.com не считаются одним сайтом, поэтому они будут изолированы друг от друга в отдельных процессах. Память также будет изолирована, что гарантирует безопасность данных.

Также и с субфреймами. Субфреймы, которые не являются «тем же сайтом», что и страница верхнего уровня, будут загружаться в другом процессе.

На картинке выше видно, что страница www.attacker.com пытается встроить субфреймом страницу с www.my-bank.com, но она будет загружена в другом процессе. Это гарантирует, что память процессов также будет изолирована.
Дополнительные преимущества изоляции сайтов
Новая архитектура не только делает Firefox безопаснее. Она даёт и другие преимущества:
- Благодаря тому, что больше страниц помещается в отдельные процессы, выполнение тяжёлых вычислений на одной странице не замедлят работу других страниц.
- Использование большего количества процессов для загрузки веб-сайтов позволяет распределять нагрузку по многим ядрам ЦП и более эффективно использовать «железо».
- Из-за дробления сайтов, сбой одного субфрейма или вкладки не повлияет на сайты, загруженные в других процессах, то есть повышается стабильность приложения.
Планы и перспективы
В настоящее время Firefox тестирует изоляцию сайтов в ночных и бета-версиях браузеров для ПК. Однако воспользоваться улучшенной архитектурой безопасности можно уже сейчас. Для этого нужно загрузить браузер Nightly или Beta отсюда и выполнить следующие действия:
Чтобы включить изоляцию сайта в Firefox Nightly:
- Перейдите к about: Preferences#Experiment
- Установите флажок «Fission (Site Isolation)».
- Перезагрузите Firefox.
Чтобы включить изоляцию сайта в Firefox Beta:
- Перейдите к about: config.
- Установите для параметра `fission.autostart` значение `true `.
- Перезагрузите Firefox.
Теперь можно осваивать обновлённый браузер и радоваться усиленной безопасности.
Что ещё интересного есть в блоге Cloud4Y
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.
Смерть Mozilla — это смерть открытого Интернета
Если взглянуть на доли рынка популярных настольных браузеров, то выяснится, что Chrome принадлежит почти 70%. То есть 70% Интернета контролируется только одной компанией, причем компанией, которая зарабатывает деньги, продавая данные пользователей и размещая рекламу. Более того, у Google есть огромная мотивация установить как можно больший контроль над веб-стандартами, чтобы увеличить свою прибыль.

Доминирование Google на рынке браузеров приобретает еще более устрашающий вид, если включить в список остальные браузеры на базе Chromium, такие как Edge и Opera. В этом случае доля всех Chromium-браузеров составит более 80%. Ситуация становится еще серьезнее, если включить в рассмотрение мобильные браузеры. Safari, не основанный на Хроме, действительно составляет 25% доли рынка мобильных устройств, если учитывать iPhone. Но если убрать iPhone и оставить только устройства на базе Android, то Firefox (и его форки) — это единственный мобильный браузер, не использующий движок Chromium, и его доля составляет всего 0,5%.
Это создает определенные проблемы, поскольку сейчас только одна компания, Google, контролирует все веб-стандарты, используемые в браузерах. Выходит, что Firefox — это последний шанс использовать браузер, не основанный на Chromium, если у вас нет устройства от Apple. С учетом всего вышесказанного, Firefox оказался в затруднительном положении и с каждым днем продолжает терять позиции.

Одна из главных проблем заключается в том, что Firefox рекламирует себя как уважающий частную жизнь и не собирающий данные пользователей браузер. Однако на самом деле Firefox из коробки кое-что собирает. Например, Firefox запрашивает у Google данные о безопасности сайтов, которые вы собираетесь посетить. Кроме того, Google пингуется, чтобы получить данные о вашем местоположении, что особенно глупо, учитывая, что у Mozilla есть своя собственная служба геолокации, которая при этом не используется в Firefox. Кроме того, Firefox имеет функцию Firefox Suggest, которая предлагает сайты, пока Вы набираете текст в строке URL. При этом каждое ваше нажатие отправляется на сервера Mozilla.

Еще одна свежая проблема заключается в том, что большинство людей не очень тепло приняли последний редизайн Firefox. А если быть до конца честным, он настолько не понравился пользователям, что о нем стали делать мемы. А новый логотип в феврале 2021 года породил целую волну шуток о чересчур минималистичных логотипах современных компаний. Однако, если сравнить долю рынка Firefox в июне 2021 года, когда был добавлен новый дизайн, с февральской, то окажется, что снизилась она всего на 0.2%, а всего через месяц после смены дизайна она даже подросла на 0.5%. Поэтому говорить, что редизайн сильно повлиял на долю Firefox, было бы слишком смело. Очередная переоцененная глупость, которая, в сущности, проблемой не является.
Тем не менее, существует еще одна проблема, на сей раз реальная, и о ней необходимо сказать пару слов — это основной источник финансирования Mozilla. Основным инвестором является ее главный конкурент. Несмотря на сокращения персонала в 2020 году, доходы Mozilla и не думают сокращаться. Загвоздка лишь в том, что 86% доходов Mozilla поступает от Google. Google — поисковая система по умолчанию, а это в корне неправильно, учитывая, что Google выступает против всего, за что ратует Mozilla. Второй источник дохода Firefox — Pocket, отвратительная гадость, которая забивает новые вкладки браузера «рекомендуемыми» статьями, которые никому не интересны, а также спонсируемыми постами. Эту опцию легко отключить, но сам факт ее наличия делает Firefox больше похожим на какой-нибудь Microsoft Edge, чем на браузер с открытым исходным кодом.

Возвращаясь к партнерству с Google, скажу, что это плохо, потому что это противоречит принципам Mozilla. Именно эти принципы заставляют меня надеяться на то, что Mozilla вернет себе долю рынка конца 2000-х годов. Эти принципы перечислены в Манифесте Mozilla, и в основном они касаются того, что Интернет сейчас является неотъемлемой частью жизни, поэтому он должен оставаться открытым и доступным для всех, а такие вещи, как безопасность и конфиденциальность, являются неотъемлемым правом каждого пользователя и не должны рассматриваться как опциональные.
Даже несмотря на все проблемы, которые мы только что озвучили, Firefox все еще является отличным браузером и имеет множество классных возможностей. Например, у Firefox есть множество инструментов для обеспечения конфиденциальности, которые по умолчанию просто отключены. В настоящее время в нем есть функция Total Cookie Protection, которая изолирует куки на определенных сайтах, чтобы предотвратить межсайтовое отслеживание. Кроме того, несмотря на то, что он собирает незначительное количество данных о вас, он не продает их. Все собранные браузером данные используются исключительно для улучшения Firefox (за исключением запросов к Google). У Firefox также есть множество современных фич, которые автоматически ставят его на голову выше любого другого браузера. Например, это синхронизация учетных записей, режим picture-in-picture, Pocket для сохранения статей, (если вас, конечно, не смущает реклама на домашней странице), некоторые инструменты кастомизации и даже встроенная утилита для создания скриншотов, которая может делать снимки целых веб-страниц — я очень часто использую ее для создания видео.
Еще одна замечательная функция, о которой почти никто не говорит, — Multi-Account Containers. Это расширение, которое можно загрузить из репозитория Mozilla, позволяет изолировать веб-сайты. Очень удобно, если на каком-то сайте у вас сразу несколько учетных записей. Кроме того, с помощью этих контейнеров можно изолировать отдельные задачи. Например, некоторые коммерческие сайты меняют цены на основании ваших данных, чтобы увеличить свою прибыль. Чтобы предотвратить отслеживание такого рода, достаточно использовать контейнер для изолированного просмотра. В Firefox даже есть специализированное расширение для контейнеризации Facebook, чтобы помешать ему собирать любые данные, связанные с вами, за пределами контейнера.

Но главное преимущество Firefox сейчас заключается в том, что пользуясь им, вы препятствуете монополии Google в Интернете. Да, с учетом мизерной доли рынка, занимаемой Firefox, есть риск, что разработчики поленились оптимизировать сайты для вашего браузера. Именно поэтому даже широко распространенные веб-приложения, например, Microsoft Teams, имеют ряд проблем с производительностью, присущих только Firefox.
Если вам интересны подробности, я рекомендую посмотреть видео о том, почему Firefox важен для будущего открытого Интернета. Содержание видео в двух словах: Google имеет слишком большой контроль над Интернетом, Safari застопорился и заглох, превратившись в новый Internet Explorer, а Firefox — это наша последняя надежда.
Несмотря на то, что многие интернет-пользователи уже давно предрекают браузеру смерть, а компании — упадок, Mozilla продолжает реализовывать весьма интересные инициативы, например:
- Firefox Relay — расширение, позволяющее скрыть свой настоящий адрес электронной почты при заполнении форм в интернете. Сервис генерирует почтовый псевдоним, при этом все входящие переадресовываются на ваш настоящий e-mail. Firefox Relay позволяет сохранить настоящий адрес в тайне от «хищных» сайтов и защититься от последствий утечки или продажи данных пользователей.
- Total Cookie Protection — функция блокировки отслеживания активности. Вот что пишут в блоге Mozilla:
«Сегодня мы представляем в Firefox новую функцию Total Cookie Protection, которая будет работать в режиме защиты от отслеживания «Строгая». За счет Total Cookie Protection каждый веб-сайт получает свое собственное «хранилище cookie», что позволяет предотвратить межсайтовое отслеживание активности на основе cookie.
Кроме того, Total Cookie Protection предусматривает ограниченное исключение для межсайтовых файлов cookie, когда они необходимы для целей, не связанных с отслеживанием, например для авторизации на сайте.»
«Комбинация Supercookie Protection, представленной в прошлом месяце, и Total Cookie Protection обеспечивает полное разделение файлов cookie и других данных сайта между веб-сайтами в Firefox.»
Что еще почитать по теме:
- Почему Firefox заслуживает своей печальной участи
- Как поживает Firefox?
