sábado, 19 de octubre de 2013

Java... o cuando la seguridad no determina lo que debemos proteger

Hablando de seguridad, el lenguaje de programación Java (y su correspondiente máquina virtual) ha estado por años en el ojo de la tormenta, con un incremento sustancial en el número de vulnerabilidades reportadas, así como aquellas consideradas de alto riesgo (que reportan un puntaje de 7.0 o mayor, según el sistema CVSS). Bajo este escenario, dos preguntas saltan a la mente de un investigador/especialista de seguridad: (1) es seguro utilizar este lenguaje de programación al desarrollar aplicaciones, especialmente para aquellas que son utilizadas a través de una red o el Internet? (2) es el incremento en vulnerabilidades el resultado del creciente interes de atacantes, debido a la popularidad de Java?

Veamos las estadísticas. Desde 2008, se han encontrado 384 vulnerabilidades al lenguaje Java. En comparación, sólo se reportaron 51 de 2001 a 2007. Aún más preocupante, el número de vulnerabilidades de alto riesgo pasó de 22 (2001 a 2007) a 213 (desde 2008). La situación se ha tornado tan preocupante que US CERT, la entidad de los EEUU encargada de diseminar información sobre problemas de seguridad entre organizaciones no militares, ha recomendado deshabilitar Java en los navegadores web, incluso después de haber instalado la versión más reciente del lenguaje. Y empresas como Apple incluso decidieron deshabilitar Java de forma remota entre todos sus usuarios.

Fuente: cvedetails.com (Octubre 2013)

Las respuestas a las dos preguntas del primer párrafo ciertamente están relacionadas. El incremento en vulnerabilidades reportadas puede atribuirse parcialmente a la creciente popularidad de Java. Y esta situación podría claramente alejar a muchas organizaciones a utilizar el lenguaje, al considerarlo peligroso ...pero la situación es otra.

La popularidad de Java parece estar tan fuerte como nunca. El sitio web langpop.com que estudia diversos sitios relacionados con lenguajes de programación (como portales de anuncios de trabajo para programadores y repositorios de programas/código fuente), coloca a Java como el segundo lenguaje de programación más popular, detras tan sólo del lenguaje C. Curiosamente este último lenguaje también es conocido por sus problemas de seguridad, particularmente por el tema de desbordamiento de pilas o búfers.

El índice TIOBE sobre popularidad de lenguajes de programación, que existe hace más de 30 años y se actualiza mensualmente, también colocó a Java en el segundo lugar en su evaluación de Octubre 2013. De acuerdo a TIOBE, Java sólo ha ocupado las primeras dos posiciones por los últimos 11 años, como se muestra en la figura de abajo.

Fuente: tiobe.com (Octubre, 2013)

En la era del web, redes sociales, miles de millones de usuarios y 'Big Data', Java se ha convertido en un fuerte candidato a la hora de seleccionar un lenguaje de programacion. Su capacidad para producir aplicaciones que cumplan con los requisitos de escalabilidad y rendimiento necesarios en esta era, es difícil de alcanzar con otros lenguajes. La flexibilidad que ofrece por medio de su máquina virtual (JVM) para ejecutar los programas Java en múltiples plataformas y el hecho de que existen versiones código libre de la plataforma Java, hace la decisión aún más sencilla para los programadores a la hora de seleccionar.

Grandes compañías como Google, Facebook, LinkedIn, Twitter y Square, utilizan Java como parte de su estrategia para producir aplicaciones y servicios que les permita crecer y ajustarse a las demandas del creciente mercado que encuentran en Internet. Un reciente artículo de la revista de tecnología Wired, incluso habla de la segunda llegada o advenimiento de Java en la era del web. Aunque esto nos parece un poco exagerado, Java nunca desapareció, si es cierto que el lenguaje está ayudando a que empresas puedan cumplir con los exigentes requisitos de esta era.

Entonces, volviendo al tema de seguridad, que hacer con un lenguaje extremadamente popular y ventajoso pero que se encuentra en el ojo de la tormenta, por sus inherentes problemas de seguridad? La situación con Java es un ejemplo más de las limitaciones con las que contamos los especialistas de seguridad. Es iluso pensar que sólo nosotros debemos definir los requisitos y restricciones sobre las cuales diseñar y construir aplicaciones y sistemas. Somos parte de un conjunto de actores que definen estos requisitos, lo que produce un escenario usualmente complicado y no siempre claro para nuestros objetivos de seguridad. Sin embargo, y es de esperarse, que debemos actuar y ser efectivos bajo este escenario. Porque si algo es claro, es que parte de nuestro trabajo es manejar y asegurar aplicaciones escritas en Java.

No hay comentarios:

Publicar un comentario