RLBox, новая технология изоляции библиотек, используемая Mozilla

Логотип Firefox

Исследователи Стэнфордского университета, Калифорнийский университет в Сан-Диего y la Техасский университет в Остине Они разработали набор инструментов, который они назвали «RLBox», что можно использовать как дополнительный уровень утепления для блокировки уязвимостей в библиотеках функций.

RLBox направлен на решение проблемы безопасности сторонних библиотек. Недоверенные, не контролируемые разработчиками, но уязвимости, в которых может быть скомпрометирован основной проект.

Mozilla планирует использовать RLBox в сборках Firefox 74 для Linux и сборники macOS в Firefox 75 изолировать выполнение библиотеки Graphite, который отвечает за представление источников.

В то же время RLBox не специфичен для Firefox и может использоваться для изоляции любой библиотеки в произвольных проектах.

О RLBox

Рабочий механизм RLBox сводится к компиляции кода C / C ++ из изолированной библиотеки в промежуточный код WebAssembly. низкоуровневый, который затем выдается как модуль WebAssembly, полномочия которого установлены для привязки только к этому модулю (например, библиотека для обработки строк не может открыть сокет или сетевой файл) Преобразование кода C / C ++ WebAssembly выполняется с помощью wasi-sdk.

Для прямого исполнения, модуль WebAssembly компилируется в машинный код с помощью компилятора Lucet и он работает в «нанопроцессе» отдельно от остальной памяти приложения. Компилятор Lucet основан на том же коде, что и JIT-движок Cranelift, используемый в Firefox для запуска WebAssembly.

Собранный модуль работает в отдельной области памяти и у него нет доступа к остальной части адресного пространства. В случае использования уязвимости в библиотеке злоумышленник будет ограничен и не сможет получить доступ к областям памяти основного процесса или передать управление за пределы песочницы.

Для разработчиков предоставляется высокоуровневый API, который позволяет вызывать функции библиотеки в изолированном режиме.

серия Контроллеры WebAssembly практически не требуют дополнительных ресурсов и взаимодействие с ними не намного медленнее, чем вызов обычных функций (библиотечные функции выполняются в виде нативного кода, а перегрузка возникает только при копировании и проверке данных в процессе взаимодействия с изолированной средой) .

Функции изолированной библиотеки не могут быть вызваны напрямую, и для доступа к ним вы должны использовать слой invoke_sandbox_function ().

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

Чтобы обеспечить безопасную работу с памятью, изолировать выполнение кода недостаточно а также вам необходимо обеспечить проверку возвращаемых потоков данных.

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

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

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

Разработки RLBox распространяются по лицензии MIT.. RLBox в настоящее время поддерживает Linux и macOS и ожидается, что он будет совместим с Windows позже.

Если вы хотите узнать больше об этой новой технологии, которую Mozilla планирует внедрить в Firefox, вы можете проконсультироваться по ее разработке, а также протестировать API. По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.