Улучшение sandbox-изоляции в Firefox
12 мая 2018 года
В недавно выпущенном релизе Firefox 60 была существенно улучшена (Архивная копия от 12 июня 2019 на Wayback Machine) sandbox-изоляция для платформы Linux, но к сожалению данное новшество не было отражено в официальном списке изменений. Процессы обработки контента, в которых осуществляется отрисовка web-страниц и выполнение JavaScript-кода, теперь лишены возможности прямой установки сетевых соединений и использования Unix-сокетов для обращения к локальным сервисам, таким как PulseAudio. Также теперь блокируются любые обращения к System V IPC (исключение сделано только для взаимодействия с fglrx и VirtualGL). В настройках about:config блокирование сетевого доступа ассоциировано с четвёртым уровнем изоляции в параметре security.sandbox.content.level.
Sandbox-изоляция значительно усложняет эксплуатацию уязвимостей в web-движке и вынуждает для проведения атаки на систему применять более сложные комбинации, охватывающие несколько уязвимостей в разных подсистемах. Блокирование сетевого доступа в процессах обработки контента позволяет исключить все нештатные пути отправки трафика, например, при включении работы через прокси в настройках доступ теперь возможен только через прокси, даже в случае эксплуатации уязвимости и попытки прямой установки соединения (особенно изменение актуально для защиты от атак по деанонимизации пользователей Tor Browser). Не менее важна блокировка доступа через unix-сокеты, так как эта возможность позволяет обратиться от имени пользователя к локальным сервисам, RPC-интерфейс которых допускает команды, в результате которых можно выполнить код в системе.
Блокировка реализована через запрет системных вызовов, таких как connect, и помещение процесса в отдельное пространство имён идентификаторов пользователя (user namespaces), по аналогии с тем как реализуется изоляция для контейнеров. Исключение сделано только для протокола X11, который применяется для отображения графики и приёма событий ввода (в будущих выпусках планируют реализовать защиту и для канала связи с X11).
Помимо ограничения сети в прошлых выпусках Firefox также была применена изоляция доступа к файловой системе (используется chroot в пустой каталог), ограничен доступ дочерних процессов Firefox к системным вызовам (используется Seccomp-bpf), ограничено взаимодействие со сторонними процессами, исключён доступ к разделяемой памяти и видеоподсистеме.
В обычных условиях для настройки sandbox в Firefox требуется предоставление полномочий CAP_SYS_ADMIN, CAP_SYS_CHROOT и CAP_SET(UG)ID, которых достаточно для получения полноценных прав пользователя root. Применение user namespaces позволяет получить необходимые права в отдельном окружении без поднятия привилегий основного процесса. Но из-за обилия уязвимостей, которые можно эксплуатировать только при включенном user namespaces, данную возможность часто отключают, например, по умолчанию user namespaces отключен в Debian и Red Hat Enterprise Linux, но активен в Ubuntu и Fedora.
Источники
править- Главная ссылка к новости (https://www.morbo.org/2018/05/...) (Архивная копия от 12 июня 2019 на Wayback Machine)
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.