Mozilla начинает внедрение технологии изоляции библиотек RLBox

Среда, 26 февраля 2020 г.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e

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

Компания Mozilla планирует задействовать RLBox в Linux-сборках Firefox 74 и macOS-сборках Firefox 75 для изоляции выполнения библиотеки Graphite, отвечающей за отрисовку шрифтов. При этом RLBox не специфичен для Firefox и может применяться для изоляции любых библиотек в произвольных проектах. Наработки RLBox распространяются под лицензией MIT. В настоящее время RLBox поддерживает работу на платформах Linux и macOS, поддержка Windows ожидается позднее.

Механизм работы 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 предоставляет доступ к функциям стандартной библиотеки). Для обеспечения безопасной работы с памятью (memory safety) изоляции выполнения кода недостаточно и требуется также обеспечить проверку возвращаемых потоков данных.

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

Источник: http://www.opennet.ru/opennews/art.shtml? num=52440

Следите за нами в ВКонтакте, Facebook'e и Twitter'e


Просмотров: 528
Рубрика: Hi-Tech
(CY)

Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003