El modelo de seguridad de iOS

1,386 views

Published on

Análisis del modelo de seguridad implementado en las distintas versiones de iOS.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,386
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

El modelo de seguridad de iOS

  1. 1. Trabajando en seguridad desde hace 6 añosApasionado por la seguridad de toda la vida
  2. 2. ¿En serio vamos a diseccionar un sistema operativo?¿Y además hablando también de hardware?¿Estamos locos?
  3. 3. http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf
  4. 4. Especialmente interesante a partir de 3GS Cifrado total del almacenamiento Procesador criptográfico Claves que nunca salen del mismo y ‘fuseadas’ para cadaunidad (UID & GID)
  5. 5. Combinan CPU (ARM Cortex) + GPU + RAM S5L8920 iPhone 3GS S5L8930 (Apple A4) iPad / iPhone 4 / ATV 2G S5L8940 (Apple A5) iPad 2 / iPhone 4S S5L8945 (Apple A5X) iPad3 S5L8950 (Apple A6) iPhone 5Familia ARMv7 Juegos de instrucciones ARM, THUMB y THUMB-2
  6. 6. Originalmente desarrollado para el primer iPhone (2007)
  7. 7. Sin duda uno de los sistemas operativos más segurosPrimera versión: iPhoneOS 1.0Además cada vez más seguroBasado en Mac OS X
  8. 8. iPhone OS 1.0 Sin sandboxing Todo corría como root Sin firma de código ni DEP ni ASLR ¡Sin apps! iPhone OS 1.0 libTiff Exploit (Tavis Ormandy)
  9. 9. iOS 2 implementa la mayor parte de la actual arquitectura App Store Sin ASLR… Casi todos los procesos corren sin privilegios SMS exploit (Charlie Miller) La sandbox era igual de permisiva para todas las apps. Jailbreak Ikee Worm
  10. 10. iOS 3 Sin ASLR Introducen code signing. MobileSafari Pwn2Own 2010 Payload full ROP No rompieron la sandbox
  11. 11. iOS 4 Se introduce el sistema de cifrado actual En realidad con alguna pequeña modificación jailbreakme.com (v2) (by comex) Stack Overflow (Safari) + Integer Overflow (IOKit)iOS 4.3 Aplicaciones compiladas con PIE Introduce ASLR main 256 posibles ubicaciones (si PIE) dyld 256 posibles ubicaciones (si PIE) dynamic library cache 4200 posibles ubicaciones
  12. 12. iOS 4.3.3 jailbreakme.com (v3 Saffron) (by comex again) Leaking Integer Overflow (Safari) + Problema de tipado (IOMobileFrameBuffer) + Incomplete Codesign
  13. 13. http://esec-lab.sogeti.com/post/Analysis-of-the-jailbreakme-v3-font-exploit
  14. 14. iOS 5 Introduce Stack Canaries Introduce Automatic Reference Counting dyld siempre se mueve sea o no PIE el binario. Exploit Corona (5.1.1) Racoon Format String Overflow + HFS Heap Overflow Se cierra vulnerabilidad que permitía downgrades Se acaba con el incomplete code signingiOS 6 Sin novedades conocidas en la arquitectura de seguridad Parcheo continuado de bugs (197)
  15. 15. Una clave para cada archivoFile System Key Se genera durante la instalación Está cifrada con UID Si se borra se pierde todo Effaceable Storage!Diferentes Class Keys
  16. 16. Wipe muy rápido y efectivoPosible cambiar fácilmente la “Clase” de un ficheroEs posible cambiar el Passcode sin recifrar todo.Acceso a los ficheros en función de la clase del mismoAES256-CBC
  17. 17. Los datos se almacenan según cuando deben estar accesibles Dispositivo desbloqueado Dispositivo alguna vez desbloqueado (arrancado) SiempreCada clase tiene una clave maestra…… cifrada con una combinación de passcode y UIDEstas claves se almacenan en la “keybag” del sistema
  18. 18. Región especial de las flashAlmacena tres claves FileSystem Key Clave de la clase NSProtectionNone Clave del keybag del sistema
  19. 19. NSFileProtectionComplete Passcode + UID Se borra al bloquearNSFileProtectionCompleteUntilFirstUserAuthentication Passcode + UID No se borra al bloquearNSFileProtectionNone UID Clave de la clase guardada en Effaceable Storage
  20. 20. NSFileProtectionCompleteUnlessOpen Ficheros que necesitan escribirse con el dispositivo bloqueado Se genera un par efímero Con ECDH se crea un secreto compartido con la privada efímera y la pública de la clase. Los metadatos del fichero almacenan: La clave del fichero cifrada con el hash del secreto La parte pública efímera Se borra la parte privada Cuando se cierra el fichero su clave se borra Para abrirlo: Recrear el secreto compartido con la parte privada de la clase y la pública efímera Descifrar la clave del fichero con el hash del secreto
  21. 21. Base de datos SQLitePermiten guardar información de forma fácil a las AppsNSFileProtectionNoneAcceso a través de API provista por AppleAcceso permitido o no en función de keychain-access-groups application-identifierClases análogas a las de los ficheros Sin NSFileProtectionCompleteUnlessOpenAES128-GCM
  22. 22. Contienen las claves de las clases. Ficheros & Keychain System keybag: donde están normalmente en el sistema Se accede a través de AppleKeyStore.kext Triple cifrado Filesystem key System keybag key Cada clave de clase cifrada con UID / passcode Backup keybag: usada en los backups cifrados de iTunes PKBDF2(password iTunes) * 10000
  23. 23. iCloud keybag: similar a la de Backup Usa criptografía asimétrica como en “Protected Unless Open” para hacer el backup en el background.Escrow keybag: iOS la crea al conectar con iTunes por primera vez y se envía cifrada al PC con una clave. La clave queda guardada en el dispositivo El PC almacena la keybag cifrada con la clave. La clave se envía cuando se conecta a iTunes y permite sincronizar aunque el dispositivo esté bloqueado. Utilizada también para MDM.
  24. 24. La Passcode Key se calcula utilizando el UID Proceso deliberadamente lentoNo es posible crack offline!En iPhone 4 con iOS 5:
  25. 25. Es un dispositivo embebido Extraer la UID del procesador está normalmente fuera deámbito (¿microscopios electrónicos de barrido? ¿FIB? La otra posibilidad: hacerlo ‘a la Live CD’
  26. 26. Bootrom Bootloader Firmware
  27. 27. Lo primero que se ejecutaSólo lecturaOrigen de la cadena de confianza Si es vulnerado la seguridad del sistema se viene abajo Y no tiene arreglo…
  28. 28. Modelo / 0x24000 usb_control_ Limera1n SHA-1 Image Exploit Segment msg(0xA1,1) Segment Overflow OverflowiPhone 3GS A XiPhone 3GS B XiPod 2G XiPod 4G X XiPad 1G X XiPhone 4 X XApple TV 2G X X
  29. 29. Fallo a nivel de aplicación / kernelVulnerabilidad en BootROM
  30. 30. Permitir ejecución de aplicaciones no firmadas por AppleInstala la tienda alternativa de aplicaciones: Cydia Permite instalar aplicaciones “piratas” Y otras muchas utilidades por supuestoReduce la seguridad del sistema a la de Android
  31. 31. TetheredUntethered
  32. 32. BootROM exploit == tethered jailbreak BootROM exploit + Incomplete Code Signing + Kernel Exploit =untethered jailbreak Safari + Kernel exploit = Remote jailbreak Safari + Kernel + Incomplete Code Signing exploit = remoteuntethered jailbreak
  33. 33. Aplica a todas las aplicaciones de terceros (y a la mayoría de laspropias) Impide Acceder a ficheros de otra aplicación Acceder a ficheros del sistema El acceso a la funcionalidad de la API está limitado por los entitlements.
  34. 34. Cada aplicación declara a qué funcionalidad desea tener acceso No se permite el acceso a la API sin el entitlementcorrespondiente Unido a la firma de código es un mecanismo muy potente
  35. 35. Todas las aplicaciones deben estar firmadas Las de terceros son firmadas con la clave privada que identifica al desarrollador (firmada por Apple) La identidad del desarrollador es verificada por Apple La calidad del código es revisada por AppleSe permite cargar nuevas entidades de confianza Para desarrollo Para empresas Ciertamente peligrosoEs responsabilidad del kernel verificarlo
  36. 36. También en tiempo de ejecución (para cada página) Mucho más allá de W^X Una de las razones para que no haya Flash o Java La cadena de confianza se mantiene hasta el último momento
  37. 37. La excepción que confirma la regla (iOS 4.3) dynamic code signing entitlement Permite a Safari ejecutar JIT Requiere una zona de memoria RWX (que también esmarcada como JIT) Puede permitir exploits más sencillos en Safari
  38. 38. Hasta iOS 5.0.1 sólo se comprobaba el entitlement dedynamic code signing si se pasaba la flag MAP_ANON ¡Cualquiera podía reservar memoria RWX! Charlie Miller lo descubre y cuela aplicación en App Store que ejecuta payloads remotas. EPIC FAIL
  39. 39. ¿Realmente es necesario?
  40. 40. Apple ha logrado llegar a un nivel de seguridad realmenteimpresionante. A costa de sacrificar la “libertad” del usuario Apple es el moderno sysadmin Ha demostrado no abandonar los modelos antiguos No obstante, seguirán saliendo nuevas vulnerabilidades

×