30 mayo 2009

WOOE: Write Once, Own Everyone

Hace seis meses se reportó una vulnerabilidad en Java [CVE-2008-5353] que estaba relacionada con la deserialización de determinados objetos, permitiendo a un atacante remoto eludir totalmente el sandbox de la JVM, y ejecutar código en el sistema de la víctima haciendo uso de sus privilegios.

Esta vulnerabilidad afectaba a diversas plataformas y navegadores (Firefox, IE6, IE7, IE8, Safari, MacOS X, Windows, Linux y OpenBSD) pudiéndo ser explotada por un atacante haciendo que a la víctima visite una página web y cargue un Applet malicioso, llegándole a conceder permisos de lectura/escritura en archivos y ejecución de aplicaciones locales.

Desde el momento en el que se reportó esta vulnerabilidad, Sun parcheó el problema y esperábamos que Apple lo solucionará también, pero en el reciente Security Content celebrado el pasado 14 de mayo aún no han reportado ninguna solución al respecto, y Mac OS X sigue pidiendo a sus usuarios que desactiven los Applets de Java en los navegadores como "medida" para evitar este tipo de ataque.

Hay que destacar que Java está disponible en más del 80% de los navegadores web, lo que la convierte en un blanco jugoso para los atacantes. Además el mecanismo de actualización de Sun no está vinculado a la actualización del sistema operativo. Por otro lado, muchos usuarios y empresas actualizan periódicamente sus parches de Microsoft y no actualizan este tipo de software.

Por otra parte, estas empresas utilizan aplicaciones web o software de Java que dependen de una determinada versión de Java, y actualizarla puede resultar tedioso, ya que puede afectar a la funcionalidad de alguno de sus procesos. Quizás esto pueda ser la razón por la que las actualizaciones Java en Apple son tan poco frecuentes.

Lo importante en todo esto, es que encontrar una vulnerabilidad pura en Java u otro lenguaje multiplataforma, significa que el exploit podría ser 100% fiable y funcionaría en todas las plataformas, arquitecturas y en todos los navegadores.

Otro caso es el de .NET que hace uso de Mono para ejecutarse sobre las plaformas Linux, y explotar una vulnerabilidad en .NET no sólo afectaría a los ususarios de Windows, sino que otras plataformas se verían afectadas. Lo mismo ocurre con los lenguajes de scripting, encontrar una vulnerabilidad genérica podría afectar a varias plataformas.

Desde que los desarrolladores de aplicaciones web apuestan por determinados lenguajes para que sus aplicaciones puedan ser ejecutadas en todo tipo de plataformas y navegadores, se abre la caja de pandora a las vulnerabilidades de tipo client-side y sobre todo si un sólo exploit puede afectar a navegadores y plataformas por igual. El concepto WOOE (write once, own everyone) levantará muchos quebraderos de cabeza de ahora en adelante.

[+] Noticia vista en cr0g blog