martes, 6 de abril de 1999

Grave vulnerabilidad en JAVA

Karsten Sohr, de la universidad de Marburg, en Alemania, ha descubierto
un defecto de seguridad muy grave en varias versiones actuales de
las máquinas virtuales de Java, incluyendo JDK 1.1, Java 2, y Netscape
Navigator 4.x. El defecto permitiría a un atacante, a través de páginas
webs con applets, controlar la máquina de los visitantes hasta el punto
de poder leer o borrar ficheros.
La seguridad en Java se divide en dos grandes bloques. Por un lado
tenemos al compilador, que tiene como tarea convertir el código fuente
de Java a los ficheros de clases. En el otro lado tenemos a la máquina
virtual de Java, que es la encargada de leer esas clases y asegurar que
se ejecute en un entorno cerrado de la memoria donde no afecte a la
seguridad del sistema.

Los compiladores de Java tienen como principal misión la no utilización
de tipos o métodos ilegales en el código. Otro elemento que incluye el
compilador es un byte de comprobación o verificación. Las máquinas
virtuales de Java, al cargar un applet en memoria, comprueban mediante
este byte que se cumplen las reglas de seguridad. Esta medida previene
de parámetros no válidos, conversiones ilegales de datos, desbordamientos
de pilas, etc.

El defecto, causa de esta vulnerabilidad, se encuentra precisamente en
el componente de la máquina virtual de Java que verifica el byte de
comprobación. Bajo algunas circunstancias el verificador no puede controlar
todo el código que se carga en la máquina virtual. Explotar este defecto
permite que el atacante ejecute código que no se ha verificado.

En este punto se puede aplicar un ataque conocido como "confusión de tipos",
que consiste en crear dos punteros al mismo objeto con etiquetas de tipo
incompatibles. Cuando esto ocurre, el applet puede escribir en esa dirección
a través de un puntero y leerlo a través del otro, con lo que evita las
reglas y la seguridad de la máquina es violada.

El ataque ha sido llevado con éxito contra las siguientes plataformas:

JDK 1.1.5 (Solaris)
JDK 1.2beta4 (Solaris)
JDK 1.1.6 (Solaris)
JDK 1.1.7 (FreeBSD)
JDK 1.2 (NT)
JDK 1.1.6 (NT)
Symantec Visual Cafe Version 3
Netscape 4.5 (FreeBSD)
Netscape 4.5 (NT)
Netscape 4.05 (NT)
Netscape 4.02 (Solaris)
Netscape 4.07 (Linux)

Microsoft Visual J++ 6.0, así como Internet Explorer, no están afectados.

Más información:
Bugtraq
Sun


Bernardo Quintero



No hay comentarios:

Publicar un comentario en la entrada