Безопасность с "web_accessible_resources" - PullRequest
0 голосов
/ 02 ноября 2018

MDN документы состояние:

To enable a web page to contain an <img> element whose src attribute points to this image,
you could specify "web_accessible_resources" like this:

"web_accessible_resources": ["images/my-image.png"]

The file will then be available using a URL like:

moz-extension://<extension-UUID>/images/my-image.png"

<extension-UUID> is not your extension's ID.
It is randomly generated for every browser instance.
This prevents websites from fingerprinting a browser by examining
the extensions it has installed.

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

Однако в тех же MDN документах также указано:

Note that if you make a page web-accessible, then any website may then link or redirect
to that page. The page should then treat any input (POST data, for examples)
as if it came from an untrusted source, just as a normal web page should.

Я не понимаю, как «любой веб-сайт может затем ссылаться или перенаправлять на эту страницу». Разве ему не нужно знать случайный UUID? Как еще веб-страница может получить доступ к этому ресурсу?

1 Ответ

0 голосов
/ 02 ноября 2018

Смысл веб-доступных ресурсов в том, чтобы иметь возможность включать их в веб-контекст.

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

Вы пишете расширение, которое добавляет кнопку в пользовательский интерфейс evil.com сайта. На этой кнопке должно быть изображение.

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

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

Совершенно правдоподобный сценарий.

Обратите внимание, что случайный сторонний сайт villains-united.com не может просто очистить URL-адрес, чтобы узнать, установлено ли ваше расширение, поскольку URL-адрес уникален для каждого браузера. Это намерение, стоящее за UUID WebExtensions над моделью Chrome extension-id.

Однако давайте продолжим наш гипотетический сценарий с точки зрения безопасности.

Операторы evil.com недовольны вашим дополнительным пользовательским интерфейсом. Они добавляют в свой код скрипт, который ищет добавленные кнопки.

Этот скрипт может видеть свойства DOM кнопки, включая адрес изображения. Теперь код evil.com может видеть ваш UUID.

Будучи хорошим парнем, исходный код вашего расширения доступен где-то, включая страницу, которая запускает ядерные ракеты, если она вызывается (зачем вам это нужно и почему она будет доступна через Интернет, это другой вопрос, возможно, для обеспечения функциональности good-guys-last-resort.org).

Скрипт

evil.com теперь может восстановить URL этой триггерной страницы и XHR, погрузив планету в ядерный апокалипсис. К сожалению. Вы, вероятно, должны были проверить происхождение этого запроса.

В основном, если доступный из Интернета ресурс используется на странице, UUID, вероятно, просачивается в контекст этой страницы через DOM. Возможно, это не та страница, которой вы управляете.

...