lunes, 14 de enero de 2013

Confusión sobre la debilidad Java CVE-2013-0422


Ayer 13/ene/2013 salió un parche de Oracle para la debilidad de día cero CVE-2013-0422.

Entre ayer y hoy, han salido varios blogs que dicen que la debilidad no se ha solucionado, un ejemplo lo da Alt1040: “Oracle actualiza Java y los investigadores anuncian que la vulnerabilidad persiste”.

Efectivamente hay una confusión, y yo mismo tuve que “escarbar” para tratar de entenderle. Esta es mi interpretación, espero estar en lo correcto. Empecemos.

El ataque en Java es posible gracias a dos debilidades: una está en la clase “MBeanInstantiator” y otra en la “Reflection API” como lo dice BugTraq:
“The new attack is a combination of two vulnerabilities”.
 
“The first flaw allows to load arbitrary (restricted) classes by the means of 
findClass method of com.sun.jmx.mbeanserver.MBeanInstantiator class”.
“The second issue abuses the new Reflection API to successfully obtain and 
call MethodHandle objects that point to methods and constructors 
of restricted clases.”
 
En SoftPedia, Adam Gowdiak (el descubridor de las debilidades)  comenta:
[Adam] has told Softpedia that Oracle has addressed the flaw in the Reflection API”.
On the other hand, the second vulnerability leveraged by the latest exploit, 
the one related to obtaining references to restricted classes 
(MBeanInstantiator bug) was not addressed. Fortunately, 
this bug alone cannot be exploited by cybercriminals”.

Y aquí es donde veo un poco de claridad. Por lo que hemos leído, se requieren de dos debilidades para hacer un ataque exitoso, la de “MBeanInstantiator” y la de “Reflection API”. A la que Oracle dio solución ayer es a la segunda (“Reflection API”).

Según Adam, la otra debilidad (“MBeanInstantiator”) permanece sin resolver. Pero como él mismo dice, se requieren de las dos para un ataque exitoso:

Alone, it is not worth much. It needs another (new) vulnerability similar to 
the one patched in new Reflection API that would allow attackers to actually 
play with the restricted classes (attacker needs some way to obtain and 
call its methods in particular)”.

En conclusión, no todas las debilidades publicadas están parchadas, sin embargo con la que permanece sin solución es poco factible ejecutar exitosamente un ataque. Por lo tanto si se aplica el parche de Oracle, estaremos a salvo de este ataque que es una combinación de explotar 2 diferentes debilidades.

En mi opinión para usuarios en casa, es mejor desinstalar Java del navegador. Estoy casi seguro que no lo extrañarán. Y no faltará mucho para que exista otra debilidad de día cero que haga posible un ataque.