sábado, 10 de abril de 2010

0-day: Inyección arbitraria de parámetros a través de Java Deployment Toolkit

Tavis Ormandy, reputado investigador y empleado de Google, ha publicado un aviso de seguridad en la lista de Full Disclosure donde describe un método para inyectar parámetros arbitrarios a través de Java Deployment Toolkit.

Se trata de un 0-day que podría permitir a un atacante remoto ejecutar una aplicación java arbitraria, desde una ubicación controlada por el atacante y sin más restricciones que las aplicadas a una aplicación java lanzada por el propio usuario.

Java Deployment Toolkit provee de un objeto Javascript que facilita a los desarrolladores Java el despliegue de aplicaciones abstrayendo las particularidades de cada navegador y versión del JRE instalado por el usuario.

El Java Deployment Toolkit viene incorporado y se instala por defecto en el JRE a partir de la actualización 10 de la versión 6. Para Internet Explorer es un objeto ActiveX a invocar y para los navegadores que lo soporten es un plugin de arquitectura NPAPI asociado a un tipo MIME (en realidad hay dos versiones del tipo MIME asociado, ya que se actualizó la denominación haciéndolo más descriptivo).

Una vez cargado, el objeto Javascript "deployJava" ofrece una serie de métodos que, como ya se ha comentado, facilitan al desarrollador el despliegue de aplicaciones en el cliente. Entre estos, Ormandy descubrió que el método "launch" no valida correctamente la URL pasada como parámetro.

Dicho parámetro debería contener una cadena con una URL hacia un archivo .jnlp, que contiene información para el despliegue de una aplicación Java Web Start. Sin embargo, al no ser validada correctamente, se pasa tal cual a "javaws" (básicamente el ejecutable que carga la aplicación Java Web Start).

javaws admite entre sus parámetros una opción '-J' para pasar argumentos a la máquina virtual, Ormandy en su prueba de concepto usó el parámetro de la máquina virtual "-jar", que insta a la misma a ejecutar una aplicación Java empaquetada en un jar. Ormandy usó una ruta UNC hacia un jar que lanza la calculadora de Windows (el HelloWorld en la explotación de vulnerabilidades).

Se da la circunstancia de que el investigador español Ruben Santamarta tenía conocimiento del 0-day semanas antes de la publicación por parte de Ormandy. Santamarta incluso llegó más lejos descubriendo adicionalmente dos parámetros de línea de comandos no documentados que soportan los ejecutables "java.exe" y "javaws.exe", máquina virtual y Java Web Start respectivamente, y que permiten la inyección de una dll remota.

En este momento Oracle, la ahora propietaria de toda la tecnología de Sun tras su compra, no se ha pronunciado de manera oficial y no existen recomendaciones del fabricante. Ambos investigadores ofrecen indicaciones para mitigar las vulnerabilidades en sus respectivos avisos.


David García
dgarcia@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada