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

Логотип Firefox

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

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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.