Может ли веб-сайт проверить, была ли надстройка изменена?

Это контекст: предположим, что есть плагин P, доступный на сайте дополнений Mozilla Firefox.

Рассмотрим злонамеренного пользователя, который изменяет P, например, чтобы он отклонялся от нормального поведения. Мой первый вопрос:

  1. Может ли браузер Firefox обнаружить, что плагин не является исходным (то есть тем, который был загружен с сайта Firefox? Если это можно обнаружить, может ли браузер Firefox отключить (измененный) плагин?

Теперь рассмотрим случай веб-сайта, который взаимодействует с плагином P. Например, сайт разрешает доступ к веб-контенту только в том случае, если плагин является оригинальным (он не был изменен).

Мой второй вопрос:

  1. Может ли сайт определить, что этот злонамеренный пользователь изменил плагин?

2 ответа

Firefox обнаруживает изменения

Все расширения, которые загружаются из AMO, криптографически подписаны Mozilla ( ссылка 2). Если расширение каким-либо образом изменено, Firefox автоматически обнаружит, что произошли изменения, и отключит надстройку.

Однако, если пользователь использует Firefox Developer Edition, Firefox Nightly, Unbranded Beta или Unbranded Release, они могут изменить предпочтение так, чтобы модифицированное расширение не было отключено. Модификация все равно будет обнаружена, и пользователь сообщит в about:addons (Ctrl-Shif-A, Cmd-Shif-A в OSX). Пользователь также может загрузить исходный код для Firefox и скомпилировать свою собственную версию, которая отключает проверку подписи надстройки.

Временные дополнения
Обычная версия и бета-версии Firefox не позволяют пользователю постоянно устанавливать и запускать расширения, которые не были подписаны или где расширение было изменено после подписания. Однако они, наряду со всеми другими версиями, позволяют загружать расширение как временную надстройку, даже если оно не подписано или изменено. Это делает невозможными неподписанные надстройки, которые требуют перезапуска браузера в этих версиях Firefox.

Резюме
Поющие дополнения Mozilla предназначены для предотвращения загрузки и установки наивными пользователями надстроек, которые являются вредоносными или просто не проверены Mozilla. Таким образом, чтобы установить неподписанное или измененное дополнение, пользователь должен выполнить дополнительные неудобные действия (не использовать фирменный выпуск или бета-версию Firefox или использовать временную установку дополнения). Однако подпись не препятствует и не препятствует тому, чтобы пользователь преднамеренно изменил надстройку и не смог ее запустить.

Сайт обнаруживает, что расширение изменилось

Нет, если предположить, что изменения в расширении намеренно скрыты, у веб-страницы нет гарантированного способа обнаружить, что изменение произошло. Модифицированное расширение может подделать любую информацию, предоставленную веб-странице с помощью исходного кода расширения. Вы можете сделать это трудно, но это не может быть гарантировано.

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

Вы запрашиваете DRM, т. Е. Возможность проверить, что удаленная часть программного обеспечения, работающая на вычислительном оборудовании общего назначения, выполняет код, который, как он сам утверждает, выполняет.

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

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

Вкратце: проверяйте данные, а не код.

Другие вопросы по тегам