miércoles, 16 de enero de 2013

Ser o no ser usuario Java ¡Esa es la cuestión!

Últimamente Java, como herramienta de despliegue de aplicaciones se ha hecho tristemente célebre por una serie de vulnerabilidades que afectan su plataforma, hay mucho rumor mediático y se especula mucho sobre sus alcances, pero, ¿que tan importantes son estas vulnerabilidades?, ¿que tanto afectan al usuario de “a pie”?, ¿es tan crítica la vulnerabilidad como para prescindir del entorno de ejecución?, ¿que medidas puedo tomar al respecto?. Trataré de esbozar un poco estos y otros interrogantes.

 

Java, JDK, JRE y otros demonios

Si hay una tecnología que acumule acrónimos en cantidades sorprendentes es precisamente el ecosistema JAVA, y es que cada tecnología, cada nicho que se cubre tiene su clientela de acrónimos que pueden asustar y confundir a mas de uno así que partamos de lo principal, Java para el usuario final y Java para el desarrollador.

Una aplicación Java puede ejecutarse casi que en cualquier dispositivo, hemos visto aplicaciones Java consiente o inconscientemente, celulares, gps’s, televisores, hornos microondas y como no, computadoras, ejecutan aplicaciones Java de forma transparente para el usuario, y es que Java nace con esa premisa, fue fundado sobre los cimientos de “Escribir una vez, ejecutar en cualquier lado”, es por esta razón que el instalador del entorno de ejecución se jacta de coexistir con otros 3 billones de dispositivos, cifra que puede no ser descabellada si tenemos en cuenta en todos los aparatos en donde se puede encontrar. Ahora bien, para ejecutar una aplicación Java se necesita un entorno de ejecución, es el denominado JRE o Java Runtime Environment, este entorno proporciona todos los requisitos base para que una aplicación se ejecute en un sistema determinado (pc’s, neveras o donde sea). Algunos de estos entornos vienen embebidos en el dispositivo y no se pueden modificar o actualizar, otros, como el que instalamos en la computadora recibe constantes actualizaciones y parches que entre otras cosas, mejoran el rendimiento, añaden funcionalidades o simplemente corrigen errores.

Para el desarrollador la cosa está mas clara, empezando con la base de que el desarrollador sabe lo que hace, vemos que el el Kit de desarrollo Java o JDK por sus siglas en inglés viene con todo lo necesario para empezar a escribir aplicaciones de escritorio, applets, o lo que se nos ocurra, además contiene el propio JRE así que no es necesario descargar e instalar independientemente estas dos herramientas.

Resumiendo hasta ahora, el JRE nos sirve para ejecutar aplicaciones Java, el JDK nos sirve además de poder ejecutar las aplicaciones Java (contiene el JRE), compilar aplicaciones Java (incluye un completo set de herramientas para desarrollo).

 

Las vulnerabilidades…

Ningún sistema está completamente exento de sufrir vulnerabilidades y Java no puede ser la excepción, de hecho, la dinámica de corrección de errores para algunos casos ha sido bastante buena con correcciones muy rápidas, para otros casos no tanto y este ha sido el talón de Aquiles del equipo de respuesta de los responsables del mantenimiento de Java como plataforma, si existe un punto débil es la demora en la corrección de algunos errores que incluso llevan años, pero sin ánimo de extendernos en el tema, hablemos de la “última” vulnerabilidad detectada, se ha hecho tanto eco de ella que vamos a ver de que se trata.

La vulnerabilidad en cuestión es la CVE-2013-0422 , de la que hay que destacar varios hitos muy importantes y que a veces no son tenidos en cuenta por las personas que difunden la noticia, a veces en tono muy amarillista y alarmista, con esto no estoy diciendo de que se debe menospreciar el problema, sino que hay que tratar de dar la información de la forma correcta.

  • La vulnerabilidad afecta solo a Java ejecutándose en los navegadores (Firefox, IExplorer, Opera, etc.…) y no afecta aplicaciones de escritorio (JDownloader, jEdit, entre otras… ), tampoco afecta a servidores ni a las aplicaciones embebidas (dispositivos que corren Java de forma nativa).
  • La vulnerabilidad permite ejecutar código en los sistemas expuestos, con su consecuente riesgo
  • Para afectar, la victima potencial debe visitar páginas ( de dudosa procedencia ) especialmente diseñadas para explotar esta vulnerabilidad, el usuario promedio rara vez se encuentra con estos sitios dañinos
  • Otro probable vector de ataque, pueden ser los applets con publicidad, la verdad me molestan mucho pero para algunos usuarios pasan inadvertidos.

Teniendo en cuenta esto, la problemática que se genera con estas vulnerabilidades, debemos preguntarnos lo mas importante ¿Necesitamos Java? y la verdad es que solo lo necesitaremos cuando realmente lo necesitemos (ambiguo y confuso…). Aclaremos esto, aplicaciones comerciales como Maple incluyen su propia versión de Java, en otras palabras, vienen con su propio JRE adecuado para sus necesidades, la instalación de este JRE es transparente al usuario y solo es utilizado cuando usamos, en este caso, Maple. Netbeans por su parte nos pide tener instalado un JDK, el oficial proporcionado por Oracle, así que para instalar Netbeans debimos haber instalado a Java con anterioridad, necesitamos Java para algo y lo instalamos.

Entonces, ¿que hacer?, bueno, llegamos al punto crucial de todo el tema, y es que partiendo del hecho de que todo sistema es potencialmente vulnerable, debemos cambiar nuestro modo de pensar y adquirir hábitos que minimicen estos problemas, entre las buenas prácticas que podemos hacer encontramos:

  • Desinstalar Java… Jajajaj, es broma, para nada estos es estrictamente necesario, aunque siempre he pensado que si algo no necesitamos, no debería habitar en nuestros sistemas, sin embargo, alrededor de Java podíamos pensar en una cultura de mantenimiento, actualizar Java es buena idea, y más cuando estas actualizaciones corrigen errores, siempre es buen hábito actualizar nuestro sistema y aplicaciones a sus versiones mas recientes o corregidas.
  • Las últimas versiones de Java permiten deshabilitar el plugin de los navegadores de una forma rápida y efectiva, a través de su propio panel de control, ante la alarma, deshabilitar  el plugin debería minimizar el riesgo a punto de desaparecer.
  • Antivirus, en Windows es un mal necesario, personalmente hace mucho que no uso antivirus, pero es mi caso particular, tener un buen antivirus y mantenerlo actualizado puede protegernos de muchas amenazas.

Al final la responsabilidad termina recayendo en el usuario, y es que la vulnerabilidad mas importante de todo sistema siempre el usuario, en el recaen las funciones de salvaguardar las credenciales de acceso, el mantenimiento de los sistemas, la instalación de aplicaciones y un largo etcétera que puede verse afectado en cualquier momento y por cualquier problema, convertirnos en usuarios responsables hará que nuestros sistemas se ejecuten apropiadamente y libres de riesgo.

Enlaces de interés:

Alerta de seguridad: https://blogs.oracle.com/security/entry/security_alert_for_cve_2013

Información sobre la vulnerabilidad http://www.infosecurity-magazine.com/view/30165/another-day-another-java-0day-exploit-in-the-wild/

No hay comentarios.: