Question

Que fait réellement le wrapper XPCSafeJSObject de Mozilla Firefox?

La documentation de MDC est la suivante:

  

Ce wrapper a été créé pour résoudre certains problèmes liés à XPCNativeWrapper. Certaines extensions souhaitent notamment pouvoir accéder en toute sécurité à des objets définis par le contenu non implémentés de manière native (et accéder à l'objet JavaScript sous-jacent sous XPCNativeWrapper sans être fortement garantis par son comportement). XPCSJOW agit comme un tampon entre le code chrome.

Cela ne me dit pas grand chose. En particulier, je ne vois pas en quoi l'accès aux objets via XPCSafeObject est différent de l'accès direct aux objets.

Modifier : je comprends que les wrappers ont généralement pour but de protéger le code privilégié du code sans privilège. Ce que je ne comprends pas (et qui ne semble pas avoir été documenté) est la manière dont exactement XPCSafeJSObject fait cela.

Cela supprime-t-il simplement les privilèges avant d'accéder à une propriété?

Était-ce utile?

La solution

Les wrappers ont généralement pour objectif de protéger le code privilégié lorsqu’il interagit avec du code non privilégié. L’auteur du code non privilégié peut redéfinir un objet JavaScript pour qu’il fasse quelque chose de malveillant, comme redéfinir le getter d’une propriété pour exécuter quelque chose de mauvais comme effet secondaire. Lorsque le code privilégié tente d'accéder à la propriété, il exécute le code incorrect en tant que code privilégié. Le wrapper empêche cela. Cette page décrit l’idée.

XPCSafeJSObject fournit un wrapper pour les objets JavaScript implémentés de manière non native (c'est-à-dire, pas les objets window, document, etc., mais définis par l'utilisateur.)

Modifier: Pour savoir comment le mettre en œuvre, consultez la page code source (le chargement n’est pas complet pour le moment.) Recherchez également XPCSafeJSObject sur DXR pour d’autres fichiers sources pertinents.

Autres conseils

En fait, XPCSafeJSObjectWrapper est utilisé pour tous les objets de contenu, y compris les fenêtres et les documents (ce qui est en fait le cas le plus souvent nécessaire). navigateur lui-même). Du moins maintenant, si une attaque XSS est détectée (et les gens vont malheureusement continuer à chercher), cela ne compromet pas la totalité du navigateur. C’est un développement naturel de XPCNativeWrapper qui était à l’origine un moyen manuel (et donc sujet à une utilisation abusive par extension) du navigateur pour se défendre des attaques XSS.

Le wrapper garantit simplement que tout code évalué est évalué sans privilèges chrome. Accéder directement aux objets sans ce wrapper peut permettre au code de fonctionner avec des privilèges chrome, ce qui permet ensuite à ce code de faire à peu près n'importe quoi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top