sábado, 2 de marzo de 2013

Llenar el disco duro con solo visitar una web


Se ha encontrado un método para, a través de las nuevas funcionalidades de HTML5, hacer que el disco duro se llene por completo con solo visitar una web. Esto podría considerarse una especie de denegación de servicio del sistema, que aprovecha la potencia que ofrece el lenguaje para otros fines.

Feross Aboukhadijeh ha creado el "HTML5 Hard Disk Filler". En realidad no es más que una manera de eludir las restricciones de tamaño de la tecnología Web Storage de HTML5 y saturar así el disco duro de información.

Web Storage está ya en todos los navegadores modernos, y permite almacenar datos en el contexto del navegador y que sean manipulados a través de JavaScript. Por ejemplo, con los comandos: localStorage.setItem("key", "value"), localStorage.getItem("key")... La diferencia con las cookies, es que  permite almacenar mucha más información. Hasta 10 megas (en teoría) frente a los 4k de las cookies y que no son automáticamente enviados al servidor. El servidor no tiene acceso a esos datos a no ser que el cliente los envíe expresamente a través de JavaScript. Hablamos de esto hace tiempo cuando se detectó que cierto malware estaba haciendo uso de estas funcionalidades para pasar inadvertido.

Web Storage permite almacenar una cantidad de megas por cada dominio. En Internet Explorer (el que más) hasta 10 megas. No se ha encontrado la forma de eludir esta restricción directamente, sino que el truco usado por Aboukhadijeh es el de utilizar muchos subdominios y almacenar información por ellos. Aunque ninguno exceda la cuota permitida, se acumulan en el disco y pueden llegar a llenarlo, saturando el sistema.

Prueba de concepto

En http://www.filldisk.com se ha colgado una prueba de concepto con bastante humor. Llena el disco de imágenes de gatos mientras suena la música del "Trololo".

Firefox es inmune y no permitirá que se cargue espacio indefinidamente. Opera preguntará una vez se exceda el límite. Chrome, Safari e Internet Explorer sin embargo, simplemente permitirán que se llene el disco.


Físicamente, los datos son almacenados en diferentes puntos según el navegador. En Chrome, aparecerán en la carpeta de usuario (en el caso de Windows %LOCALAPPDATA%\Google\Chrome\User Data\Default\Local Storage) múltiples ficheros de 5 megas, con los subdominios mencionados. Son ficheros SQLite.

En Opera los podemos encontrar en
%LOCALAPPDATA%\AppData\Local\Opera\Opera\pstorage. Al mirar el index.dat, se podrá saber dónde han ido a parar los datos.

En Safari para Windows, lo podemos encontrar en %LOCALAPPDATA%\Apple Computer\Safari\LocalStorage. Un dato interesante es que el problema funciona en los teléfonos móviles con navegador Chrome o Safari. Si un atacante utiliza esta técnica, el teléfono podría quedar saturado.


Aunque en la página se asegura que se borra el espacio de las imágenes de gatos una vez pulsado el botón, es conveniente revisar si ha quedado algún "resto" en los lugares correspondientes. En 2011 ya se advirtió que esto podría ser posible. Abusar del almacenamiento a través de subdominios. No se sabe aún si los navegadores solucionarán este problema. Por el momento, el usuario tampoco puede defenderse de forma simple, porque por ejemplo en Windows no es sencillo crear cuotas para carpetas concretas. Sí para volúmenes.

Más información:

Web page fills up hard disk

Anatomy of a "feature" - what happens if a website grabs all your disk
space?

5 Obscure Facts About HTML5 LocalStorage

El malware ya se aprovecha del HTML5




Sergio de los Santos
Twitter: @ssantosv

8 comentarios:

  1. Los navegadores tienen que implementar alguna protección contra esto. Muy delicado. Excelente nota. Este tipo de noticias, con prueba de concepto incluida, son las mejores de Una al día.

    ResponderEliminar
  2. excelente articulo y deberíamos de estar mas atento con los web site que visitamos para no ocasionar algún daño a nuestra pc

    ResponderEliminar
  3. ¿Deben existir esos subdominios para poder realizar el ataque?

    ResponderEliminar
  4. Y por eso en los sistemas Unix es habitual crear una particion para el /home (y para /tmp, /var, etc).
    Hace como unos 40 años que se sabe de problemas similares a este, pero parece que los Window$ no aprenden nunca.

    ResponderEliminar
  5. Sí, en este caso los subdominios resuelven y llevan a la web principal. Es trivial crear miles de subdominios de forma automática si es necesario.

    Es cierto que en Windows no es tan habitual crear una partición para el "home", pero es perfectamente posible y una buena contramedida en este caso, como indicas.

    ResponderEliminar
  6. Y se puede montar la particion en C:\Users\ o como? Lo pregunto por que de verdad lo desconozco.

    ResponderEliminar
  7. Dijiste "Es cierto que en Windows no es tan habitual crear una partición para el "home", pero es perfectamente posible", pero no has respondido a "como hacerlo".

    Veo que defiendes W$ con argumentos falsos, muy profesional, si.

    ResponderEliminar
  8. http://laboratorio.blogs.hispasec.com/2013/03/una-particion-propia-para-tu-home-en.html

    ResponderEliminar