На конференции Black Hat Asia исследователи Ахмед Бюйюккайхан (Ahmet Buyukkayhan) и Уильям Робертсон (William Robertson) продемонстрировали новый вектор атак. Исследователи рассказали, что популярные расширения для браузера Firefox могут представлять опасность для пользователей.
Последние два года Бюйюккайхан и Робертсон изучали механизм так называемого «повторного использования расширений» (extension reuse). Данная техника подразумевает, что вредоносное расширение обращается с подозрительными запросами к другим разрешениям и эксплуатирует их уязвимости. Так как все запросы от разрешений, сделанные через Firefox, исполняются с высокими привилегиями, перед атакующим открывается очень широкий спектр возможностей. Хуже того, подобные вредоносные разрешения могут легко попасть в официальный каталог Mozilla,
Дело в том, что само вредоносное дополнение не обращается к внутренним механизмам браузера с подозрительными запросами и не привлекает к себе внимания, используя для атак баги в других расширениях. В качестве эксперимента исследователи создали собственный опасный аддон ValidateThisWebsite, который на первый взгляд был абсолютно безвреден, но на деле мог использоваться для атак extension reuse. Расширение содержало всего 50 строк кода, и разработчики не применяли обфускацию, чтобы не затруднять сотрудникам Mozilla доступ к исходникам. Вредоносный аддон, тем не менее, успешно прошел все автоматические и ручные проверки и был добавлен в каталог.
Бюйюккайхан и Робертсон рассказали, что для атак extension reuse уязвимы многие популярные расширения, к примеру: GreaseMonkey (1,5 миллиона активных установок), Video DownloadHelper (6,5 милионов активных установок), NoScript (2,5 миллиона активных установок). Для поиска уязвимых аддонов исследователи использовали фреймворк Crossfire.
«Если подумать и присмотреться внимательно, фреймворк расширения, это, по сути, бекдор для потенциально недоверенных третьих сторон, которые могут использовать его для исполнения кода с высокими привилегиями, — говорит Робертсон. — Нам действительно не стоит доверять разработчикам расширений. Сочетание автоматического анализа, рассмотрения вручную и подписей для расширений — это модель, на которой стоит вся безопасность расширений Firefox. Если что-то пойдет не так, то пиши пропало».
«Чем большими мощностями обладает расширение, тем легче будет вредоносному аддону с ним работать, — добавляет Бюйюккайхан. — Детальная проверка — это высший уровень безопасности Mozilla».
В итоге исследователи, конечно, сообщили о проблеме разработчикам Mozilla и даже предоставили им исходные коды Crossfire. Выяснилось, что из 10 самых популярных расширений только Adblock Plus не содержит уязвимостей, остальные аддоны можно использовать для атак.
Проблема уходит корнями к недостаточной изоляции расширений в Firefox. Бразуер позволяет любым JavaScript расширениями использовать одно и то же пространство имен (namespace), и из-за этого один аддон может влиять на работу другого.
Вице-президент Mozilla уже прокомментировал выступление исследователей и сообщил, что разработчики проекта стараются улучшить безопасность браузера. В частности, он сообщил, что новый API для разработки дополнений — WebExtensions более надежен, и расширения, созданные с его помощью, нельзя использовать для атак extension reuse. Также, в рамках перевода Firefox на мультипроцессовую архитектуру, позже в текущем 2016 году в браузере должна заработать песочница для расширений, чтобы дополнения не могли делить код друг с другом.
Разработчики популярных Linux-дистрибутивов начали выпускать патчи, закрывающие уязвимость Copy Fail. Брешь получила идентификатор CVE-2026-31431 и позволяет локальному пользователю повысить права до root. Проблеме присвоили высокий уровень опасности — 7,8 балла по CVSS.
Уязвимость связана с логической ошибкой в криптографическом компоненте ядра Linux — authencesn / algif_aead.
По данным исследователей Theori, обычный пользователь без повышенных прав может записать четыре контролируемых байта в кеш страницы любого читаемого файла, а затем использовать это для получения root-доступа.
Опасность в том, что ядро использует кеш страницы при запуске бинарных файлов. Если изменить кешированную копию, можно вмешаться в процесс выполнения программы, при этом обычные механизмы контроля файловых событий вроде inotify такую активность не заметят.
Исследователи подготовили proof-of-concept: эксплойт помещается в Python-скрипт на 10 строк и может модифицировать setuid-бинарник, чтобы получить root на большинстве Linux-дистрибутивов, выпущенных с 2017 года. По словам Theori, Copy Fail напоминает Dirty Cow и Dirty Pipe, но не требует гонку состояний (race condition).
Удалённо сама по себе уязвимость не эксплуатируется, атакующему нужен локальный доступ к системе. Но её можно использовать в цепочке атак, например после компрометации через web-RCE, SSH-доступ или вредоносный CI-runner. Особенно внимательно к патчам стоит отнестись тем, кто использует многопользовательские Linux-системы, контейнеры с общим ядром и CI-среды, где запускается недоверенный код.
Theori также считает, что Copy Fail можно использовать для побега из контейнера, поскольку кеш общий для хоста. Патчи уже выпустили разработчики Debian, Ubuntu, SUSE и Red Hat.
Свидетельство о регистрации СМИ ЭЛ № ФС 77 - 68398, выдано федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор) 27.01.2017 Разрешается частичное использование материалов на других сайтах при наличии ссылки на источник. Использование материалов сайта с полной копией оригинала допускается только с письменного разрешения администрации.