28.11.2021

Компания Mozilla представила режим строгой изоляции сайтов для Firefox

Компания Mozilla объявила о начале массового тестирования в ночных сборках и бета-выпусках Firefox режима строгой изоляции сайтов, развивавшегося в рамках проекта Fission. Режим расширяет применение многопроцессной архитектуры — вместо фиксированного пула процессов, в отдельный процесс выносится обработка каждого сайта. Управление включением режима Fission осуществляется через переменную «fission.autostart=true» в about:config или на странице about:preferences#experimental.

Напомним, что применяемая в Firefox до настоящего времени многопроцессная модель подразумевала запуск пула процессов-обработчиков: по умолчанию 8 основных процессов для обработки контента, 2 дополнительных непривилегированных процесса для web-контента и 4 вспомогательных процесса для дополнений, взаимодействия с GPU, сетевых операций и декодирования мультимедийных данных. Распределение вкладок по процессам производилось произвольно, например, в одном процессе могла оказаться обработка сайта банка и не заслуживающего доверия сомнительного ресурса.

Новый режим выносит в отдельный процесс обработку каждого сайта с разделением не по вкладкам, а по доменам, что позволяет дополнительно изолировать содержимое внешних скриптов и iframe-блоков. Для раздельной обработки поддоменов типовых сервисов, связанных с разными сайтами, применяется разделение не по формальным, а по фактическим (eTLD) доменам верхнего уровня, отмеченным в списке Public Suffix (т.е. сайты «a.github.io» и «b.github.io» будут вынесены в разные процессы).

Режим строгой изоляции позволяет защититься от атак по сторонним каналам, например, связанными с уязвимостями класса Spectre, приводящими к утечке информации внутри одного процесса. Утечка обрабатываемых в том же процессе конфиденциальных данных возможна при выполнении не заслуживающего доверия внешнего кода в движках с JIT и в виртуальных машинах. В контексте web-браузеров вредоносный JavaScript-код с одного сайта может получить сведения о паролях, ключах доступа и номерах кредитных карт, введённых на другом сайте, обрабатываемом в том же процессе. Первоначально для защиты от атак по сторонним каналам разработчики браузеров ограничили точность таймера и блокировали доступ к API SharedArrayBuffer, но данные меры лишь усложняли и замедляли проведение атаки (например, недавно был предложен метод извлечения данных из кэша CPU, работающий вообще без JavaScript).

Из других достоинств режима строгой изоляции упоминается снижение фрагментации памяти, более эффективное возвращение памяти операционной системе, минимизация влияния сборки мусора и интенсивных вычислений на страницы в других процессах, повышение эффективности распределения нагрузки на разные ядра CPU, повышение стабильности (крах процесса, обрабатывающего iframe, не потянет за собой основной сайт и другие вкладки).

Среди известных проблем, возникающих при использовании Fission, отмечается заметное увеличение потребления памяти, соединений X11 и файловых дескриптров при открытии большого числа вкладок, а также нарушение работы некоторых дополнений, пропадание содержимого iframe при печати и вызове функции записи скриншота, снижение эффективности кэширования документов с iframe, потеря содержимого заполненных, но не отправленных форм при восстановлении сеанса после краха.

Источник.