La defensa del patrimonio tecnológico
frente a los ciberataques
10 y 11 de diciembre de 2014
i S
© 2014 Centro Criptológico Nacional
C/Argentona 20, 28023 MADRID
www.ccn-cert.cni.es
VIII JORNADAS STIC CCN-CERT
Raúl Siles
DinoSec
Fundador & Analista de Seguridad
[email protected]
www.dinosec.com
@dinosec
www.ccn-cert.cni.es
2
VIII JORNADAS STIC CCN-CERT
En episodios anteriores…
VIII JORNADAS STIC CCN-CERT
Índice
1 Vulnerabilidades de seguridad en la actualidad
2 iOS: Actualizaciones de software OTA
3 Detalles de la vulnerabilidad
4 iOS: Regreso al futuro
5 iOS: Regreso al futuro II
6 Conclusiones y recomendaciones
www.ccn-cert.cni.es
4
VIII JORNADAS STIC CCN-CERT
Vulnerabilidades de seguridad en la actualidad
• ¿Cuántas vulnerabilidades en productos o soluciones
ampliamente utilizadas hoy en día existen?
• No conocidas públicamente… sólo por algunos…
• ¿Quiénes?
• ¿Cuántos investigadores pueden encontrar la misma
vulnerabilidad de manera independiente?
• ¿Cuánto tiempo puede permanecer sin ser publicada?
• ¿Cómo de probable es que ésta prevalezca a lo largo del
tiempo y de distintas versiones del mismo producto?
• ¿Qué deberíamos hacer cuando el fabricante anuncia
una versión que soluciona la vulnerabilidad?
VIII JORNADAS STIC CCN-CERT
iOS: Actualizaciones de software OTA
• Servidor de actualizaciones de iOS de Apple
• http://mesu.apple.com
• Protocolo
• HTTP
• Ficheros de actualizaciones de iOS
• Plist (property list) con las últimas versiones de iOS (XML)
• http://mesu.apple.com/assets/
com_apple_MobileAsset_SoftwareUpdate/
com_apple_MobileAsset_SoftwareUpdate.xml
• http://mesu.apple.com/assets/
com_apple_MobileAsset_SoftwareUpdateDocumentation/
com_apple_MobileAsset_SoftwareUpdateDocumentation.xml
VIII JORNADAS STIC CCN-CERT
Regreso al futuro
Last-Modified: <fecha>
VIII JORNADAS STIC CCN-CERT
Detalles de la vulnerabilidad (iOS BttF)
• iOS 5.x & 6.x
• Peticiones HEAD & GET (comprobación vs. obtención)
• iOS 7.x
• Peticiones GET (y respuestas 304)
• Incluyen “If-Modified-Since”
• Modificación de la cabecera “Last-Modified”
• Respuestas del servidor de actualizaciones
• Comprobación: ¿Hay una versión nueva de iOS?
• Ataque “Star Wars”
• Obtención: ¿Hasta cuando es válida esta versión?
• Ataque “Matrix”
• Proporcionar un fichero de actualizaciones de iOS válido
Star Wars
VIII JORNADAS STIC CCN-CERT
Matrix
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
Historia de la vulnerabilidad
• 2012 (febrero): Vulnerabilidad descubierta
• iOS 5.x (iOS OTA software updates – 5.0.1)
• Durante +2 años permaneció en privado
• 2014 (6 febrero): Vulnerabilidad notificada a Apple
• Regla del “mes y un día” antes de ser publicada
• 2014 (1 marzo): Cambios en los servidores de Apple
• iOS 7.x: Comprobación de fechas futuras (If-Modified-Since)
• 2014 (8 marzo): Vulnerabilidad presentada en RootedCON (ES)
• 2014 (3 junio): Vulnerabilidad presentada en Area41 (EN)
• (4 junio) iCamasu: http://blog.dinosec.com/2014/06/icamasu.html
• 2014 (24 junio): Vulnerabilidad publicada en el blog de DinoSec
• http://blog.dinosec.com/2014/06/ios-back-to-future.html
• 2014 (17 septiembre): iOS 8 (CVE-2014-4383)
• iOS 8: Comprobación de fechas futuras (Last-Modified)
• Versiones afectadas de iOS: 5, 6 y 7
VIII JORNADAS STIC CCN-CERT
Cambios en los servidores de Apple
• http://mesu.apple.com (1 de marzo de 2014)
...
/* Procesar la petición GET (iOS 7.x) */
if ( header(‘If-Modified-Since’) ausente ) ||
( header(‘If-Modified-Since’) > date(now) ) {
/* Enviar una respuesta de tipo 200 incluyendo el fichero
con las últimas actualizaciones de iOS, evitando
referencias a fechas futuras por parte del cliente. */
} else {
/* Comprobar la fecha de ‘If-Modified-Since’ y la fecha
de la última actualización para responder con un
mensaje de tipo 304 o 200. */
...
VIII JORNADAS STIC CCN-CERT
iOS 8 (CVE-2014-4383)
VIII JORNADAS STIC CCN-CERT
Cambios en iOS 8 (cliente)
• http://support.apple.com/en-us/HT201395 (17 sep 2014)
...
/* Procesar la respuesta a la petición GET (iOS 8.x) */
If ( header(‘Last-Modified’) > date(now) ) {
/* Eliminar referencias previas de fechas, borrando el
valor de ‘If-Modified-Since’ (desde cero), evitando
referencias a fechas futuras por parte del servidor.*/
} else {
/* Si la respuesta es de tipo 304, continuar... */
/* Si la respuesta es de tipo 200, almacenar la fecha de
la cabecera ‘Last-Modified’ como la fecha asociada a
la última actualización disponible: se empleará como
futuro valor de la cabecera ‘If-Modified-Since’. */
...
Regreso al futuro II
VIII JORNADAS STIC CCN-CERT
Regreso al futuro II: “Viajando en el tiempo”
VIII JORNADAS STIC CCN-CERT
Fecha de la última
actualización de iOS
date_of_
last_update
Momento
actual
Futuro (próxima
actualización)
date(now)
> date(now)
Fecha del ataque para
evitar la actualización
de la versión actual de iOS
(válido hasta la próxima actualización)
VIII JORNADAS STIC CCN-CERT
Sugerencias para los servidores de Apple e iOS 8.x (cliente)
/* Obtener la fecha oficial de la última actualización. */
date_of_last_update = getDateForLastiOSUpdate_Server();
/* Procesar la petición GET (iOS 7.x) */
if ( header(‘If-Modified-Since’) ausente ) ||
( header(‘If-Modified-Since’) > date_of_last_update ) {
/* Enviar una respuesta de tipo 200 incluyendo el fichero
con las últimas actualizaciones de iOS, evitando
referencias a fechas futuras por parte del cliente. */
...
Servidor
/* Obtener la fecha oficial de la última actualización: ¿Cómo? */
date_of_last_update = getDateForLastiOSUpdate_Client();
/* Procesar la respuesta de la petición GET (iOS 8.x) */
If ( header(‘Last-Modified’) > date_of_last_update ) {
/* Eliminar referencias previas de fechas, borrando el
valor de ‘If-Modified-Since’ (desde cero), evitando
referencias a fechas futuras por parte del servidor.*/
...
Cliente
¿Cómo obtener la fecha oficial de la última actualización
de iOS en el cliente?
VIII JORNADAS STIC CCN-CERT
siles
siles
si
Además, ¿qué ocurre sino con los ataques StarWars…?
VIII JORNADAS STIC CCN-CERT
Nueva historia de la vulnerabilidad
• 2012 (febrero): Vulnerabilidad descubierta
• iOS 5.x (iOS OTA software updates – 5.0.1)
• Durante +2 años permaneció en privado
• 2014 (6 febrero): Vulnerabilidad notificada a Apple
• Regla del “mes y un día” antes de ser publicada
• 2014 (1 marzo): Cambios en los servidores de Apple
• iOS 7.x: Comprobación de fechas futuras (If-Modified-Since)
• 2014 (8 marzo): Vulnerabilidad presentada en RootedCON (ES)
• 2014 (3 junio): Vulnerabilidad presentada en Area41 (EN)
• (4 junio) iCamasu: http://blog.dinosec.com/2014/06/icamasu.html
• 2014 (24 junio): Vulnerabilidad publicada en el blog de DinoSec
• http://blog.dinosec.com/2014/06/ios-back-to-future.html
• 2014 (17 septiembre): iOS 8 (CVE-2014-4383)
• iOS 8: Comprobación de fechas futuras (Last-Modified)
• Versiones afectadas de iOS: 5, 6 y 7
• 2014 (20 noviembre): Vulnerabilidad re-notificada a Apple
• 2014 (11 diciembre): iOS 8 vulnerable (= que el 1 marzo)
¿Habrá un…?
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
Conclusiones y recomendaciones (1/3)
• Ataques dirigidos o masivos (millones de usuarios…)
• Ataques silenciosos (a lo largo del tiempo y versiones)
• Forzar a la víctima a permanecer en la versión actual
vulnerable (hasta la próxima versión de iOS)
• Esperando al siguiente jailbreak… (evasi0n, Pangu, TAIG, …)
• ¿Vulnerabilidades en iOS?
• 197 vulnerabilidades solucionadas en iOS 6.0 (+ iOS 6.x)
• 80 vulnerabilidades solucionadas en iOS 7.0 (+ iOS 7.x)
• 56 vulnerabilidades solucionadas en iOS 8.0 (+ iOS 8.x)
• Posibilidad de revertir el ataque silenciosamente
VIII JORNADAS STIC CCN-CERT
Conclusiones y recomendaciones (2/3)
• “Si algo no se puede actualizar, es inseguro”
• ¿Cuánto tiempo puede prevalecer una
vulnerabilidad activa?
• ¿Incluso conocida públicamente… y “solucionada”?
• ¿Cómo sabemos que realmente ha sido solucionada? (CVE-…)
• ¿Aprendemos de los errores en esta industria?
• HTTPS (TLS)
• Si es que es realmente seguro…
• Verificando realmente todos los detalles del certificado
• Certificate pinning
VIII JORNADAS STIC CCN-CERT
Conclusiones y recomendaciones (3/3)
• Si eres un fabricante (u organización)…
• ¿Dispones de un progama público de vulnerabilidades?
• ¿Has entendido realmente la vulnerabilidad?
• ¿Estás seguro?
• Colabora con los investigadores de seguridad y hackers
• Comunicación fluida y verificación final (¿recompensada?)
• Si eres una compañía u organización…
• Verifica la versión de iOS a través de tu solución MDM
• ¿Qué vas a hacer con el resto de vulnerabilidades
“solucionadas” por los fabricantes?
VIII JORNADAS STIC CCN-CERT
El refranero español
“Cuando las tecnologías
de tu vecino veas
peligrar…
pon las tuyas a
actualizar”
VIII JORNADAS STIC CCN-CERT
Referencias
• DinoSec Blog
http://blog.dinosec.com
http://blog.dinosec.com/2014/06/ios-back-to-future.html
• DinoSec Lab
http://www.dinosec.com/es/lab.html
“iOS - Back to the Future“
“iCamasu”
¡Muchas gracias!
VIII JORNADAS STIC CCN-CERT
Raúl Siles
Fundador & Analista de Seguridad
[email protected]
www.dinosec.com
@dinosec
E-Mails
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Websites
www.cc
Comentarios de: iOS Regreso al Futuro2 CCN CERT RaulSiles DinoSec v1.0 (0)
No hay comentarios