Демонстрация неэффективности внедрения в Firefox проверки дополнений по цифровой подписи
Дэн Стиллман (Dan Stillman), разработчик браузерного дополнения Zotero, выступил с критикой навязываемой проектом Mozilla обязательной проверки дополнений по цифровой подписи. Напомним, что под предлогом борьбы с распространением вредоносных и шпионящих за пользователями дополнений, начиная с Firefox 43 Mozilla переходит к схеме обязательной проверки дополнений по цифровой подписи.
Дэн Стиллман попытался показать, что переход к использованию только подписанных дополнений приведёт лишь к сложностям для разработчиков, и никак не повлияет на безопасность, а быть может даже ухудшит ситуацию с распространением уязвимых дополнений. В частности, процесс верификации подразумевает обязательную загрузку всех дополнений, в том числе поставляемых через сторонние каналы распространения, на сайт Mozilla для прохождения автоматизированной или ручной проверки. Первая проблема в том, что в случае невозможности применить автоматизированную проверку ручная проверка занимает в среднем семь недель. Возникновение подобных задержек не только затягивает поставку новых выпусков, но и мешает оперативной доставке обновлений с устранением уязвимостей и серьёзных ошибок.
Вторая проблема в том, что авторы вредоносных дополнений могут легко обмануть тесты автоматизированной системы проверки. Для демонстрации своего заявления Стиллман подготовил прототип вредоносного дополнения, которое благодаря применению нехитрых приёмов скрытия вредоносной активности, успешно прошло автоматизированную проверку и было заверено цифровой подписью Mozilla. При этом дополнение осуществляло перехват запросов к сайтам, открываемым через HTTP/HTTPS, и собирало данные о паролях, после чего отправляло полученные сведения на внешний HTTP-сервер. Более того, успешно прошедшее тестирование дополнение позволяло запустить в системе произвольный процесс при открытии определённого URL или загрузить JavaScript-код с внешнего сервера и выполнить его с привилегиями браузера.
Для запуска кода в примере применялась техника скрытия действий через компоновку операции путём соединения нескольких строк и последующего выполнения результирующей строки. В частности, nsIProcess формируется через Components.interfaces["nsI" + "p".toUpperCase() + "rocess"], а eval запускается через window['e'.replace() + 'val'](req.responseText)). Блок для перехвата паролей вообще не потребовал выдумывания обходных путей и был пропущен системой проверки как есть. В ходе обсуждения несколько разработчиков из сообщества Mozilla согласились, что нереально на основе проведения статического анализа отделить полезное и вредоносное использование свойств в коде JavaScript, особенно в контексте того, что код можно сгенерировать на лету и выполнить через eval().
При этом, несмотря на то, что автоматизированная проверка создаёт лишь видимость безопасности, внедрение обязательного применения цифровых подписей никто не собирается отменять - лидер команды Mozilla по взаимодействию с разработчиками дополнений, указал на то, что большинство авторов вредоносных дополнений ленивы и не будут прибегать к подобным техникам скрытия вредоносной активности, что позволит блокировать большинство вредоносных дополнений. После обсуждения проблемы созданное демонстрационное дополнение было занесено в чёрный список, но никаких действий по блокированию показанных проблем предпринято не было - для повторного автоматизированного тестирования и обхода чёрного списка потребовалось лишь поменять идентификатор дополнения.
Доводы Стиллмана также подтверждает недавно проведённое исследование дополнений в каталоге приложений Chrome, показавшее неэффективность уже внедрённых в каталоге Chrome механизмов проверки дополнений. Исследование показало, что ряд популярных дополнений, насчитывающих сотни тысяч пользователей, нарушают требования по соблюдению приватности, отслеживают перемещения пользователя и передают полученную статистику вовне. При этом, важно то, что подобный сбор данных производится независимо от применения специальных дополнений для блокирования отслеживания перемещений и инкогнито-режимов.
Дополнения имеют полный доступ к истории посещений, cookie, всем открываемым страницам и частной информации, что создаёт тепличные условия для злоупотреблений. Например, многие авторы дополнений соглашаются на сотрудничество с рекламными сетями и маркетинговыми компаниями, и вставляют их блоки кода в свои дополнения. Подобные блоки загружается динамически и могут привести к выполнению любого JavaScript-кода в контексте дополнения. Данный код никто не контролирует и он не проходит проверку в каталоге дополнений, несмотря на то, что формально само дополнение прошло верификацию.
Ярким примером является дополнение Hoverzoom с аудиторией более миллиона пользователей, которое после инцидента в 2013 году было удалено из каталога Chrome, но вскоре опять вернулось в него и возобновило порочную практику. Аналогичные проблемы свойственны и дополнениям из каталога Firefox, например, отправка всех данных о посещения выявлена в дополнении Ant Video Downloader, которое установлено у более чем у 400 тысяч пользователей и до сих пор предлагается для загрузки, несмотря на наличие вредоносного кода.