miércoles, 29 de octubre de 2003

Vulnerabilidad en la JVM de Sun

Se ha descubierto una vulnerabilidad en la implementación de la máquina virtual Java (JVM) de la compañía Sun. Dicha vulnerabilidad
permite la creación de un applet que esquiva completamente las restricciones del sandbox.

La vulnerabilidad se debe a que las comprobaciones del cargador de clases no son suficientes respecto al acceso a paquetes. De hecho,
debido a un error lógico en la implementación del método loadClass de la clase sun.applet.AppletClass, es posible cargar cualquier clase en
la máquina virtual sin tener que realizar una llamada al método checkPagkageAcess del Security Manager.

La técnica consiste en sustituir los '.' por '/' a la hora de realizar el nombrado dentro del árbol de un paquete. En condiciones normales, por política estándar de seguridad, un acceso al paquete 'sun.' provocaría una excepción de seguridad. Sin embargo, la comprobación se hace verificando esos '.', así que debido a que de forma interna se utiliza también el carácter '/' para acceder a diferentes partes del árbol, se podría hacer una llamada a 'sun/paquete_arbitrario/clase_arbitraria' sin que se active el anteriormente nombrado mecanismo de seguridad.

Esta vulnerabilidad permitiría la creación de applets maliciosos que pueden saltarse completamente las restricciones del sandbox. Se han
realizado experimentos con códigos de 'prueba de concepto' que han tenido éxito explotándola en navegadores como Netscape 6 y 7 (además
de Mozilla) que utilizan versiones vulnerables de dicha máquina virtual. Las versiones vulnerables (en el SDK y JRE) son 1.4.1_03 y
anteriores, 1.3.1_08 y anteriores, y 1.2.2_015 y anteriores.

Ya que la vulnerabilidad afecta a un componente tan importante, es conveniente reseñar que este problema puede afectar potencialmente a
todos los usuarios que utilicen este plugin en sus navegadores. Además de los anteriormente nombrados, otros como Opera y Internet Explorer
podrían verse afectados, aunque no se ha confirmado.

La compañía Sun fue informada de este problema a principios de junio de este año, y los ha corregido en las últimas versiones publicadas
del SDK y JRE. La dirección para descargarse una versión actualizada del plugin para plataformas Windows, Linux, Solaris y Macintosh es la
siguiente:
http://www.java.com/es/download/manual.jsp


Julio Canto
jcanto@hispasec.com


Más información:

A Vulnerability in JRE May Allow an Untrusted Applet to Escalate Privileges
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert/57221