Google Chrome добавляет V8 Sandbox - новую защиту от атак браузера

Father

Professional
Messages
2,601
Reputation
4
Reaction score
633
Points
113
Компания Google объявила о поддержке так называемой "песочницы версии 8" в веб-браузере Chrome в целях решения проблем с повреждением памяти.

По словам технического руководителя службы безопасности V8 Сэмюэля Гроса, "песочница" направлена на предотвращение распространения повреждения памяти в V8 внутри хост-процесса".

Поисковый гигант описал V8 Sandbox как облегченную, встроенную в процесс "песочницу" для JavaScript и движка WebAssembly, предназначенную для устранения распространенных уязвимостей V8.

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

Недостатки, влияющие на версию 8, стали причиной значительной части уязвимостей нулевого дня, которые Google устранил в период с 2021 по 2023 год, при этом за этот период было обнаружено целых 16 уязвимостей в системе безопасности.

"Песочница предполагает, что злоумышленник может произвольно и одновременно изменять любую память внутри адресного пространства песочницы, поскольку этот примитив может быть создан на основе типичных уязвимостей версии 8", - сказали в Chromium.

"Кроме того, предполагается, что злоумышленник сможет считывать память за пределами "песочницы", например, по аппаратным каналам. Затем "песочница" предназначена для защиты остальной части процесса от такого злоумышленника. Таким образом, любое повреждение памяти за пределами адресного пространства "песочницы" считается нарушением "песочницы".

Гросс подчеркнул проблемы, связанные с устранением уязвимостей V8, путем перехода на язык, защищающий память, такой как Rust, или аппаратные подходы к обеспечению безопасности памяти, такие как пометка памяти, учитывая "тонкие логические проблемы", которые могут быть использованы для повреждения памяти, в отличие от классических ошибок безопасности памяти, таких как использование после освобождения, доступ за пределы ограничений и другие.

Chrome V8 Sandbox


"Почти все уязвимости, обнаруженные и эксплуатируемые сегодня в V8, имеют одну общую черту: возможное повреждение памяти обязательно происходит внутри кучи V8, потому что компилятор и среда выполнения (почти) работают исключительно с экземплярами HeapObject V8", - сказал Гросс.

Учитывая, что эти проблемы не могут быть защищены теми же методами, которые используются для типичных уязвимостей, связанных с повреждением памяти, песочница V8 предназначена для изоляции оперативной памяти V8 таким образом, чтобы в случае любого повреждения памяти она не могла выйти за пределы безопасности других частей памяти процесса.

Это достигается путем замены всех типов данных, которые могут обращаться к памяти вне песочницы, альтернативами, совместимыми с "песочницей", тем самым эффективно предотвращая доступ злоумышленника к другой памяти. Песочницу можно включить, установив для параметра "v8_enable_sandbox" значение true в основных аргументах.

Результаты тестов Speedometer и JetStream показывают, что функция безопасности увеличивает накладные расходы примерно на 1% при типичных рабочих нагрузках, что позволяет включать ее по умолчанию, начиная с Chrome версии 123, для Android, ChromeOS, Linux, macOS и Windows.

"Для V8 Sandbox требуется 64-разрядная система, поскольку ей необходимо резервировать большой объем виртуального адресного пространства, в настоящее время составляющий один терабайт", - сказал Гросс.

"Создание песочницы обусловлено тем фактом, что современные технологии защиты памяти в значительной степени неприменимы к оптимизации движков JavaScript. Хотя эти технологии не в состоянии предотвратить повреждение памяти в самой V8, они фактически могут защитить поверхность атаки V8 Sandbox. Таким образом, "песочница" является необходимым шагом на пути к безопасности памяти. "

Разработка началась после того, как Google подчеркнула роль Kernel Address Sanitizer (KASan) в обнаружении ошибок памяти в машинном коде и помощи в повышении безопасности прошивки Android, добавив, что для обнаружения более 40 ошибок используется инструмент на основе компилятора.

"Использование сборок с поддержкой KASan во время тестирования и / или фаззинга может помочь выявить уязвимости, связанные с повреждением памяти, и проблемы со стабильностью до того, как они попадут на устройства пользователей", - сказали Евгений Родионов и Иван Лозано из Android team.
 
Top