Mozilla использует WebAssembly для обеспечения безопасности браузера

04 Марта 2020

Firefox скоро начнет запускать некоторые сторонние библиотеки и компоненты браузера в изолированной песочнице Wasm.

Mozilla использует технологию песочницы памяти на основе WebAssembly для повышения безопасности браузера Firefox. Эта технология, получившая название RLBox, позволяет Mozilla быстро преобразовывать компоненты Firefox для работы в изолированной программной среде WebAssembly.

RLBox, разработанный университетскими исследователями, представляет собой набор инструментов для изолирования сторонних библиотек в песочнице. Он сочетает в себе песочницу на основе WebAssembly и API для модификации существующего кода приложения для взаимодействия с изолированной библиотекой. Изоляция, предлагаемая RLBox, планируется включить в Firefox 74 в Linux и Firefox 75 в macOS, а вскоре после этого появится поддержка Windows. Firefox 74 и Firefox 75 планируются к выпуску в марте и апреле соответственно.

WebAssembly - это переносимый формат кода, который привлек внимание как способ обеспечить почти нативную производительность для веб-приложений. WebAssembly (также известный как Wasm) служит целью компиляции для ряда языков, включая C / C ++ и Rust, что позволяет этим языкам работать в браузере.

Принцип, лежащий в основе песочницы WebAssembly, заключается в том, что C / C ++ может быть скомпилирован в код Wasm, который затем может быть скомпилирован в собственный код для хост-машины. Firefox уже имеет «базовую инфраструктуру» для песочницы Wasm; Mozilla теперь планирует усилить свое влияние на кодовую базу Firefox. Первоначальные усилия сосредоточены на изолировании сторонних библиотек, поставляемых вместе с браузером. Технология будет применяться и к собственному коду.

Песочница Wasm присоединится к другим методам обеспечения безопасности памяти, используемым в кодовой базе Firefox: устранение опасностей памяти, разбиение кода на несколько изолированных процессов с ограниченными привилегиями; и переписать код на безопасном языке, таком как Rust. Песочница на уровне процесса хорошо работает для больших, уже существующих компонентов, но она потребляет значительные системные ресурсы, поэтому ее можно использовать только с осторожностью.