L'accesso ai metodi privilegiati in un'estensione di Chrome dipende da due fattori:
- Le autorizzazioni di estensione attive.
- Il processo corrente.
Le estensioni di Chrome possono solo richiedere l'accesso alle API privilegiate dopo aver dichiarato le necessarie autorizzazioni nel file manifest. Esiste anche una serie di API private che sono disponibili solo per un'estensione quando il loro ID di estensione è autorizzato nella whitelist (codificato nel codice sorgente di Chromium). Questo non è davvero rilevante se vuoi sfuggire alla sandbox, definisce solo i confini dell'impatto di un compromesso.
Ci sono due "sandbox". Uno che è visibile agli sviluppatori di estensioni, che mira a proteggere gli utenti dai siti Web che cercano di sfruttare i metodi di estensione privilegiati. L'altro è trasparente per gli sviluppatori di estensioni e fornisce protezione contro i processi compromessi (rendering).
Chrome è un'applicazione multi-processo, costituita da un processo browser (ad alto privilegio) e da più processi di rendering. Ogni scheda / sito viene eseguito nel suo stesso processo vedi Modelli di processo per ulteriori dettagli , con i privilegi minimi necessari per eseguire il loro compito.
Le estensioni possono utilizzare i cosiddetti script di contenuto per modificare l'aspetto o la funzionalità dei siti web. Questi script di contenuto condividono lo stesso processo del sito Web sul quale agiscono, ma il codice JavaScript viene eseguito in un contesto separato. Ciò consente al sistema di estensione di offrire un insieme molto limitato di metodi JavaScript privilegiati allo script del contenuto, ad es. nella forma dell'estensione API che passa messaggi e cross-origine AJAX . Quando un processo di tabulazione è compromesso, il danno è limitato. Potrebbe fare richieste interdominio (se l'estensione ha il permesso di farlo) e inviare messaggi al processo background dell'estensione , ma non leggere i file dal tuo filesystem, né usare nessuna delle più potenti API di estensione. Quando un processo di tabulazione (renderer) è compromesso, il danno è solitamente limitato a quella singola scheda / origine, grazie all'architettura di sicurezza.
Altre parti dell'estensione (ad es. pagine di sfondo , pagine popup e pagine in cui la omnibox visualizza chrome-extension://[EXTENSIONID]/...
) eseguite nel processo di estensione. Le pagine all'interno del processo di estensione possono utilizzare potenti API purché abbiano autorizzazioni richieste per utilizzarle , incluso l'accesso in lettura ai file sul tuo file system locale (purché abbia richiesto l'accesso, e hai messo un segno di spunta nella casella di controllo "Permetti l'accesso ai file URL" nella pagina delle impostazioni degli interni - questo non accade per caso, non t preoccupare).
Quando un processo di estensione è compromesso, il danno è limitato a ciò che un'estensione può fare. Ad esempio, non è possibile scrivere su file arbitrari sul proprio file system.
(nota che uno sviluppatore di estensioni maligne non ha bisogno di impegnarsi a compromettere un processo di estensione, perché se installi un'estensione malevola che richiede "Accedi ai tuoi dati su tutti i siti web" e "Accedi alle tue schede e attività di navigazione ", quindi ha già il potere sufficiente per confondere con i tuoi siti web, ad esempio rubando le password quando le digiti).
Risorse esterne
-
link
Descrive i diversi modelli di processo supportati da Chromium per la creazione di processi di rendering.
-
link
Descrive come il sistema di estensione di Chromium è stato progettato dall'approccio basato sulla sicurezza.
-
link
Descrive l'architettura di sicurezza di Chromium (non solo le estensioni, ma il browser nel suo complesso).
-
link
Isolamento del sito (non specifico dell'estensione, ma rilevante per la valutazione della sicurezza degli script del contenuto)