En el último tiempo se ha observado un incremento en el tipo de vulnerabilidad Cross Site Scripting. Esta clase de falla muchas veces pasa desapercibida por los diseñadores de los sitios web a la hora de codificar sus portales, y por lo tanto no estipulan este tipo de ataque y cuál es su alcance en caso de que se explote exitosamente.
En esta semana se han descubierto varios sitios web de entidades de gran jerarquía con esta clase de vulnerabilidad. En la mayoría de los casos el tipo de vulnerabilidad es de XSS no persistente. Puntualmente, un atacante puede adulterar un enlace web para incorporar código malicioso y mediante técnicas de Ingeniería Social obtener beneficios de la víctima. Un ejemplo claro es la adulteración del enlace para extraer la cookie de sesión del usuario.
Sin embargo existen casos de mayor gravedad, es decir, vulnerabilidades de tipo XSS persistente. Esta es la situación de una de las mayores empresas de Internet cuya plataforma de blogging no filtra correctamente los comentarios que se realizan, lo que permite, por ejemplo, insertar una etiqueta del tipo iframe dentro del código del sitio. De esta manera el código del portal es modificado de manera permanente y no es necesaria la adulteración del enlace ni el uso de Ingeniería Social para explotar la vulnerabilidad de manera exitosa.
En lo que concierne a XSS no persistente, para prevenir este tipo de ataque, el usuario hogareño debe prestar especial atención a la hora de acceder a enlaces acortados. Sólo se debe ingresar si quien lo publica es conocido o si proviene de un sitio de confianza. En el caso de enlaces completos, se debe observar si el enlace es demasiado largo y si contiene etiquetas de código, como por ejemplo <form>, <script> o el ya mencionado <iframe>, entre otras.
En lo que respecta al diseñador de sitios webs, es recomendable que contemple en el diseño la existencia de este tipo de vulnerabilidad. Para ello se deben seguir algunas buenas prácticas:
- Si se utiliza base de datos, evitar que se pueda realizar más de una consulta en el mismo comando.
- Filtrar el código HTML que se le permite introducir a los usuarios (foros, blogs, etc).
- Filtrar meta-caracteres.
- En caso de ser posible, someter al sitio web a pruebas con herramientas automatizadas como por ejemplo XSSER (Cross Site "Scripter") , XSSDetect, entre otras.
- Moderar el uso de Javascript.
Para asegurar un buen grado de seguridad en los sitios web en lo que respecta a cross site scripting, lo ideal es seguir las buenas prácticas a las hora de implementar los portales y estar conscientes y alertas a la hora de acceder a los enlaces.
Fernando Catoira
Analista de Seguridad