Fuente: INTECO

Fecha de Publicación: 2009-12-30 12:45:00

Sistemas Afectados

Sitios web con el sistema de gestión de contenidos Joomla! que usen las siguientes extensiones:

  • BreezingForms 1.6.5 (anterior a 9/11/2009) y anteriores
  • FacileForms 1.4.7 y anteriores

Descripción

El equipo de INTECO-CERT ha descubierto una vulnerabilidad de tipo Cross-Site Scripting (XSS) en una extensión para creación de formularios en Joomla!. Es posible inyectar código Javascript a través del parámetro “Itemid” en cualquier formulario creado con estas herramientas.

Impacto

Un atacante podría ejecutar código Javascript en el navegador de la víctima, dentro del contexto de la página vulnerable. Esto permite el robo de cookies, secuestro de sesión, modificación del contenido (para realizar phishing), además de servir como herramienta para ataques complejos a redes internas.

Solución

Para desarrolladores:

  • Los clientes de la versión comercial, actualizar a la versión más reciente de BreezingForms (1.7.0).
  • Si se utiliza la versión libre de BreezingForms, descargar la versión 1.6.5 posterior al 9/11/2009, ya que se ha solucionado el problema a pesar de mantener el número de versión.
  • Actualmente no existe un parche para FacileForms que solucione el problema, pero es posible trasladar la solución cambiando unas líneas de código en la instalación vulnerable. El proceso sería el siguiente:
    • 1. Descargar BreezingForms 1.6.5 posterior al 9/11/2009 y extraer el contenido, en concreto el fichero facileforms.class.php
    • 2. Abrir el fichero facileforms.class.php en la instalación del FacileForms (normalmente en <raiz_joomla>/components/facileforms/)
    • 3. Buscar la función saveOtherParam($name) y sustituir su contenido por el equivalente del archivo correspondiente a BreezingForms 1.6.5 o posterior

Para los usuarios se recomienda utilizar complementos para el navegador que limiten la ejecución de código Javascript a no ser que el usuario lo permita explícitamente. También pueden mitigar los efectos de las vulnerabilidades XSS en general las medidas de seguridad específicas de las nuevas versiones de navegadores.

Detalle

Los componentes BreezingForms y FacileForms, en el que está basado el primero, son extensiones para crear de manera gráfica formularios y publicarlos en Joomla!. Definen una infraestructura para incluir código javascript (típicamente para validación de campos en el cliente) y php (para tratar la información después del envío) en los formularios. Además tiene una BBDD propia en la que se almacena la información que se introduce en los formularios.

Ambas extensiones sufren una vulnerabilidad de ejecución de secuencias de comandos en sitios cruzados (Cross-Site Scripting o XSS). El fallo permite inyectar código HTML y Javascript a través del campo “Itemid” que se envía oculto (input de tipo “hidden”) en todos los formularios creados con estos componentes, introduciéndose el contenido del parámetro sin filtrar en la respuesta que se le envía al usuario.

Así, si un atacante consigue que un usuario haga una petición GET o POST al sitio vulnerable con los parámetros que elija, el navegador de la víctima recibirá el código Javascript malicioso y lo ejecutará como si viniese de la página legítima. Esto se puede conseguir persuadiendo al usuario para pulsar en una URL que contenta los parámetros manipulados (GET) o bien dirigirlo a un formulario auto-enviado mediante Javascript que realice la petición manipulada al sitio vulnerable (POST).

Este es un ejemplo de petición maliciosa:

https://(dominio_afectado.es)/url/index.php/es/formulario?ff_form=12&option=com_facileforms&Itemid=<a href="about:<script>alert('XSS');</script>">&ff_contentid=&ff_applic=&ff_module_id=&ff_status=0&ff_message=OK

La vulnerabilidad tiene asociada la identificación candidata CVE-2009-3741.