Что делает XPCSafeJSObjectWrapper? - PullRequest
3 голосов
/ 27 октября 2008

Что на самом деле делает обертка Mozilla Firefox XPCSafeJSObject?

Документация

MDC выглядит следующим образом:

Эта обертка была создана для решения некоторых проблем с XPCNativeWrapper. В частности, некоторые расширения хотят иметь возможность безопасного доступа к объектам, не определенным для реализации контента (и для доступа к базовому объекту JavaScript в XPCNativeWrapper без его строгих гарантий поведения). XPCSJOW действует как буфер между кодом Chrome.

Это мне мало что говорит. В частности, я не могу сказать, как доступ к объектам через XPCSafeObject отличается от прямого доступа к ним.

Редактировать : Я понимаю, что цель оболочек в целом заключается в защите привилегированного кода от непривилегированного кода. То, что я не понимаю (и, кажется, не документировано), это как точно XPCSafeJSObject делает это.

Это просто отбрасывает привилегии перед доступом к свойству?

Ответы [ 3 ]

4 голосов
/ 09 октября 2009

На самом деле XPCSafeJSObjectWrapper используется для всех объектов содержимого, включая окна и документы (на самом деле это именно то место, где оно обычно требуется). Я считаю, что оно было изобретено в основном для того, чтобы остановить атаки XSS, автоматически превращающиеся в атаки с повышением привилегий (путем выполнения XSS против сам браузер). По крайней мере, сейчас, если обнаружена атака XSS (а люди, к сожалению, будут продолжать искать), это не поставит под угрозу весь браузер. Это естественная разработка XPCNativeWrapper, которая изначально была ручным (и поэтому склонным к случайному неправильному использованию расширениями) способом для браузера защитить себя от атак XSS.

3 голосов
/ 09 мая 2009

Оболочка просто гарантирует, что любой код, который будет оценен, будет оценен без привилегий chrome. Прямой доступ к объектам без этой оболочки позволяет запускать код с правами chrome, что позволяет этому коду делать практически все.

1 голос
/ 27 октября 2008

Целью оболочек в целом является защита Привилегированного кода при взаимодействии с непривилегированным кодом. Автор непривилегированного кода может переопределить объект JavaScript, чтобы сделать что-то вредоносное, например, переопределить метод получения свойства, чтобы выполнить что-то плохое в качестве побочного эффекта. Когда привилегированный код пытается получить доступ к свойству, он выполняет неверный код как привилегированный код. Обертка предотвращает это. Эта страница описывает идею.

XPCSafeJSObject предоставляет оболочку для не встроенных в JavaScript объектов JavaScript (т. Е. Не для окон, документов и т. Д., А для определенных пользователем объектов).

Редактировать: Чтобы узнать, как это реализовано, посмотрите исходный код (в данный момент он не загружается полностью для меня.) Также найдите XPCSafeJSObject в DXR для других соответствующих исходных файлов .

...