Pwning Java update process 2007-Today (ES)

La semana pasada se hizo publico un troyano llamado FinFisher que estaba siendo comercializado exclusivamente a fuerzas de seguridad y agencias de inteligencia de distintas naciones para vigilar PCs y dispositivos mobiles.

¿Que tiene de interesante FinFisher?
Utiliza como vector de infección updates falsos de la aplicación iTunes, explotando una vulnerabilidad que reporté en 2008 y curiosamente Apple luego de 3 años, el 14 de Noviembre publico el parche para solucionarla.

Dos blogs cubrieron esta noticia en profundidad, les recomiendo que visiten Seguridad Apple y Krebs on Security quienes estuvieron informando del asunto.

¿Y el update de Java?
En la misma fecha que avisé del problema en Apple lo hice en Sun con la diferencia que ellos sacaron un parche el 3 de Diciembre del 2008. A principios del 2010 descubrí que era posible saltar las restricciones de este parche. Su primer sistema de actualización realizaba las siguientes acciones:

1) El updater obtiene por http de manera insegura el archivo java.sun.com/update/1.6.0/map-m-1.6.0.xml, que contiene lo siguiente:

<java-update-map>
<mapping>
<version>1.6.0_27</version>
<critical>1</critical> <url>http://javadl-esd.sun.com/update/1.6.0/au-descriptor-1.6.0_29-b110.xml</url>
</mapping>...
<mapping>
<version>1.6.0_28</version>
<critical>1</critical> <url>http://javadl-esd.sun.com/update/1.6.0/au-descriptor-1.6.0_29-b110.xml</url>
</mapping>
</java-update-map>

2) El updater compara su versión actual con el tag <version>, si es mas reciente procede a obtener el archivo en el tag <url> y preguntarle al usuario si desea instalar la nueva actualización.

3) El archivo contiene la siguiente información:

<java-update>
<information version="1.0" xml:lang="en">
<caption>Java Update - Update Available</caption>
<title>Java Update Available</title>
<description>Java 6 Update 29 is ready to install. Click the Install button to update Java now. If you wish to update Java later, click the Later butto
<moreinfo>http://java.com/infourl</moreinfo>
<AlertTitle>Java Update Available</AlertTitle>
<AlertText>A new version of Java is ready to be installed.</AlertText>
<moreinfotxt>More information...</moreinfotxt>
<url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_29-b110/windows-i586/jre-6u29-windows-i586-iftw-rv.exe</url>
<version>1.6.0_29-b110</version>
<post-status>https://nometrics.java.com</post-status>
<cntry-lookup>http://rps-svcs.sun.com/services/countrylookup</cntry-lookup>
<predownload></predownload>
<options>/installmethod=jau SP1OFF=1 SP2OFF=1 SP3OFF=1 SP4OFF=1 SP5OFF=1 SP6OFF=1 SP7OFF=1 SP8OFF=1 SP9OFF=1 SP10OFF=1 SP11OFF=1 MSDIR=ms5 SPWEB=http://
<urlinfo>0a8ddda613f0196beac748407767efebcaea83ca</urlinfo>
</information>
</java-update>

4) Si el usuario confirma la actualización se descargara el binario que se encuentra en el tag <url>, en el caso que el archivo esté firmado por una entidad certificada ejecuta el binario, de lo contrario preguntaba al usuario si desea ejecutar el binario.

Luego del parche del 2008, SUN continuo utilizando la misma mecánica de update, todo vía HTTP con la excepción de una comprobación adicional.

5) Antes de ejecutar el archivo comprueba que el binario este firmado por una entidad certificante y sea un certificado de SUN.


Java update bypass:
Para saltar esta restriccion enviamos como binario el Java Web Start (javaws.exe) y como podemos controlar los argumentos con el tag <options> le pasamos una direccion que controlamos con un JNLP y bingo!

Esta técnica fue presentada en Blackhat y Defcon 2010 con la ultima version Java 1.6.0_22 y hasta hoy sigue siendo vulnerable en la ultima version de Java <=1.6.0.28.

El siguiente video demuestra la vulnerabilidad:



Fechas:
  • 2007 Fue presentando por primera vez Evilgrade en ekoparty (Itunes/Java vulnerable).
  • 2008 Presentamos Evilgrade en Troopers, Shakacon y H2HC.
  • Fines del 2008, Nos pusimos en contacto con los vendors. Sun publico el parche. Lanzamos Evilgrade version 1.0
  • 2010 Presentamos Evilgrade version 2.0 en Defcon/Blackhat y publicamos version 2.0
  • 2011 Apple corrige vulnerabilidad en iTunes y Sun aun no se dio cuenta de su vulnerabilidad.
Si bien no hubo un contacto inicial con la empresa, no deberian hacer su tarea y enterarse en los medios donde los investigadores publicamos nuestros trabajos?
O hay que esperar a la version 2.0 de FinFisher para que lo resuelvan?

Para pensar...
Saludos!
Post a Comment
Thanks for your comment