Una vulnerabilidad presente en el framework de desarrollo de aplicaciones web Ruby on Rails fue explotada por atacantes para lograr la ejecución de archivos maliciosos en forma remota.

Si bien la vulnerabilidad había sido identificada varios meses atrás, y se había lanzado una actualización de seguridad que corregía el problema, varios servidores que utilizan esta plataforma, y que no contaban con dicha actualización, pudieron ser vulnerados para acoplarse a una botnet controlada por criminales.

Ante el descubrimiento de vulnerabilidades, errores de programación, o pequeñas mejoras que se quieran introducir a una aplicación, los desarrolladores proveen actualizaciones que atacan los problemas identificados. Así, en enero del presente año, la comunidad de Ruby on Rails se vio en la necesidad de contar con una actualización que corrigiese un error de seguridad clasificado como extremadamente crítico. Si bien la actualización fue puesta a disposición del público en general, por varios motivos como pueden ser la imposibilidad de actualizar en ese momento (por estar en pleno ciclo de desarrollo de una aplicación, por ejemplo), o incluso el desconocimiento de la existencia de la actualización, todavía existen servidores vulnerables al día de la fecha.

La vulnerabilidad, conocida con el identificador CVE-2013-0156, está relacionada con el parseo de parámetros bajo Ruby on Rails. El código que se encarga de esto permite que las aplicaciones conviertan en forma automática strings a otros tipos de datos, lo cual brinda mucha flexibilidad, pero trae aparejados algunos problemas si no se consideran ciertas situaciones. Particularmente, Ruby on Rails soporta conversiones que permiten obtener Símbolos o parsear tramas YAML, lo cual no es deseable con datos provistos directamente por el usuario, ya que se puede lograr la ejecución de comandos no autorizados por el dueño de la aplicación.

Según analiza el investigador Jeff Jarmoc en su blog personal, la vulnerabilidad fue atacada mediante la ejecución de comandos que programan tareas utilizando el demonio cron, disponible en distribuciones basadas en Linux. Estas tareas programadas realizaban la descarga, compilación y ejecución de código malicioso.

El archivo generado es un ejecutable que intenta establecer un canal de comunicación con un servidor de IRC, mediante el cual queda a la espera de instrucciones. Por medio del mismo, puede descargar otras aplicaciones maliciosas a la máquina infectada, con vectores de ataque específicos, brindando así a los atacantes la posibilidad de conformar botnets con todos los servidores vulnerados.

Si bien en este caso resulta muy curioso el hecho de que la vulnerabilidad fue explotada cuatro meses después de haber sido identificada y tratada, los exploits pueden aparecer antes de la correspondiente actualización. Es por ello que no podemos dejar de enfatizar la importancia de mantener todas nuestras aplicaciones actualizadas, de acuerdo con las buenas prácticas de seguridad informática.

Matías Porolli
Especialista de Awareness & Research