Доказана фиктивность цифровой подписи дополнений Firefox

26/11/2015 13:12

Дэн Стиллман (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 по взаимодействию с разработчиками дополнений, указал на то, что большинство авторов вредоносных дополнений ленивы и не будут прибегать к подобным техникам скрытия вредоносной активности, что позволит блокировать большинство вредоносных дополнений. После обсуждения проблемы созданное демонстрационное дополнение было занесено в чёрный список, но никаких действий по блокированию показанных проблем предпринято не было - для повторного автоматизированного тестирования и обхода чёрного списка потребовалось лишь поменять идентификатор дополнения.
Источник