Francesco Isernia

E-mail: isernia.francesco@gmail.com
Attualmente: Studente CdL Magistrale in Informatica A.A. 2012/2013
Tesista: A.A. 2011/2012

Introduzione

L'argomento trattato nella mia tesi è lo studio di meccanismi per proteggere la "Privacy su Internet" dell' utente finale.
Inizialmente mi sono concentrato sullo studio della nuova componente messa a disposizione dall'HTML5, il "LOCAL STORAGE".
L'HTML5 si propone come evoluzione dell'attuale HTML 4.01 :
Le novità introdotte dall'HTML5 rispetto all'HTML 4 sono finalizzate soprattutto a migliorare il disaccoppiamento tra struttura, definita dal markup, caratteristiche di resa (tipo di carattere, colori, eccetera), definite dalle direttive di stile, e contenuti di una pagina web, definiti dal testo vero e proprio.
Tra le altre cose HTML5 prevede:

  • supporto per la memorizzazione locale di grosse quantità di dati scaricati dal browser[circa 5MB], per consentire l'utilizzo di applicazioni basate su web (come per esempio le caselle di posta di Google o altri servizi analoghi) anche in assenza di collegamento a Internet.

Come vedremo in seguito tale strumento non verrà utilizzato solo per gli scopi sopra citati, ma potrebbe essere uno strumento pericoloso per possibili azioni malevoli.
Nella sezione sottostante delineerò le prime fasi di ricerca su "PRIVACY LEAKAGE"

Sviluppo Tesi

In questa sezione sono presenti le due fasi che hanno portato allo sviluppo delle "Tecniche di Privacy" sull' addon NoTrace di Mozilla Firefox :

  • Fase di Ricerca
  • Fase di Sviluppo Tecniche su NoTrace

 

"Fase di Ricerca"

I miei studi di ricerca e sviluppo comprendono l'utilizzo e lo sviluppo di nuove tecniche per un tool esistente, più propriamente conosciuto come "addon" del famoso browser Mozilla Firefox, sviluppato in ISISLab sotto il nome di NoTrace.
Procedendo per passi cercherò di illustrare il percorso che mi ha portato allo sviluppo finale delle tecniche su NoTrace.
Ho effettuato uno studio approfondito sulle tipologie di informazioni che vengono memorizzate all'interno del localStorage di Mozilla Firefox. Per visualizzare il contenuto del localStorage ho utilizzato determinati strumenti esistenti ed ho anche sviluppato alcuni algoritmi in java che effettuano il Matching delle Informazioni prelevate dai database .sqlite presenti in Mozilla Firefox oppure la Verifica delle informazioni passate attraverso i campi HTTP Header durante la navigazione.
Tra gli strumenti esistenti utilizzati ci sono:

Tra gli strumenti sviluppati da me ci sono:

  • algoritmo in java per il Matching del contenuto dei database .sqlite del browser Firefox - ( cookies.sqlite places.sqlite webappsstorage.sqlite )
  • algoritmo in java per la Verifica delle informazioni(contenuto) passate tramite campo HTTP Header REQUEST/RESPONSE
  • ...ed altri piccoli tool o classi sviluppate appositamente per la ricerca delle informazioni d'interesse!!!

Tra le estensioni Firefox sopra citate, due sono quelle più importanti:

  • Pagestats
    • L'estensione Pagestats è stata utilissima perchè dato un listato di siti, i 100 siti più popolari nelle categorie health,games,finance,travel and more sites, permette di visitarli tutti automaticamente salvando tutte le informazioni di HTTP Request e Response per ogni website.
      Oltre al salvataggio di queste info,la cosa importante è stata il salvataggio di tutte le info di navigazione per ogni sito nei database di Mozilla Firefox tra cui nel localStorage(webappsstorage.sqlite).Infatti da lì nasce l'idea del algoritmo di Matching in java realizzato, attraverso il quale confronto i 3 db di Firefox al fine di trovare le informazioni salvate durante la navigazione in [places.sqlite e cookie.sqlite] anche all'interno del localStorage [webappsstorage.sqlite].
      Ovviamente tutti questi confronti sono stati possibili grazie all'utilizzo di Navicat,dal quale ho esportato il contenuto dei db.sqlite in file db.xml, e mediante la realizzazione del Parser xml ho effettuato tutte le operazioni di match tra i tre db.xml aventi in comune il Base Domain o l'Host dal quale è partita/ricevuta l'HTTP Request/Response.

      • permette il confronto tra gli host uguali provenienti da 2 db differenti (cookies.sqlite - webappsstorage.sqlite | cookies.sqlite - places.sqlite | places.sqlite - webappsstorage.sqlite)
      • permette il confronto tra gli host uguali provenienti da 3 db differenti (cookies.sqlite - webappsstorage.sqlite - places.sqlite)

 

  • Live HTTP Headers
    • L'utilizzo di quest'estensione è stato fondamentale sia in presenza/assenza dell'utilizzo di Pagestats.
      Tale estensione salva il contenuto dell'intera HTTP Request/Response e tante altre info che per il mio studio non sono richieste; una volta ultimato il salvataggio di tutti i campi HTTP Header all'interno di un file,quest'ultimo viene utilizzato nell'Algoritmo in java di Verifica delle informazioni.
      Tale Algoritmo è stato molto utile perchè dato un set di HTTP REQUEST/RESPONSE in input mendiante file, verifica la perdita di informazioni personali all'interno dei campi HTTP.La verifica di Privacy Leakage è stata effettuata nell'algoritmo mediante il controllo di keywords particolari all'interno dei campi HTTP quali:

      • presenza di indirizzo mail @[ gmail | facebook | email | hotmail | libero ] all'interno dei campi HTTP,dato che l'utente inserisce i dati senza la consapevolezza che in alcuni casi questi ultimi vengono persi e prelevati dai vari host per statistica/generazione di "user-profile" attraverso i campi Referer o Cookie/Set-Cookie di una HTTP REQUEST/RESPONSE.
      • presenza di keywords particolari inserite dall'utente finale durante una registrazione,ricerca o prenotazione di qualsiasi servizio online:
        [ HEALTH - TRAVEL AND OTHER ]

La fase di ricerca ha portato ad una scoperta interessante, cioè il differente utilizzo del LOCAL STORAGE rispetto ai propositi per cui è nato. In pratica ho riscontrato la memorizzazione dello stesso cookie ,oltre che nel db cookies.sqlite di Firefox, anche all'interno del [LOCAL STORAGE].
Le prime ipotesi di spiegazione, per questa memorizzazione anomala dei cookie all'interno del LOCAL STORAGE, riguardano ovviamente la "PRIVACY LEAKAGE" nei confronti dell'utente finale, che non è a conoscenza di quali informazioni vengono "perse/salvate" attraverso il cookie presente all'interno del database.
Infatti nonostante il cookie venga cancellato dal database 'cookies.sqlite dall'utente finale, risiede comunque all'interno del webappsstorage.sqlite [LOCAL STORAGE]. Ovviamente tutto ciò lede la "Privacy dell'Utente Finale" in quanto viene svolto all'insaputa di quest'ultimo.
Quindi in definitiva questa prima parte del lavoro [RICERCA] è servita per capire cosa viene memorizzato all'interno di questa nuova componente HTML5 denominata LOCAL STORAGE e quali sono I DATI SENSIBILI che vengono PERSI INCONSAPEVOLMENTE dall'utente finale durante la navigazione web.
Ora nella sezione successiva mostrerò la creazione/modifica di metodi aggiunti/rivisitati all'esistente addon Mozilla Firefox NoTrace.

"Fase di Sviluppo Tecniche su NoTrace"

In questa fase, prima di operare sull'esistente addon NoTrace, ho effettuato il download e l'installazione di quest'ultimo in modo da imparare prima di tutto come è strutturato e in che modo vengono applicate le funzionalità esistenti.
Durante la fase di comprensione per lo sviluppo/modifica di un estensione Firefox, ho fatto riferimento a Mozilla Developer Network e alle varie sezioni di cui è composto per la comprensione del linguaggio Mozilla-Platform e delle sue Componenti.
Il linguaggio di programmazione utilizzato per la strutturazione delle componenti di un Addon Firefox, oltre ad usufruire delle primitive di Mozilla-Platform,utilizza anche il linguaggio di programmazione Javascript.
Una volta ultimata parte della comprensione dell'estensione Firefox NoTrace, ho iniziato ad apportare modifiche alle componenti esistenti.
Data la scoperta della memorizzazione anomala dei cookie all'interno del LOCAL STORAGE durante la fase di ricerca, il mio primo obiettivo è stato focalizzarmi sullo sviluppo di una tecnica che effettuasse l'eliminazione in "Real-Time" dei cookie che venivano memorizzati all'interno del [LOCAL STORAGE].
Quindi ho modificato tecniche esistenti e create nuove che mi permettessero di controllare se il valore del campo di:

  • HTTP REQUEST - Cookie
  • HTTP RESPONSE - Set-Cookie
  • HOST Http Request/Response == Scope(Host - LOCAL STORAGE)

fosse memorizzato anche all'interno del database[webappsstorage.sqlite] e in caso positivo effettuarne istantaneamente l'eliminazione dal LOCAL STORAGE.
Per sviluppare questa tecnica ho dovuto modificare la Componente - HttpFilter.js all'interno dell'estensione NoTrace.
Precisamente una volta visualizzata la struttura della Componente, ho iniziato a sviluppare la tecnica che viene invocata da funzioni esistenti:

    • nocookie():
      Tale Tecnica esistente,se abilitata dal Pannello Utente, consente di rimuovere il campo "Set-Cookie" negli header della HTTP RESPONSE.

 

  • no3cookie():
    Tale Tecnica esistente,se abilitata dal Pannello Utente, consente di rimuovere il campo "Set-Cookie" negli header della HTTP RESPONSE per oggetti di terze parti [oggetti provenienti da Domini diversi dall' HOST DOMAIN di HTTP RESPONSE].

Le Tecniche da me sviluppate all'interno della componente HttpFilter.js sono:

    • getCookieValue():
      Tale Tecnica è molto importante perchè preleva dall' HTTP[ REQUEST - RESPONSE ] il "Cookie name" , lo salva in un array[dato che ci possono essere più REQUEST/RESPONSE da parte dell'Host] e quest'ultimo viene restituito alla tecnica checkDBLocalStorage_Cookies(), all'interno della quale verranno eseguite le operazioni di verifica/presenza cookie.

 

    • initDBLSConnection():
      Tale Tecnica permette l'istanziazione ed il prelievo della connessione al database webappsstorage.sqlite[LOCAL STORAGE] per poter effettuare le operazioni di controllo[Query], all'interno del db. Tale funzione viene utilizzata dalla tecnica checkDBLocalStorage_Cookies().

 

    • checkDBLocalStorage_Cookies():
      Tale Tecnica permette il controllo in "Real-Time" per la presenza di Cookie all'interno del LOCAL STORAGE,che vengono settati mediante SCRIPT INTERNO/ESTERNO all'HTML prelevando il contenuto dai campi HTTP [REQUEST - RESPONSE]. Ovviamente il confronto è possibile mediante il matching tra Host Cookie e Host[Scope] LOCAL STORAGE. In caso di presenza del "cookie" all'interno del LOCAL STORAGE, tale tecnica provvede ad eliminarlo.

 

  • changeURL():Tale tecnica mediante l'utilizzo delle Regular Expression in Javascript, permette il cambiamento della URL memorizzata all'interno del LOCAL STORAGE
    da " moc.obeem.www.:https:443 " a " www.meebo.com " in modo da facilitare il "matching" tra Host COOKIE e Host LOCAL STORAGE.

Di seguito mostrerò degli "screenshot" che permetteranno la facile comprensione di ciò che viene memorizzato all'interno del LOCAL STORAGE prima di attivare la tecnica e cosa accade quando la tecnica è in azione.
Visualizzazione contenuto database cookies.sqlite e webappsstorage.sqlite[LOCAL STORAGE] - PRIMA di attivazione NoTrace e relativa tecnica:
(Clicca sul link per visualizzare risultato)
http://dl.dropbox.com/u/63894881/%40Tesi/image/contentLSTORAGE_before.png
Visualizzazione contenuto database cookies.sqlite e webappsstorage.sqlite[LOCAL STORAGE] - DOPO attivazione NoTrace e relativa tecnica:
(Clicca sul link per visualizzare risultato)
http://dl.dropbox.com/u/63894881/%40Tesi/image/contentLSTORAGE_after.png

Seminari

  • 08/06/2012

"Privacy Awareness su NoTrace"
Abstract: In questo seminario verrà presentata, in primo luogo, un'analisi sulle tipologie di "dati sensibili" persi durante la navigazione in internet ed alcuni esempi di rilievo di "Leakage Information". Successivamente sarà mostrata la realizzazione, all'interno dell'estensione Firefox NoTrace, dello strumento di "Privacy Awareness" ideato per la comprensione e la visualizzazione delle informazioni perse durante la navigazione sul web.