Casi siempre que se habla de ataques y/o vulnerabilidades web, en algún momento el término “JavaScript” es mencionado. En este post vamos a explicar de qué se trata y por qué este lenguaje de programación es útil y al mismo tiempo peligroso, en vistas de un reciente ataque a la librería jQuery que se aprovecha de los mismos.
Páginas web estáticas y dinámicas
Los sitios que visitamos pueden ser estáticos o dinámicos. Los sitios estáticos son más simples y económicos, ya que normalmente son utilizados para describir contenidos comunes a muchas páginas, como “Quiénes somos” o “Acerca de”. En otras palabras, no permiten efectos o la presencia de aplicaciones en los mismos.
En cambio, los sitios dinámicos (web 2.0) son más complejos ya que permiten una verdadera interacción del usuario con la página. El administrador de la página puede ver en tiempo real resultados de encuestas realizadas en la misma, utilizar una consola que le permite hacer cambios y monitorear interacciones de usuarios con el sitio e interactuar con los visitantes de la página de varias otras formas.
JavaScript, herramienta útil para el usuario –y también para el cibercriminal
JavaScript es un lenguaje de programación que fue desarrollado justamente para hacer que páginas estáticas tengan un “comportamiento dinámico”. Permite ejecutar códigos directa y automáticamente gracias a su interacción con el navegador utilizado para visitar la página. De esta forma, la estructura de la página sufre alteraciones más allá de estar programada en HTML (lo cual la haría “estática).
Ahora bien, aunque esta forma de ejecutar códigos sea más atractiva para el sitio y para el usuario por cuestiones de velocidad, costos y la posibilidad de saltar pasos que muchas veces son molestos -como permitir o denegar la ejecución de ActiveX por ejemplo- sucede que para un atacante, JavaScript es ideal para hacer precisamente lo que recién listábamos como una función benigna: saltar herramientas de seguridad. Un ejemplo puede ser visto en nuestro post “Saltando herramientas de seguridad con JavaScript”, en el cual vemos un código que estuvo activo y cuando era ejecutado, lograba infectar computadoras con malware.
Otra ventaja que encuentran los cibercriminales en la utilización de JavaScript es que sus códigos pueden explotar múltiples vectores al mismo tiempo, según las características del navegador utilizado y su interacción con la página web. En otras palabras, no hace falta propagar el código a varios sitios; con tan solo estar presente en un sitio de uso masivo, es posible atacar a muchas víctimas y robar nombres de usuarios y contraseñas o capturar contraseñas ingresadas en el teclado, entre otras cosas.
Recientemente supimos de un nuevo ataque que utilizaba JavaScript para redirigir usuarios de un conocido repositorio -¡de JavaScript! Veámoslo en detalle.
El ataque a jQuery
jQuery es una de las librerías online gratuitas de JavaScript más conocidas, permite a programadores utilizar su Interfaz de Programación y ofrecer contenido para una multitud de navegadores de forma simplificada. Es básicamente utilizado por desarrolladores de sitios web para dinamizar sus páginas HTML, ya que muchos templates (plantillas) están disponibles para este propósito.
El sitio RiskIQ reportó un ataque que redirigía a los visitantes de jQuery a un exploit kit conocido como RIG. Este exploit es utilizado por atacantes para hacer que sitios legítimos infecten usuarios con malware sin que lo noten.
jQuery admite que hubo un ataque el 18 de septiembre, y que el sitio estuvo fuera de servicio para la búsqueda y eliminación de posibles amenazas. Sin embargo, también afirma que, hasta el momento, no hubo reportes de malware distribuido a través de su sitio. Como jQuery no utiliza protocolo HTTPS, la información intercambiada no está cifrada.
Si tenemos en cuenta que un 30% de todos los sitios web utilizan esta interfaz open-source, incluyendo un 70% de los 10.000 sitios más visitados en el mundo, podemos entender la magnitud del ataque que sufrió y la necesidad de mencionarlo. Por otro lado, este ejemplo nos sirve para entender cómo los cibercriminales se aprovechan de la popularidad de los JavaScripts para infectar víctimas.
Casos de ataques a software open-source como este y otros resonantes como Heartbleed, vulnerabilidad en protocolo OpenSSL que expuso más de un 60% de todos los sitios activos en Internet en su momento, resaltan la necesidad de priorizar la seguridad antes de poner a disposición herramientas públicas.
En nuestra realidad digital actual, compartir información y distribuir herramientas a terceros, más allá de hacerlo de forma gratuita, es algo que debería hacerse de forma responsable, haciendo uso de las tecnologías de seguridad existentes para evitar infecciones masivas pero fácilmente evitables.