Domanda

Cosa fa realmente il wrapper XPCSafeJSObject di Mozilla Firefox?

MDC la documentazione è la seguente:

  

Questo wrapper è stato creato per risolvere alcuni problemi con XPCNativeWrapper. In particolare, alcune estensioni vogliono essere in grado di accedere in sicurezza a oggetti definiti in modo non implementato in modo nativo (e di accedere all'oggetto JavaScript sottostante in un XPCNativeWrapper senza le sue forti garanzie di comportamento). XPCSJOW funge da buffer tra il codice Chrome.

Questo non mi dice molto. In particolare, non posso dire come l'accesso agli oggetti tramite XPCSafeObject sia diverso dall'accesso diretto a loro.

Modifica : capisco che lo scopo dei wrapper in generale è proteggere il codice privilegiato dal codice non privilegiato. Quello che non capisco (e non sembra essere documentato) è come esattamente XPCSafeJSObject fa questo.

Rilascia i privilegi prima di accedere a una proprietà?

È stato utile?

Soluzione

Lo scopo dei wrapper in generale è proteggere il codice Privilegiato quando interagisce con codice non privilegiato. L'autore del codice non privilegiato potrebbe ridefinire un oggetto JavaScript per fare qualcosa di dannoso, come ridefinire il getter di una proprietà per eseguire qualcosa di brutto come effetto collaterale. Quando il codice privilegiato tenta di accedere alla proprietà, eseguirà il codice errato come codice privilegiato. Il wrapper impedisce questo. Questa pagina descrive l'idea.

XPCSafeJSObject fornisce un wrapper per oggetti JavaScript implementati in modo non nativo (ovvero non oggetti finestra, documento, ecc. ma definiti dall'utente).

Modifica: per come è implementato, controlla codice sorgente (al momento non si sta caricando completamente per me.) Cerca anche XPCSafeJSObject su DXR per altri file sorgente pertinenti.

Altri suggerimenti

In realtà XPCSafeJSObjectWrapper viene utilizzato per tutti gli oggetti di contenuto, inclusi finestre e documenti (che in realtà è dove è più comunemente necessario). Credo che sia stato inventato principalmente per fermare gli attacchi XSS trasformandosi automaticamente in attacchi di escalation di privilegi (facendo XSS contro il browser stesso). Almeno ora se viene rilevato un attacco XSS (e le persone purtroppo continueranno a cercare) non compromette l'intero browser. È uno sviluppo naturale da XPCNativeWrapper che originariamente era un modo manuale (e quindi soggetto a un uso accidentale da parte delle estensioni) per consentire al browser di difendersi dagli attacchi XSS.

Il wrapper garantisce semplicemente che qualsiasi codice valutato venga valutato senza i privilegi di Chrome. L'accesso diretto agli oggetti senza questo wrapper può consentire l'esecuzione del codice con i privilegi di Chrome, che consente quindi a quel codice di fare praticamente qualsiasi cosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top