Nell'attuale scenario informatico, la sicurezza di un sistema operativo e la nostra privacy dipendono in sempre maggior misura dalle politiche di sicurezza del browser di utilizzo.
Come vedremo, un riuscito attacco da remoto alle falle dei browser è assai pericoloso: se l'utente con cui gira il browser ha elevati privilegi, la compromissione dell'intero sistema è molto probabile, probabilità che diminuisce se l'utente ha bassi privilegi e se a questo si aggiunge un browser che utilizzi tecniche di sandboxing, di cui è oggetto il presente articolo.
Lo User Account Control di Windows Vista e successivi
Ogni utente Linux, per le sue attività, utilizza un account standard e, solamente all'occorrenza, modifica il proprio status divenendo utente root (amministratore), mediante il comando su ed inserendo la password di questi.
Alternativamente utilizza (esplicitamente od implicitamente via popup grafico) il comando sudo, il quale permette l'elevazione momentanea dei privilegi pur non modificando la propria identità e non conoscendo la password di root – per i soli compiti previsti, configurati da root medesimo.
Gli utilizzatori dei sistemi operativi Microsoft pre-Vista sono invece abituati ad autenticarsi come amministratori; tale comportamento rappresenta un notevole rischio in caso di exploit su un software in esecuzione, in quanto un eseguibile lanciato da un utente amministratore ne eredita i permessi: il programma (istruito dal malware iniettato) potrebbe modificare ogni file del sistema operativo, rendendosi quindi veicolo a sua volta dell'iniezione di malware o di furto di dati.
Microsoft ha quindi implementato lo UAC (User Account Control), che obbliga i processi a girare con il minimo indispensabile dei privilegi e di elevare gli stessi privilegi solamente quando ve ne sia necessità.
La necessità di elevazione dei privilegi serve al fine di modificare il comportamento del sistema in una sua impostazione "globale": installare programmi o driver, creare cartelle o chiavi di registro nelle aree di sistema e via discorrendo.
Lo User Account Control (UAC): livello utente
I moderni sistemi Windows (Vista, Seven e 2008, d'ora in poi solamente Windows) contemplano due categorie di utilizzatori: standard ed amministratore; quando sia necessario un innalzamento dei privilegi assegnati all'utente corrente, il sistema lancia un popup di avviso e scurisce la porzione di schermo sottostante: gli utenti standard dovranno inserire la password dell'amministratore, mentre gli utenti appartenenti al gruppo degli amministratori vedranno comparire solamente una richiesta di conferma.
A tal proposito, Windows 7 visualizza popup all'utente un minor numero di volte rispetto a Windows Vista. L'intento è semplice: puntare ad annoiare meno l'utente – del resto, proprio per il fastidio dei continui molti utilizzatori di Windows disabilitano lo UAC.
Le seguenti immagini esemplificano rispettivamente i due detti comportamenti, ottenuti tentando di installare un eseguibile firmato da Mozilla Corporation – per eseguibili non firmati digitalmente le finestre apparirebbero più "vistose".
Concludiamo che solamente le applicazioni approvate dall'amministratore avranno privilegi amministrativi.
Tuttavia, cosa avverrebbe se la stessa applicazione che invoca i diritti simulasse il click del mouse sul popup di conferma? È per questo motivo che il popup viene eseguito in una modalità detta Secure Desktop, in cui l'interfaccia grafica di sfondo appare grigia e nessuna applicazione può interagire col processo facente capo alla finestra di dialogo; per ottenere un siffatto risultato, è necessaria una qualche distinzione tra processi.
Livelli d'integrità dei processi
In aggiunta ai comuni meccanismi di protezione di ogni moderno sistema operativo, per i quali un processo che giri come un dato utente eredita tutti e soli i permessi di quell'utente, ogni processo, file, cartella e chiave di registro di Windows è caratterizzato anche da un livello di integrità, che può essere basso, medio, alto e di sistema.
Alle applicazioni avviabili dall'utente è assegnato un livello di integrità medio, mentre alle applicazioni che richiedono privilegi amministrativi è assegnato un livello alto. Quasi tutti i file, le cartelle e le chiavi di registro di Windows possiedono un livello di integrità medio.
Le tecnologie che sottendono alla possibilità di eseguire task con diversi livelli di integrità sono la tecnologia Mandatory Integrity Control e la tecnologia User Interface Privilege Isolation. Il MIC implementa un paradigma secondo il quale ogni oggetto (processo, file, chiave di registro) non può esser letto o modificato da processi a più basso livello di integrità, mentre lo UIPI evita che un processo a minor integrità possa comunicare con un processo a maggior integrità; ad esempio evita che un processo possa inviare messaggi alle finestre della GUI individuati da processi con livelli di integrità maggiori.
In sintesi, quindi, ad ogni processo che giri come un dato utente U e ad un dato livello di integrità è permesso leggere e scrivere solo su oggetti:
- sui quali l'utente U abbia permessi di lettura e scrittura
- e che non abbiano livello di integrità maggiore.
Detto in altro modo, un processo a basso livello di integrità non può accedere ad oggetti con livello di integrità più elevato, ovvero non può accedere ai file, alle chiavi di registro ed alle cartelle che appartengano all'utente che abbia lanciato tale processo.
Ciò rappresenta un interessantissimo modello per rendere sicure le applicazioni che comunichino, ad esempio, con l'Internet, notoriamente passibili di ogni tipo di rischio informatico.
Un processo a low integrity level può accedere solamente a file, cartelle e chiavi di registro contrassegnate anch'esse da un livello d'integrità basso e tutti gli oggetti da esso creati ereditano tale livello di integrità, così come i suoi processi figli saranno caratterizzati dal medesimo livello.
La modalità protetta di Internet Explorer
La modalità protetta di Internet Explorer vede il browser girare con basso livello di integrità e permette quindi allo stesso di girare con privilegi sufficienti alla navigazione (utilizzo dei socket di rete) ma insufficienti per ogni altro scopo: inibisce sia la possibilità di modifica del sistema che la possibilità di leggere e scrivere sulle aree del disco comunemente disponibili per l'utente che abbia lanciato il browser.
Tale peculiarità rappresenta, come detto più volte, la novità introdotta da Microsoft: ogni utente può lanciare un processo browser che giri con privilegi ancor più bassi che quelli dell'utente stesso.
Internet Explorer risulta quindi ingabbiato in una sandbox, che gli permette solamente azioni di lettura e scrittura da e verso oggetti con il medesimo livello di integrità (confinati in cartelle temporanee, come vedremo); in tal modo, se tutto funziona a dovere, sarà impossibile per Internet Explorer stesso installare, se "bucato", malware sia nel sistema che nella cartella utente, lanciare processi che possano leggere dati dell'utente oppure interagire con altre applicazioni da questi lanciate.
Resta chiaramente esclusa la protezione dal furto di dati memorizzati nello stesso browser, quali password salvate, cronologia o altro, in caso di exploit sul browser stesso oppure su suoi componenti aggiuntivi, in quanto la comunicazione con l'Internet non viene in alcun modo limitata dallo UAC.
La modalità protetta per Internet Explorer è attiva per default sui sistemi operativi Windows per i siti Internet, mentre risulta disattiva per le rimanenti aree Intranet e siti attendibili. Il comportamento può esser modificato mediante il menu di IE ottenibile da Strumenti > Opzioni Internet > Sicurezza.
Usabilità della modalità protetta – separazione dei privilegi
Ad IE sono permesse operazioni, altrimenti escluse, che coinvolgano l'interazione con l'utente, come ad esempio il salvataggio delle pagine HTML in una qualsiasi posizione del filesystem accessibile.
Dove, viceversa, sia il processo a basso livello di integrità a voler scrivere al di fuori della sandbox, questo deve palesare il suo volere all'utente visualizzando le consuete finestre di popup mediante (a livello di programmazione) le opportune chiamate di sistema. Detto altrimenti, IE può "sconfinare dalla sandbox" se e solo se è l'utente a comandare l'azione, iniziando implicitamente la stessa oppure annuendo al consueto popup nei casi dove sia previsto.
Ciò presuppone la suddivisione del programma in più processi con diversi livelli di integrità e l'esistenza di un canale sicuro di comunicazione tra essi ed esemplifica quanto sia complesso scrivere un'applicazione che possa girare in modalità protetta pur non sacrificandone l'usabilità.
Nella fattispecie, l'applicazione in modalità protetta deve includere, per sommi capi, una parte a livello d'integrità basso (ad esempio che gestisca lo scambio dati con l'Internet) ed un'altra a livello medio, detta broker. Il processo broker controlla e gestisce un dato insieme di azioni utente e comunica con il processo a low level integrity attraverso il canale di comunicazione scelto, avendo l'attenzione di trattare tutti i dati passatigli come insicuri e quindi di vagliarli nel migliore dei modi.
Modello di compatibilità
Non potendo accedere alle sottocartelle della HOME dell'utilizzatore, IE deve poter accedere a locazioni alternative per il salvataggio dei suoi file temporanei: è presente un meccanismo di intercettazione di queste chiamate di sistema e di mapping verso altre locazioni (compatibility layer); le locazioni alternative rappresentano speciali versioni a bassi privilegi del filesystem (inclusi cache, cartella dei file temporanei, cookie e cronologia) e del registro di sistema, in una sorta, appunto, di filesystem virtuale (file and registry virtualization).
Il filesystem virtuale di compatibilità è anche utilmente utilizzato affinché IE possa correttamente funzionare in presenza di estensioni (ActiveX) progettate con l'ipotesi di possedere pieno accesso alla HOME.