Sobre el uso de Java 6 y su próximo End of Life
Recientemente os recordábamos en el portal que en tan sólo seis meses Java 6 llega a su "End of Life" (EOL), por lo que a partir de esa fecha o bien uno compra Oracle Lifetime Support, o bien migra a Java 7, o se mueve a un JDK diferente del de Oracle. O, la última opción, hace de kamikaze y sigue usando una versión de Java que ya no va a tener ningún tipo de parche de seguridad.
Coincidencias de la vida, esta semana Jelastic ha publicado una estadística relativa al uso de Java 6 y Java 7 en su servicio:
El porcentaje de uso de Java 7 es igual en Europa y a nivel mundial (un 17%). Dentro de nuestra comunidad Este porcentaje es todavía menor: ligeramente inferior a un 9%. Éso se desprende de la encuesta en la que nos preguntábamos qué ibais hacer cuando en julio llegue el EOL de Java 6; sólo 33 personas de las 384 que respondieron a la pregunta afirman haberse movido ya a Java 7. La respuesta más común, como podéis ver, es que lo que lo que iban a hacer sería moverse a Java 7. No obstante, me preocupa bastante toda la gente que afirma que va a seguir usando el Java 6 de Oracle. En los tiempos que corren, es bastante arriesgado tener un JDK/JRE sin parchear.
Estos son los resultados de la encuesta de javaHispano:
Pagar por Oracle Lifetime Support para seguir usando Java 6 | 2 | 1% | |
Seguir usando Java 6 sin pagar por Pagar por Oracle Lifetime Support | 111 | 29% | |
Migrar a Java 7 | 148 | 39% | |
Migrar a otro JDK | 38 | 10% | |
Yo ya he migrado a Java 7 | 33 | 9% | |
No sé lo que voy a hacer | 52 | 14% |
En cualquier caso, lo que sí me ha quedado claro con las reacciones a la noticia es que efectivamente la fecha del EOL esta cogiendo por sorpresa a mucha gente, y este EOL está sucediendo muy pronto, ya que la inmensa mayoría de la gente (por encima del 90% nuestra comunidad) todavía sigue usando Java 6.
Reader Comments (28)
Teniendo en cuenta que JavaSE 1.6 lleva 5 años en escena, y que tiene en la actualidad 30 actualizaciones, me gustaría saber que actualización tienen quienes todavía usan esa versión.
Probablemente habría algunas sorpresas, y resultaría que la madera de kamikaze la llevarían muchos bien incrustada en la sangre.
Espero que no hagan lo mismo con los antivirus, o con el mismo Sistema Operativo.
Me parece un poco exagerado eso de que seguir con Java 6 sea una opción suicida, es mucho más riesgoso hacer una migración apresurada a la versión 7 y no todos los servidores de aplicaciones están listos para soportarla.
Quizá en aplicaciones abiertas al público sea necesario pensar en esta situación, pero para otro tipo de aplicaciones seguro que aguantan un poco más con Java 6, de hecho aún conozco varias con Java 5 y los riesgos de seguridad no han sido materializados.
Teniendo en cuenta que los mayores problemas de seguridad de Java vienen dado de su uso a nivel de plugin del navegador y como cliente, no veo yo eso de que seguir usandolo en el servidor sea una opción suicida.
Y en este artículo, como en el anterior, se confunde Java 6 con la implementación (JDK) de Oracle, pero vamos, nada nuevo.
Respecto a la compatibilidad descendente, probablemente exista tanto riesgo, o más, en actualizar de una 1.6.5 a una 1.6.30 como de una 1.6.30 a una 1.7.2
Cada actualización implica cambios en el código, tanto del Hotspot como del API o sus implementaciones. Por más cuidado que se ponga en respetar la compatibilidad, siempre existe un riesgo.
El cambio de versión de 1.6.x a 1.7.x tiene más que ver con las novedades en el API de la 1.7.x que con variaciones internas en las implementaciones del API existente.
Ha habido muchos más cambios internos en las sucesivas 1.6.x que entre la 1.6.30 y la 1.7.2
Hombre, yo veo exagerado decir que hay el mismo riesgo actualizando de 1.6.5 a una 1.6.30 como de una 1.6.30 a una 1.7.2. No digo que actualizar una revisión menor no tenga riesgo (recordemos el cambio de la cadena de caracteres de la propiedad "vendor" cuando Oracle compró a Sun...) pero debería ser mínimo.
Efectivamente la mayor parte de las vulnerabilidades dejaba vienen por el plugin del navegador. La mayor parte, que no todas. Dime ¿alguna vez has lanzado un navegador web desde un servidor para lo mejor bajar una actualización de algo o buscar en Google cómo resolver un problema? ¿Alguna vez has consultado también tu e-mail desde ese navegador? No digo que esto lo haga todo el mundo. Digo que es posible que suceda.
Basta con ver la relación detallada de cambios entre una y otra actualización, y no digamos entre cada sucesivo build de cada versión, para darse cuenta de que hay muchas más variaciones de todo tipo en el código, de las que se suelen publicar.
Cualquiera que lea los changesets del código fuente del OpenJDK sabrá de qué hablo.
En todo caso, me refiero a los riesgos en relación con la compatibilidad, no respecto a la seguridad.
El cambio de versión a 7 se debe a los nuevos API, por lo que si el código existente no los usa, no debería tener ningún problema para ejecutarse, y por lo tanto, los posibles errores en los nuevos API no le conciernen.
Otra cuestión son los innumerables cambios en las implementaciones de los API comunes tanto a 1.6 como a 1.7 que sí afectan, o pueden afectar, al código existente, use o no use los nuevos API de la 1.7
Jamás, y a nadie minimamente en sus cabales se le ocurriría hacerlo. Pero vamos, ¿me estás diciendo que te parece suicida confiar en que nadie se dedique a navegar por el mundo y meterse en páginas dudosas desde un servidor en producción?
Si ese es el criterio mejor desconectar los ordenadores y volver a las señales de humo :), por que ni con soporte comercial te libras de que te entren hasta el fondo.
No es navegar por páginas dudosas. El Wall Street Journal el año pasado estuvo sirviendo malware a través de un anuncio servido en su web por una tercera parte. Siempre está el tema de consultar el correo para, por ejemplo, buscar información relativa al problema que estas resolviendo que te han enviado un e-mail, y de paso ves que te acaba de llegar un nuevo correo y…
@Abraham
Si la seguridad en la navegación Web estuviese únicamente en función de la seguridad de Java, creo que podríamos dormir bastante tranquilos ;)
Creo que casi nadie puede llevar la cuenta de los cientos de miles de "programas" de spyware y malware que circulan por la Red, y que no tienen nada que ver con Java.
A mí es raro el día en que el antivirus no me da alguna alarma, al visitar alguna página :D
aún siendo, en apariencia, páginas de contenido técnico, que es lo más grave.
Lo que sí me asombra es la cantidad de excusas irracionales para no actualizar, no solamente Java, sino casi cualquier aplicación, incluyendo el mismísimo Sistema Operativo.
Conozco muchas personas que se niegan a instalar un antivirus, porque, según ellos, "les ralentiza el ordenador". Ni hablemos de aplicaciones de seguridad como SpyBot, por poner un ejemplo conocido en plataformas Windows.
Todavía más asombroso es que esa clase de actitudes está incrustada, con una firmeza que asusta, en empresas. Una cosa es actualizar a lo loco, y otra no actualizar en absoluto, por aquello de "si no está roto, no lo repares". Lo malo es que sí está roto, y ni se dan cuenta, ni se quieren dar por enterados.
@choces tu posición roza la del talibán.
Que en tu contexto pueda ser cierto no implica que a todo el mundo le pase lo mismo. En mi caso trabajo en un banco y te puedo asegurar que cambiar de jdk en producción (así sea un update de seguridad) es todo un tema.
Hay que analizar un montón de cosas y los riesgos ya no son tan despreciables.
Saludos
@choces, Java sí que tiene que ver mucho con los cientos de miles de "programas" de spyware y malware que circulan por la Red, porque lleva bastante tiempo siendo el principal vector de ataque explotado por ellos:
http://www.javahispano.org/portada/2011/12/5/java-sigue-siendo-el-lider-en-vulnerabilidades.html
Y por cierto, aquí está presente uno de los que se niegan a instalar el antivirus porque me hace el ordenador más lento, además de realmente no protegerme. Otro tema son las instalaciones, eso sí que va religiosamente. Pero el antivirus, jode más que los virus. Una mezcla de sentido común y uso de virtualización para visitar ciertos sitios han hecho que en los últimos seis años que debo llevar sin antivirus no haya tenido ningún problema al respecto.
@diego
Mi posición es la de 30 años de experiencia en Sistemas Industriales, en especial en los sectores de la generación de energía eléctrica y electromedicina. Hay mucha más vida de la que se cree, en lo que a industria se refiere, fuera de las oficinas de un banco.
@Abraham
Me basta con ver la lista interminable de vulnerabilidades publicadas y resueltas, tan solo el año pasado, por los principales navegadores que las publican, Firefox y Chrome, como para no tomarme en serio las "estadísticas" publicadas en torno a Java.
¿Cuántas de esas vulnerabilidades están relacionadas, directamente o indirectamente, con Java?.
Java sí es un "vector de ataque"; pero por otras causas, que no tienen que ver con sus vulnerabilidades, y mucho con su posición como lenguaje de programación.
@choces las estadísticas y que son fiables. Esas no tanto como las de Microsoft. Pero la de Microsoft son el dato más fiable que puede haber:
http://www.javahispano.org/portada/2012/2/1/sabias-que-solo-puedes-seguir-usando-java-6-durante-seis-mes.html
Java es el principal vector de ataque en equipos Windows. Esto es un hecho indiscutible. Y no es en absoluto culpa de Java como lenguaje de programación, o de su modelo de seguridad. Como he explicado en detalle en esas dos noticias, es culpa de que la gente no actualiza el JRE/JDK. Y por eso no me parece una buena noción seguir usando Java 6 sin updates
Si te refieres a este informe:
http://blogs.technet.com/b/mmpc/archive/2010/10/18/have-you-checked-the-java.aspx
que creo que es el origen de todo este asunto alrededor de Java, siento tener mis serias dudas sobre un fabricante, Microsoft, que tiene mucho interés en desprestigiar Java en favor de su C#
Pegué el enlace equivocado. Este es el enlace bueno
Estos datos son datos procedentes de los informes de la MRT:
http://www.microsoft.com/security/sir/keyfindings/default.aspx#!section_1
La fuente más fiable posible. Y no creo en teorías conspiratorias de que Microsoft está falseando los datos.
Tiene todo sentido del mundo. Hay cientos de millones de JREs instalados en equipos de gente que no sabe qué coño es Java, gente que instaló Java junto con alguna aplicación, no es consciente de que lo necesita, de qué demonios es, y por tanto no tiene ningún incentivo para actualizarlo. Y los usuarios finales están hartos de actualizar cosas. Así que no actualizan "la taza esa del demonio que aparece en la bandeja, que no me vale para nada y siempre quiere actualizarse".
Esto ha sido confirmado por múltiples investigadores de seguridad independientes (como el referenciado en la noticia del primer enlace). De verdad, @choces, es un hecho que Java es el principal vector de ataque para PCs con Windows .
Ésto es lo que dice la cabecera del informe:
"Java exploits detected and blocked by Microsoft antimalware products, 3Q10–2Q11"
Lo que quiere dar a entender que los productos de Microsoft son una referencia mundial, y que no es necesario contrastarlos con nadie más.
Habría que ver lo que dicen el resto de fabricantes de productos similares, con relación a sus respectivas cuotas de mercado.
@choces, esos datos son fundamentalmente estadísticas de la MRT (Microsoft Removal Tool), un antivirus no residente que se actualiza cada mes junto con Windows Update, realiza un escaneo de virus y demás bichos la siguiente vez que se reinicia el equipo después de la actualización, y envía esos resultados a Microsoft. Es decir, los resultados del informe se basan, ni más ni menos que en el resultado de escáner con la MRT todos los equipos Windows que emplean Windows Update y cuyos usuarios no han bloqueado de algún modo el envío de esa información por parte de la MRT. Si quieres ver la MRT simplemente ejecuta mrt en una consola. Y si estás interesado, busco donde guarda un log (lo crea cada vez que se ejecuta) con los resultados de todos los escaneos.
De verdad, choces, que en este portal hay pocos más javeros que yo. Y que Microsoft no me cae bien, ni mucho menos. Pero que lo que dice Microsoft es verdad. Y lo ha confirmado bastante otra gente. Y es lógico, francamente. ¿Qué incentivo tiene un usuario normal para actualizar Java si "el no lo usa para nada"?
Navegar por el wall street journal o consultar el correo desde un servidor... que bueno.
Lo siento, Abraham, pero veo ciertas discrepancias ;)
Las fuentes que Microsoft usa para esos informes son muy variadas, y no están restringidas al MSRT, como puede leerse en el mismo informe:
http://www.microsoft.com/security/sir/keyfindings/default.aspx#!section_1_2
Por otro lado, de la relación de amenazas que detecta esa herramienta:
http://support.microsoft.com/?kbid=890830
no he conseguido determinar su relación con Java.
Si, el informe tiene varias fuentes, pero insisto en que ya sólo con la MRT los datos que tienen hace el informe más que verídico:
"The MSRT is primarily released as an important update through Windows Update, Microsoft Update, and Automatic Updates. A version of the tool is also available from the Microsoft Download Center. The MSRT was downloaded and executed 3.2 billion times in 1H10, or more than 533 million times each month on average"
No sé cómo lo ves tú, pero 533 millones de PCs examinados al mes ya me parece una "muestra fiable" suficiente para extraer conclusiones verídicas irrelevantes. Y esta es la principal fuente de información para determinar cuáles son los vectores de ataque contra los PCs.
El informe usa muchas otras fuentes porque estudia *otras cosas* que no tienen que ver con vectores de ataque para peces, como cuánto SPAM ahí, cuántas web haciendo Phishing, cuántas webs infectadas por XSS....
Y la MRT es capaz de identificar (al menos en muchos casos) cuál fue el vector de entrada. No sé si en esa página que tu referencias dice algo, que está orientada a usuarios finales, pero tiene esa funcionalidad.
Y en serio, insisto en que es lo más lógico del mundo. Hay cientos de millones de equipos con JREs instalados cuyos usuarios no saben lo que es, y no tienen ningún incentivo para actualizarlo. En cuanto hay una nueva revisión de un JRE los hacker saben que la versión antigua tiene una vulnerabilidad, pueden estudiarla y explotarla y saben que van a ser capaces de infectar a cualquier usuario que no haya actualizado su JRE. Y por eso yo lo veo un tanto kamikaze no actualizarse. En cuanto sale un parche de seguridad para una herramienta, aunque los hacker no supiesen de esa vulnerabilidad, ahora pueden hacer ingeniería inversa del parche, estudiar el agujero parcheado, y explotarlo en ataque contra la gente que lo instaló el parche.
La solución a esto Google ya la conoce desde hace tiempo: actualizaciones automáticas transparentes para el usuario. Con Chrome les va de puta madre, tanto que este mismo año Firefox e Internet Explorer lo van a copiar.
Debo reconocer que me gusta esta clase de debate ;)
Hay algunas cifras que me gustaría compartir:
1.- Servidores que usan Java: 4%
http://w3techs.com/technologies/overview/programming_language/all
2.- Servidores que usan cliente Java: 0.2%
http://w3techs.com/technologies/overview/client_side_language/all
En realidad, no se sabe cuántos de esos millones de usuarios tienen alguna versión instalada de Java, ni cuál.
Además, el hecho de que la tengan instalada, no significa que la usen. Para ello, deberían conectarse con alguno de esos servidores que tienen cliente Java.
De todos modos, no me queda nada claro de dónde saca Microsoft esas cifras.
Cuanto me gusta y cuanto se aprende de éstos debates e intercambios de opiniones siempre manteniendo el respeto. Nunca dejen de escribir que aunque no comentemos siempre, muchos como yo los estamos leemos. Gracias a Abraham y a todos los foreros.
Saludos.
Choces, el debate sobre la MSRT no va de cuanta gente usa Java en el servidor, o tiene un Applet en su página web ("Java en el cliente"), que es de lo que van esas estadísticas. Va de si tener Java instalado en el equipo que tú usas para trabajar y no actualizarlo eso no arriesgado..yo estoy hablando de los millones de personas que han instalado Azureus, Matlab o algo similar y sin saberlo ha metido una máquina virtual Java en su equipo, que no saben lo que es, no saben que lo necesitan y no van a tener ningún incentivo para actualizarla.
Y respecto a los números de Microsoft, no entiendo que es lo que no te queda claro. Microsoft ejecuta código cada mes en más del 500 millones de PCs que le permite hacer una auditoría de su propio sistema operativo (que supongo que conocen bien) para ver si algo ha infectado el equipo, como ha entrado ese algo, y si es posible eliminarlo. Y después envia vuelta esos datos por la red. Si me preguntas a mí, no hay una forma mejor de recoger estadísticas sobre este tema.
@calamaroweb
En un debate, creo que aprenden tanto o más quienes debaten, que quienes leen ;)
@Abraham
No hay duda de que estoy plenamente de acuerdo con la necesidad imperativa de actualizarse. Y predico siempre con el ejemplo, dicho sea de paso ;)
Respecto a MSRT, la relación de amenazas que detecta es muy reducida, apenas tres docenas, como puede verse en el enlace que publiqué más arriba. Y no he conseguido ver en ninguna de ellas la más mínima relación con Java. Otra cuestión es lo que detecten mediante otros productos suyos, como el antivirus; pero no dan ningún dato sobre la muestra de máquinas, ni de su cuota de mercado, por lo que las conclusiones, sin que sean erróneas, no proporcionan datos suficientes para evaluar la incidencia real en el mercado.
Respecto a las aplicaciones de escritorio, como las que mencionas, es extremadamente difícil que sean atacables, a menos que sus accesos a la Web se hagan "a lo loco". Lo habitual es que se comuniquen con servidores externos mediante RESTful o técnicas similares, con lo que el control que realiza la aplicación sobre los resultados es máximo, y está bien controlado.
Precisamente estoy en medio de una actualización del API de Discogs, y realizo el acceso mediante Jersey. No hay manera de que "algo extraño" se me cuele :)
La forma más habitual de ataque se realiza dentro de un navegador, a través de un applet, o de cualquier técnica que cargue la VM dentro del navegador, o acceda a ella desde el navegador. No suele ser lo habitual en la mayoría de los usuarios.
Sí, claro que las aplicaciones de las que hablo son difícilmente atacables. Yo no hablo de que se ataquen esas aplicaciones. Hablo de que cuando uno se instala estas aplicaciones de repente tienes un JRE en tu equipo (sin que un usuario normal sea consciente de ello), y por tanto la posibilidad de ejecutar Applets. Un click en un enlace en un e-mail, o ver una página maliciosa, se lanza un Applet que aprovecha un agujero de seguridad para escalar permisos, y game over. Lo he visto varias veces en mi máquina, cuando he visitado webs poco recomendables (dentro de un sandbox). Es más, una vez hice un video, pero al final lo perdí.
En cuanto a la MSRT, las vulnerabilidades que chequea son las "más populares en cada momento", por eso se actualiza cada mes. Es así porque quieren un escáner rápido, y no estar un par de horas machacando el disco duro del usuario al reiniciar. Hasta cierto punto, es una debilidad para el estudio de Microsoft, pero sólo hasta cierto punto; a fin de cuentas las amenazas que incluyen son las más populares, las que ellos están viendo que se están empleando más en ese momento.
Aunque no tiene nada que ver con esta conversación,comentar que existe una versión de la MSRT "extended" que uno tiene que descargarse que tiene definiciones de virus bastante más amplias. Pero a mí la herramienta que más me gusta en este sentido es otra variante de esta:
http://connect.microsoft.com/systemsweeper
Es una MSRT que viene junto con un sistema operativo Windows 7 capado que le permite arrancar desde un CD/USB, lo que hace el escaneo considerablemente más fiable ya que para arrancar el sistema operativo que se emplea en el escaneo no se usa ningún contenido del disco duro del equipo que se está analizando.
Por último, si alguien quiere ver si alguna vez el log de la MSRT está en:
%Windir%\Debug\Mrt.log
¿Por qué no instalas un buen antivirus, como Avast (el que yo uso en Windows), del que te aseguro que sus escudos en tiempo real apenas consumen ciclos de CPU? ;)
¡Es gratuito! ;D
En estos momentos es cuando recuerdo un libro de Asimov, Los Propios Dioses, cuyos tres capítulos se titulan: "Contra la estupidez... los propios dioses... luchan en vano".
Viene a cuento respecto a lo que los usuarios suelen hacer, o dejar de hacer, con sus ordenadores.
Estoy convencido de que si lo usuarios condujesen los coches, como hacen con sus ordenadores, no habría farolas suficientes por las calles, para subirse a ellas :D
Si un usuario se empecina en ser un irresponsable con su máquina, no hay nada que hacer, a menos que se la convierta en un terminal "tonto", o se instale un martillo automático en el teclado, para cuando "meta la uña" ;D
Porque sí que ralentiza un montón los accesos a disco duro. Y no garantizan absoluto que no te vas a infectar. Puede que "eleve la barrera" de dificultad para intentarte. Pero no es ninguna garantía. La virtualización, por la contra, es una garantía :) Los únicos antivirus que yo trago son los no residentes, como la MSRT.
Respecto a los usuarios, estoy un poco en desacuerdo con ese punto de vista. La informática es complicada. Incluso las cosas más sencillas. A los que vivimos delante de un ordenador nos cuesta verlo. Y lo que nosotros debemos de tratar de hacer es que sin necesidad de que el usuario de nuestra aplicación "estudié/aprenda" pueda usarla de modo correcto. El tema de las actualizaciones automáticas y transparentes para el usuario a lo Chrome es un buen ejemplo de esto. Para mí mismo es un coñazo actualizar todas las malditas aplicaciones que quieren actualizarse en mi equipo…
Y en nuestra empresa seguimos usando JEE2 (sobre Jdk 1.4)... somos un asco