Pergunta

O que o invólucro XPCSafejSoBject da Mozilla Firefox realmente faz?

MDCA documentação é a seguinte:

Este invólucro foi criado para resolver alguns problemas com o xpcnativewrapper. Em particular, algumas extensões desejam poder acessar com segurança o conteúdo não implementado, objetos definidos por conteúdo (e acessar o objeto JavaScript subjacente sob um XPCNativeWrapper sem suas fortes garantias de comportamento). O XPCSJOW atua como um buffer entre o código Chrome.

Isso não me diz muito. Em particular, não sei dizer como o acesso a objetos via XPCSafeObject é diferente de acessá -los diretamente.

Editar: Entendo que o objetivo dos invólucros em geral é proteger o código privilegiado do código não privilegiado. O que eu não entendo (e não parece estar documentado) é Como as Exatamente XPCSafejSObject faz isso.

Ele apenas descarta privilégios antes de acessar uma propriedade?

Foi útil?

Solução

O objetivo dos invólucros em geral é proteger o código privilegiado ao interagir com código não privilegiado. O autor do código não privilegiado pode redefinir um objeto JavaScript para fazer algo malicioso, como redefinir o getter de uma propriedade para executar algo ruim como efeito colateral. Quando o código privilegiado tenta acessar a propriedade, ele executaria o código ruim como código privilegiado. O invólucro impede isso. Esta página descreve a ideia.

O XPCSafejSObject fornece um invólucro para objetos JavaScript não implementados não nativamente (ou seja, não janela, documento etc., mas objetos definidos pelo usuário.)

Editar: Para como é implementado, confira o Código fonte (Não está carregando completamente para mim no momento.) Também procure xpcsafejsobject on Dxr Para outros arquivos de origem relevantes.

Outras dicas

Na verdade, o XPCSafejSObjectWrapper é usado para todos os objetos de conteúdo, incluindo Windows e documentos (que é de fato onde é mais necessário.) Acredito que foi inventado principalmente para impedir os ataques do XSS, se transformando automaticamente em ataques de escalada privilegiados (fazendo o XSS contra o próprio navegador) . Pelo menos agora, se um ataque XSS for encontrado (e as pessoas infelizmente continuarão olhando), ele não compromete todo o navegador. É um desenvolvimento natural do xpcnativewrapper, que era originalmente uma maneira manual (e, portanto, propensa a uso indevido acidental por extensões) para o navegador se defender dos ataques do XSS.

O invólucro garante que qualquer código que seja avaliado seja avaliado sem privilégios do Chrome. O acesso a objetos diretamente sem esse invólucro pode permitir que o código seja executado com privilégios do Chrome, que permitem que esse código faça praticamente qualquer coisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top