La bella idea del localStorage

Frutta secca / Dried fruitIn principio erano i cookie: qualcuno aveva avuto l’idea di permettere al server di salvare dei dati in locale sul browser.

A parte qualche correzione di rotta per evitare problemi di sicurezza, i cookie sono sempre rimasti relativamente innocui dal punto di vista dello spazio occupato, in quanto sono limitati a 4096 byte: hai voglia a riempire una partizione utente a botte di file di 4k…

Con HTML5 qualcuno ha pensato di aggiungere il Web Storage a JavaScript per la gestione di una serie di coppie chiave-valore da registrare lato client. Anche le analisi delle possibili implicazioni di sicurezza fatte dal W3C non prendono in considerazione la possibilità che venga riempito lo spazio libero di una partizione.

Questo perché i browser applicano dei limiti allo spazio allocabile da ciascun dominio: 2,5 Mb per Chrome, 5 Mb per Firefox e Opera e 10 Mb per Internet Explorer.

Quindi quando www.example.com utilizza il Web Storage, può alla peggio allocare 10 Mb sul disco, poca roba. Prima di arrivare ad un disk full bisogna visitare moltissimi siti e farlo velocemente prima che la gestione della scadenza dei dati del browser restituisca lo spazio occupato al file system.

Le specifiche del W3C dicono espressamente che i browser devono stare attenti a non allocare uno spazio riservato per i dati locali che provengono da www.example.com se questi dati sono associati a 0.example.com, 1.example.com, 2.example.com, eccetera. In pratica, il limite di allocazione dello spazio disco locale deve essere conteggiato per tutti i nomi *.example.com e non per ciascuno di essi.

Firefox è l’unico browser che, al momento di scrivere questo articolo, onora questa direttiva.

Esiste, ovviamente, un sito che dimostra questa vulnerabilità: FillDisk.com, un sito creato da Feross Aboukhadijeh.

ATTENZIONE! Se visitate quel sito con un browser diverso da Firefox potreste vedere calare lo spazio sul disco, che può essere liberato premendo un pulsante ben in vista. Il sito suona anche una canzone, quindi abbassate il volume degli altoparlanti. È disponibile anche il sorgente dello script utilizzato, quindi c’è la concreta possibilità che qualche buontempone lo implementi sul proprio sito. (via Naked Security)

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Spazio per un commento