Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas

07 febrero 2013

Keep calm and run this applet

Me imagino como escenario el bunker secreto de Oracle, en algún desierto inhóspito de Nevada. 

En la mesa, muffins decorados con substancias de alto contenido calorico de forma cremosa, grandes cantidades de cafe insipido y unas carpetas azulgrana recién impresas.

El objetivo de la reunión... terminar con la golpiza mediática que reciben diariamente por su gran cantidad de vulnerabilidades.

Con el pasar del tiempo, la discusión se va poniendo cada vez mas caliente. Hay quienes sugieren incrementar el presupuesto de seguridad, otros acallar las voces de los investigadores ya sea contratándolos (el Caso Sami Koivu) o utilizando métodos menos ortodoxos. Inclusive, un desarrollador que lleva años en la empresa, sugiere la estrámbotica idea de implementar una SDL, pero rápidamente, se llama al silencio frente a las miradas atónitas de sus compañeros.

Quien parece ser el jefe, sentado en la punta de la mesa, se pone de pie, se acomoda la corbata y dice firmemente "Mañana la actualización de Java comienza con un nivel de seguridad Alto".

Puede ser que algo así haya ocurrido, o no. Lo cierto es que a partir del update 11 de Java 7, todas las instalaciones venían con ese nivel de seguridad. Y esto, traducido los que nos dedicamos a la seguridad ofensiva significa "Los applet de Java no corren ya de forma silenciosa", o por lo menos, eso creíamos....

La cuestión es que si uno ingresa a una web que está sirviendo un applet, recibirá un pop-up que le advierte sobre los peligros de ejecutar una aplicación de Java.


Y esto, para un atacante es casi una sentencia de muerte. 

Es verdad, posiblemente un estudio de alguna universidad perdida de Massachusetts, indique que el 65% de los usuarios siempre dan aceptar a la ventana y esto ayuda a tener mejor sexo y prevenir el cancer, pero el punto es que ya no es mas silencioso.

Es más... las vulnerabilidades de Java ya no tienen sentido, porque por el mismo precio (una ventana con un warning), uno puede auto-firmar un applet y cuando el usuario acepta la ventana, el applet corre por fuera de la sandbox. Win.

Pero dejénme que les diga algo, los investigadores somos inconformistas y por sobre todo, tenemos una cierta tendencia a estar en contra de la ley. Es por eso, que charlando con nuestro experto en Java (tm) Esteban decidimos que esto no podia quedar así. En definitiva, estábamos hablando de Java, la empresa que hace que mitre dude si agregar un digito mas al CVE por la cantidad de bugs anuales que reciben de Oracle.

Asi fue que Esteban se embarcó en el proyecto, y a los 15 minutos, ya estaba listo.

Bug? Característica? Bochorno?

Posiblemente todos juntos. El gran punto a tener cuenta es que el cambio de nivel de seguridad era la gran novedad de esta release. El mundo de la seguridad se focalizó por un instante en esto, y en las consecuencia que esto traería.
Lo que nadie esperó, y muchos menos nosotros, es que fuese tan simple bypassearlo.


Lo primero que notarán, es que un applet se puede inicializar de dos formas distintas. A través de un objeto serializado (variable str1) o a través de CODE (variable str2), como lo muestran las líneas 7 y 8.

Si uno sigue la forma habitual de servir un applet, a traves de CODE, notará que en la linea 41 se llama a fireAppletSSVValidation() que es la función encargada de desplegar el pop-up de advertencia y largar una horrible excepción en el caso que no se acepte ejecutar el applet.

Y ahora, es cuando el lector sagaz se pregunta "Y si seguimos el code-flow de un objeto serializado?" y es también, cuando ese mismo lector se golpea contra su escritorio en rápidos intervalos.

Porque es así, Java se olvidó completamente de llamar a fireAppletSSVValidation para un objeto serializado. Por esto mismo, es que el fix que largó Java hace unos días simplemente agrega una llamada a esta función y nada mas.

Si quieren probarlo en sus casas, pueden levantar su applet (previa serialización) de la siguiente forma:


 <embed object="object.ser" type="application/x-java-applet;version=1.6"> 


¿Es este el final de Java? No lo creo, en base a nuestra experiencia de años desarrollando exploits para CANVAS, siempre hay una forma mas de explotar oculta, sólo es cuestión de saber encontrarla.

Nico Waisman


Leer más...

28 agosto 2012

Se ha descubierto una grave vulnerabilidad en Java Runtime Environment (JRE) versión 1.7 y posterior que permite a un atacante la ejecución de código remota en sistemas cliente que visiten una página web especialmente formada.

Si bien es algo a lo que estamos acostumbrados, tanto en aplicacipnes de Adobe, como también en este producto de Oracle, esta vez la gravedad recae en que se conocen demasiados detalles de la vulnerabilidad, se está utilizando de manera masiva, y parece ser que Oracle tardará unos días (ya demasiado tarde) en publicar un parche que corrija la vulnerabilidad.

Esta vez, la rama de JRE afectada corresponde con la 1.7, por lo que los usuarios de la versión 1.6 y anteriores no se encuentran afectados. Si bien en un primer momento se pensaba que únicamente eran vulnerables los sistemas Windows, desde Rapid7 han desarrollado ya un módulo para Metasploit (disponible en la última actualización del framework) cuyos payloads generados han funcionado en Mozilla Firefox sobre Ubuntu y Safari sobre OS X 10.7.4. Para conocer todos los detalles, si bien ya hay multitud de posts que realizan análisis, uno recomendado es el de DeepEnd Research, escrito por Andre' M. DiMino y Mila Parkour.

De momento, la única recomendación posible (y tajante como ella sola) es deshabilitar por completo Java de nuestros navegadores hasta nueva orden (hasta que Oracle nos deleite con un parche).

Vamos a dar un repaso por los navegadores más utilizados para saber cómo deshabilitar Java y poder así, navegar tranquilos sin permitir que millones de personas jueguen con nuestros PCs:

- Cómo deshabilitar Java de Internet Explorer
1) Menú de Herramientas (Tools) -> Opciones de Internet (Internet Options)
2) Pestaña Programas (Programs) -> Gestionar complementos (Manage Add-ons)
3) Seleccionar Java Plug-in y deshabilitar (disable)
4) Hacer clic en Aceptar (Ok), y de nuevo Aceptar (Ok)

- Cómo deshabilitar Java de Mozilla Firefox
1) Menú de Herramientas (Tools) -> Complementes (Add-ons)
2) Seleccionar el panel Plugins
3) Hacer clic en elementos cuyo nombre sea Java Plug-in o Java Applet Plug-in. Según el entorno, sistema operativo y versión, el complemento puede venir con un nombre u otro.
4) Hacer clic en el botón "Deshabilitar" (Disable)

- Cómo deshabilitar Java de Google Chrome
1) Accedemos al menú de plugins escribiendo "chrome://plugins/" en la barra de direcciones.
2) Buscar el complemento Java y hacer clic en "Deshabilitar"

- Cómo deshabilitar Java de Safari
1) Acceder a Preferencias -> Pestaña "Seguridad" (Security)
2) Desmarcar la opción "Habilitar Java"

Ahora, ya nos podemos sentir un poco más seguros, por lo menos hasta que se publique una actualización para esta vulnerabilidad.

[+] Users urged to disable Java as new exploit emerges (The Register)

ACTUALIZACIÓN [30-Agosto-2012 20:00]
Oracle ha publicado la actualización Java™ SE Development Kit 7, Update 7 (JDK 7u7) en la que se solucionan las vulnerabilidades del CVE-2012-4681.
Leer más...

08 abril 2012

Flashback botnet: ¿Vulnerabilidad de Java? No, de Mac OS X


He de confesar que mi motivación para escribir este post en la tarde de un domingo, es expresar mi visión ante el artículo que escribió Eduardo Arcos en el archiconocido blog de Tecnología ALT1040 "Flashback botnet: ¿Vulnerabildad de Mac OS X? No, de Java".

En él, el popular blogger ecuatoriano, culpaba a Oracle (propietario de Sun, y por ende de la tecnología JAVA) del fallo de moda que ha causado que más de 600.000 equipos con sistema operativo Mac OS X, hayan sido infectados por el troyano Flashback, exculpando a Apple del tema. Asimismo en dicho artículo, el autor afirmaba categóricamente: "Pero Mac OS X al ser basado en UNIX es sumamente seguro y por lo tanto mucho menos vulnerable".

Con estas premisas, me gustaría dar mi punto de vista sobre lo que, a mis ojos (y parece ser que ante los de los lectores de ALT1040 que dejaron sus comentarios al controvertido artículo también), es una opinión equivocada. Para empezar, y por desmitificar el título del artículo: La culpa de esta vulnerabilidad, es de Apple! ¿Por qué? pues principalmente, porque el motor Java incluido en el sistema operativo Mac OS X lo implementa Apple y no ORACLE. Es por eso que la organización encargada de publicar los parches necesarios para corregir las vulnerabilidades que surjan para este módulo es Apple, y no ORACLE.    

Apple, gracias al boom de sus equipos informáticos (portátiles, sobremesa, ipads, iphones, etc,…) ha ido ganando cada vez más cuota de mercado. Evidentemente, y por qué no decirlo, desgraciadamente, el porcentaje de mercado para los dispositivos con sistema operativo Mac OS X, es irrisoria comparada con el todopoderoso parque de PCs con Windows, distribuidos por el Mundo. Sin embargo, dada la gran aceptación de este sistema operativo por parte de un público, harto de pantallazos azules, que busca funcionalidad de serie y estabilidad en un sistema operativo de escritorio, ha levantado la bandera para que los desarrolladores de malware pongan en su punto de mira la explotación de vulnerabilidades de Mac OS X. 

Hasta hace unos años, los early adopters usuarios de Apple, vivían felices, viendo como los usuarios de Windows eran constantemente atacados por malware específico para explotar sus vulnerabilidades. ¿Se podía decir que Mac era seguro? Categóricamente NO. Lo que se podía decir es que no había virus, o la proporción era muy baja, o simplemente que sentarse a buscar vulnerabilidades para un público tan reducido no era rentable para los desarrolladores de malware. Sin embargo, y debido a esta explosión de márketing hacia Apple, los "gusanos para las manzanas" se han multiplicado y, el mejor ejemplo de que las amenazas están ahí, es que prácticamente todas las casas de software antivirus han publicado una versión específica para Mac OS X.
 
Ante este panorama, a Apple no le ha quedado más remedio que empezar a ponerse las pilas con la seguridad de sus soluciones, materia en la que no eran precisamente expertos. Cuando Windows ya implementaba tecnologías como DEP Data Execution Prevention en el Service Pack 2 de Windows XP en 2004 o ASLR Address Space Layout Randomization en aquella decepción consumidora de recursos que era Windows Vista (en Enero de 2007), Apple introducía DEP en 2006 y una implementación decente en Mac OS X Lion (en 2011). Es decir que en este sentido, Windows ha tenido una conciencia de seguridad mucho mayor que Apple a la hora de implementar tecnologías más seguras en cuanto a la ejecución de aplicaciones.

Como se puede observar con este último ejemplo en el troyano Flashback, la celeridad en el publicación de parches no es precisamente algo de lo que Apple, ni sus usuarios, podamos vanagloriarnos, habiendo sido publicado el parche para esta vulnerabilidad de JRE, por parte ORACLE, en Febrero de 2012. En este caso, hasta mes y medio después, no ha existido solución por parte de Apple. Incluso el primero de los parches, presumiblemente no debió ser todo lo acertado/fino posible por lo que Apple tuvo que re-publicar un parche para esta vulnerabilidad, al día siguiente.

Asimismo, los usuarios de Tiger y Leopard, actualmente se encuentran indefensos ante esta y otras futuras  vulnerabilidades, al haberse detenido el desarrollo de parches para dichas versiones de OS X.

Así pues, queda demostrado que la afirmación de que "Mac OS X, al ser basado en UNIX, es sumamente seguro y mucho menos vulnerable" es completamente incierta, fruto de la impulsividad de un fanboy, incondicional a una marca que, efectivamente hace dispositivos y sistemas operativos muy atractivos, muy usables, muy estables y muy funcionales,… pero cuyo nivel de seguridad es cuanto menos mejorable, al igual que el de TODOS los demás sistemas operativos, y los módulos involucrados en los mismos.

Quiero indicar que, en mi situación personal, usé Windows como sistema operativo de escritorio hasta el 2003. A partir de ahí, empecé a utilizar KDE sobre Linux, y a mediados de 2008 relegué Linux a mi uso diario en mi servidor, pasando a usar Mac OS X como herramienta de trabajo diario hasta el día de hoy, estando además muy satisfecho con sus niveles de rendimiento y usabilidad.

La seguridad es un proceso, y como tal, debe evolucionar a la vez que lo hace la propia innovación de los productos de la marca. Estoy seguro que Apple, como el gigante innovador que es, tendrá esta experiencia en cuenta y se pondrá las pilas, como hizo Microsoft en su día, para disponer de niveles de seguridad acordes con la calidad estética y funcional de sus productos.
Leer más...