Nell’internet che conosciamo oggi il browser gioca un ruolo fondamentale nella sicurezza dell’intero sistema operativo. Pagine web compromesse, exploit presenti su pagine web fittizie, sono diventate uno dei vettori principali di infezione, a causa spesso di software installato nel pc ma non sempre tenuto aggiornato – o addirittura di patch non installate del sistema operativo.

Kit pronti all’uso – capaci di confezionare in pochi minuti pagine web ad hoc ricche di exploit per le falle più note conosciute – sono in vendita sul mercato nero internazionale. Tra i nomi più famosi Phoenix, NeoSploit, Eleonore, ma l’elenco potrebbe essere molto più lungo.

Questi kit permettono di generare delle pagine web contenenti un gran numero di exploit per falle conosciute dei browser, o del sistema operativo, o di plugin quali Flash o Java, o ancora di applicazioni quali Adobe Acrobat Reader.

Per questo è sempre molto importante tenere aggiornato il proprio sistema operativo, con gli aggiornamenti di Microsoft rilasciati tramite il canale Windows Update. Per questo è altrettanto importante tenere aggiornati tutti i software installati nel sistema, perché anche questi ultimi potrebbero essere un canale tramite cui infettare il PC. Si può utilizzare un software quale Secunia PSI oppure Filehippo Free Update Checker per monitorare la presenza di nuovi aggiornamenti per i software installati nel PC.

Già facendo tutto questo – insieme ad un software antivirus e firewall chiaramente – si ridurrebbero di molto le possibilità per un attacker di infettare il PC dell’utente.

A questo ovviamente vanno aggiunte le tecniche di mitigazione degli exploit inserite in Windows Vista e 7, quali l’ASLR e il DEP – quest’ultimo già supportato in Windows XP.

Detto questo, si può guardare alla sicurezza dei browser, e volendo anche alle falle già patchate e non patchate elencate dal noto sito web Secunia.

Grazie al ballot screen di Microsoft gli utenti si sono ritrovati a dover scegliere quale browser dovesse diventare il browser principale. Firefox e Opera sono i browser considerati dalla comunità più sicuri, Internet Explorer è il più insicuro, Chrome è la novità del momento.

Anche le cifre presenti Secunia vanno a favore dei due browser più quotati del momento: solo 10 vulnerabilità per la versione 10.x di Opera, tutte già patchate, 16 vulnerabilità per Firefox 3.6.x, anche qui tutte già patchate. Sono 43 invece le vulnerabilità evidenziate in Internet Explorer 8, non tutte ancora patchate. Chrome invece è presente con 28 vulnerabilità, tutte già patchate.

Chi si affida a Firefox o Opera dunque, sa di avere in mano dei software robusti, stabili, sicuri. Ma chi si affida a Chrome o, addirittura, ad Internet Explorer 8 è un folle che non tiene alla sicurezza del proprio PC?

In realtà, sia in Google Chrome che in Internet Explorer 8 è possibile notare un’implementazione diversa dal solito browser, un’architettura a più livelli sicuramente interessante ed efficace.

Chrome sandbox

Sia Internet Explorer 8 che Google Chrome implementano di default una sandbox, un livello di protezione che avvolge il browser in modo da isolarlo dal sistema operativo e da contenere tutto ciò che avviene al suo interno. Il concetto dietro a tutto ciò è solido e parte dal presupposto che ogni programma mediamente complesso può avere delle falle. Sapendo ciò, è sì necessario cercare di scrivere sempre il proprio codice al meglio, ma è altrettanto necessario studiare un modo per arginare eventuali falle e mitigare il problema in caso vengano scoperte.

Sia Google Chrome che Internet Explorer 8 isolano ogni finestra di navigazione, creando per ognuna di esse un nuovo processo.

In Google Chrome ogni processo relativo ad ogni finestra di navigazione viene creato con dei privilegi molto limitati, partendo dai privilegi dell’account utente che ha eseguito il browser ed eliminando tutti i privilegi possibili. Facendo ciò, se anche la sessione del browser venisse compromessa da qualche exploit basato su qualche sconosciuta falla del browser, l’eventuale malware erediterebbe questi privilegi limitati. Di conseguenza il malware non potrebbe fare niente al sistema. Inoltre, per limitare ulteriormente le possibilità di attacco, ogni processo relativo ad ogni finestra di navigazione viene inserito in un job object, un particolare oggetto di Windows che permette di tenere ancor piu sotto controllo tutto ciò che avviene in quel processo, applicando ulteriori restrizioni sia in termini di performance che in termini di sicurezza.

Anche Internet Explorer 8 implementa una tecnologia simile, facendo ampio uso delle misure di sicurezza aggiunte a Windows Vista e 7. Ad ogni tab di navigazione è associato un processo inserito in un job object, per poter tenerne sotto controllo le performance. In questo caso, ogni processo di ogni finestra eredita i privilegi dell’account utente che ha eseguito il browser, tuttavia utilizza un livello di integrità basso, inferiore agli altri processi che di default hanno un livello di integrità medio.

Internet Explorer 8 protected mode

Bisogna fare una specifica sul livello di integrità. Il Mandatory Integrity Control, o MIC (o IL, Integrity Levels) è una sorta di ulteriore divisione dei permessi aggiunta in Windows Vista e 7.

Ogni processo creato dallo stesso account utente gode degli stessi privilegi che ha l’account utente in questione. Ciò significa che ogni processo eseguito dallo stesso account utente può accedere a tutti gli altri processi creati dallo stesso account, senza limitazioni di sorta. Tuttavia di default non può accedere agli altri processi creati da altri account utente (o dal sistema).

Microsoft con il MIC ha voluto fare ancora un’ulteriore suddivisione, creando altri livelli di permessi all’interno dello stesso account utente. Tutti i processi eseguiti nel sistema possono avere uno specifico livello di integrità, che può essere basso, medio, alto e sistema. Di default tutti i processi sono eseguiti con un livello di integrità medio, ma – ad esempio – i processi di Internet Explorer 8 vengono eseguiti con un livello di integrità basso.

Tutti i processi con un livello di integrità basso, seppur eseguiti dallo stesso account utente, non possono accedere ai processi con un livello di integrità superiore e, inoltre, hanno limitato accesso alle risorse del sistema.

Quindi, anche qui, un eventuale exploit in Internet Explorer 8 potrebbe far sì eseguire il malware, ma quest’ultimo verrebbe eseguito ad un livello di integrità basso, rendendolo per gran parte inoffensivo.

Non volendo scendere in tecnicismi vari, sia Google Chrome che Internet Explorer 8 sono voluti andare oltre al problema di risolvere le falle di sicurezza ma hanno voluto seguire una filosofia dell’arginare eventuali attacchi causati da potenziali falle sconosciute.

La nota negativa per quanto riguarda Google Chrome è che, purtroppo, di default esegue i vari plugin (vedi Adobe Flash Player ad esempio) al di fuori della sandbox, con i privilegi dell’account utente che ha eseguito il browser. Visto che molto spesso gli attacchi provenienti da Internet sfruttano le falle dei plugin, la logica conseguenza è che tutta la sicurezza della sandbox rischia di diventare vana. C’è un modo per eseguire Chrome mettendo in sandbox anche i plugin e si tratta di eseguire il browser con il parametro –safe-plugins. Tuttavia, visto che alcuni plugin non sono studiati per avere accesso limitato alle risorse di sistema, potrebbero funzionare non correttamente o crashare.

La nota negativa per quanto riguarda Internet Explorer 8 è che la propria sandbox fa totale uso delle tecnologie di sicurezza implementate in Windows Vista e Windows 7, per l’appunto un esempio sono i livelli di integrità. L’intera sicurezza della sandbox di Internet Explorer 8 diventa vana se il browser viene utilizzato in Windows XP, visto che le tecnologie di sicurezza utilizzate dalla sandbox sono assenti. La nota positiva è che Internet Explorer 8 permette di eseguire anche i plugin nella propria sandbox, limitando così ancor più il rischio.

La sandbox di Google Chrome invece, facendo invece ampio uso delle Access Control List, permette di essere utilizzata da Windows 2000 in poi. Ovviamente il sistema dovrebbe utilizzare il file system NTFS, visto che né FAT né FAT32 permettono controlli di sicurezza sui file.

Tutto questa architettura non è presente né in Firefox né in Opera, ma entrambi possono vantare un bassissimo numero di vulnerabilità ad oggi individuate e, di conseguenza, l’appellativo di browser più sicuri. È possibile utilizzare plugin, ad esempio in Firefox, per limitare l’esecuzione degli script nelle pagine web, rendendo però la navigazione più difficoltosa e richiedendo ad un utente un passaggio in più che non tutti magari comprendono.

Il fatto che possano essere stati individuati exploit – ad esempio in Internet Explorer 8 – non dovrebbe far correre immediatamente in allarme. Magari è possibile far eseguire un malware all’interno di una sessione di navigazione di Internet Explorer 8, ma è già molto più difficile che il malware possa riuscire ad uscire dalla sandbox. Lo stesso concetto vale per Google Chrome.

Dire che Internet Explorer 8 non è sicuro perché si porta sulle spalle la non felice eredità di Internet Explorer 6 è sbagliato ed è un preconcetto che andrebbe rivisto.

Firefox e Opera sono di default ottimi, ma non isolano ogni tab di navigazione e l’unico processo è eseguito con i privilegi dell’account utente che lo ha lanciato. Di conseguenza eventuali malware, se ci fosse una falla in uno dei due browser, potrebbe girare in disturbati nel sistema – ad un livello di permessi che l’account utente ha. Chrome e IE8 invece creano intorno ad ogni finestra di navigazione un layer di protezione aggiuntivo, che rende tutto molto più difficile.

Se si vuole utilizzare Firefox o Opera con una sandbox, è possibile ricorrere a programmi di sandbox di terze parti, quali ad esempio Sandboxie, capace di creare un layer di protezione simile a quello creato da Google Chrome e Internet Explorer 8.

* Firefox dalla versione 3.6.4 introdurrà la separazione dei plugin dal processo di navigazione del browser. Un processo figlio ospiterà i plugin quali Flash, in modo tale da evitare di bloccare l’intera navigazione se uno dei plugin dovesse bloccarsi. Tuttavia anche il plugin container viene eseguito con gli stessi privilegi dell’account utente che ha eseguito il browser. Di conseguenza se dovesse scoprirsi una falla in flash, un eventuale malware potrebbe approfittarne