Sobre los Exclaves de Apple
(randomaugustine.medium.com)Problemas de los kernels monolíticos de sistemas operativos
- Los sistemas operativos modernos normalmente se dividen en dos dominios principales de protección:
- Dominio no privilegiado (modo usuario): los programas no pueden realizar directamente tareas potentes como acceso a archivos o comunicación de red
- Dominio privilegiado (modo kernel): cuando un programa solicita al kernel que realice una tarea mediante una llamada al sistema, el código del kernel ejecuta esa tarea y devuelve el resultado al modo usuario
- La mayoría de los sistemas operativos usan un diseño de kernel monolítico:
- El kernel tiene acceso ilimitado a todo el hardware, la memoria y los datos del usuario del sistema
- Esto estaría bien si el software no tuviera fallas y no hubiera intentos de comprometer la seguridad, pero en la práctica existen bugs y vulnerabilidades
- Como el kernel monolítico es grande, es más probable que aparezcan vulnerabilidades, y una sola puede llevar a comprometer todo el sistema
- El diseño de microkernel elimina la mayor parte de la funcionalidad del kernel para reforzar la seguridad y la maneja en procesos separados no privilegiados:
- Puede fortalecer la seguridad
- Puede causar pérdida de rendimiento y aumentar la complejidad del software de aplicaciones
- Aun así, por sus ventajas de rendimiento, los kernels monolíticos siguen siendo ampliamente usados
- El kernel XNU de Apple:
- Es el kernel compartido por iOS, macOS, tvOS, visionOS y watchOS
- Está basado en Mach como microkernel, pero como la mayoría de las funciones del sistema se ejecutan dentro del mismo ámbito privilegiado, en la práctica funciona como un kernel monolítico
- Por lo tanto, puede sufrir las mismas vulnerabilidades de seguridad que un kernel monolítico
Esfuerzos de aislamiento
- Se han intentado distintas técnicas de aislamiento basadas en software y hardware:
- Microsoft Virtualisation-based Security (VBS) – usada en Credential Guard de Windows
- Intel Software Guard Extension (SGX) y VT-X2
- ARM TrustZone – usado en Samsung Knox, Samsung Pay, Android Verified Boot, la introducción segura del PIN en Android, etc.
Apple también ha ido ampliando gradualmente sus intentos de separar datos del kernel
-
2013 — Apple Secure Enclave
- Introducido por primera vez en el iPhone 5s en 2013
- Secure Enclave se ejecuta en un núcleo de CPU independiente reforzado y funciona sobre SepOS, un sistema operativo basado en microkernel
- El kernel de SepOS usa cL4, el microkernel embebido L4 personalizado de Apple
- Almacena y protege datos sensibles como claves criptográficas e información biométrica (por ejemplo, Face ID)
- Funciona de forma independiente del kernel de iOS y solo presta servicios a iOS mediante interacciones seguras
- Incluso si el kernel de iOS es comprometido, Secure Enclave no se ve afectado a menos que ocurra un exploit adicional
- Ojo: Secure Enclave y Secure Exclave no son lo mismo
-
2017 — Page Protection Layer (PPL)
- Función de seguridad introducida con el procesador A11 del iPhone 8 y el iPhone X
- Es una función basada en hardware + software que otorga permiso para modificar tablas de páginas de memoria solo a partes específicas del kernel
- El resto del kernel tiene restringido ese permiso
- La superficie de ataque se reduce, por lo que los intentos de evasión son menos frecuentes
- PPL añadió una capa de protección, pero como la mayor parte de los privilegios del kernel seguía intacta, tenía límites para un refuerzo de seguridad completo
-
2021–2023 — Secure Page Table Monitor (SPTM)
- Nueva función introducida con el procesador A15 del iPhone 13 y iOS 17
- Reemplaza a PPL, protege funciones adicionales de memoria y las divide en varios subsistemas
- Refuerza la seguridad de la verificación de firma de código para que solo se ejecute código firmado por Apple
- En este periodo empezaron a aparecer referencias indirectas a exclave en el código fuente de XNU
- Se planteó que los subsistemas administrados por SPTM podrían ser exclaves
-
2024 — Exclaves: una gran reforma del modelo de seguridad de XNU
- El concepto de exclave aparece en el código fuente de XNU compatible con los procesadores M4 y A18
- En procesadores anteriores, los exclaves no están activados
- Queda claro que los exclaves son el resultado de un rediseño importante del modelo de seguridad de XNU
-
Exclaves de XNU
Descargo de responsabilidad: como la estructura interna de los exclaves no es completamente open source, parte del contenido puede ser especulación o interpretación
- Los exclaves son un nuevo conjunto de funciones que refuerza de forma importante el modelo de seguridad tradicional de kernel monolítico de XNU
- Los exclaves son recursos aislados de XNU que permanecen protegidos incluso si el kernel es comprometido
- Características de los exclaves:
- Se definen por adelantado al compilar el OS
- Se identifican por nombre o ID
- Están compuestos por varios tipos
- Se inicializan al arrancar
- Se organizan como dominios independientes
- SPTM protege la memoria de los exclaves con nuevos tipos de páginas dedicados a exclaves
- Tipos de recursos de exclave
- Buffers de memoria compartida – accesibles tanto desde el kernel como desde el exclave
- En XNU pueden configurarse como solo lectura o lectura/escritura
- Buffers de audio y sensores – refuerzan la seguridad de los indicadores de acceso a cámara y micrófono
- Conclave – agrupa varios recursos dentro de su propio dominio de seguridad, y existe un Conclave Manager para administrarlo
- Servicios – ejecutan código en el exclave cuando un hilo de XNU los invoca
- Buffers de memoria compartida – accesibles tanto desde el kernel como desde el exclave
-
Kernel seguro — ¿basado en seL4?
- Se introdujo un nuevo kernel, Secure Kernel (SK), para que los servicios de exclave se ejecuten de forma independiente de XNU
- En el archivo de imagen de SK se confirmó una cadena de versión de
cL4 - Es muy probable que SK esté basado en seL4 y no en el kernel cL4 (basado en L4) ya existente de Apple
- La estructura IPC que XNU usa para comunicarse con SK es similar a la de seL4
- En las cadenas usadas por SK se encontraron muchos conceptos usados en seL4 (por ejemplo, capabilities, frames, untyped memory, etc.)
- Puede que no sea casualidad que Apple se haya unido en abril de 2024 a la seL4 Foundation
- El kernel del procesador C1 (el nuevo chip baseband de Apple) también parece estar basado en L4
-
Mundo seguro — ¿ARM TrustZone?
- SepOS corre en un procesador separado, mientras que SK se ejecuta en el procesador principal de aplicaciones de alta velocidad
- Para ello se necesita un nivel adicional de privilegio del procesador → podría implementarse de una de estas maneras:
- Compatibilidad con extensiones de virtualización
- Extensiones SPTM de Apple
- La opción más probable es el uso de la tecnología ARM TrustZone
- Estructura de TrustZone
- Divide el sistema en dos mundos:
- Secure World – ejecución de código seguro
- Insecure World – ejecución de código normal (donde corren XNU e iOS)
- En el código fuente de XNU se encontraron múltiples referencias a transiciones entre Secure World e Insecure World de TrustZone
- Apple aplica el modelo de servicios de exclave en lugar del modelo de Trusted Application propuesto por TrustZone
- SK proporciona servicios y recursos de exclave en un entorno aislado, lo que refuerza la seguridad
- Se espera que sea muy difícil escapar de Secure World hacia Insecure World para comprometer XNU
- Divide el sistema en dos mundos:
- RINGGATE
- Existe la posibilidad de que Apple use SPTM para gestionar las transiciones entre Secure World ↔ Insecure World
- En el código se hace referencia a esta transición como "RINGGATE"
Conclusión
- El significado de introducir exclaves
- Para responder a los ataques persistentes de actores de amenazas avanzadas, Apple introdujo los exclaves para reforzar el nivel de seguridad del sistema operativo
- Al aislar recursos sensibles, se esperan efectos como los siguientes:
- Reducción de la superficie de ataque
- Disminución del impacto de una sola vulnerabilidad del kernel
- Defender un kernel monolítico es un desafío interminable, y los exclaves son una forma de abordarlo
- No está claro si a largo plazo es la dirección correcta o una medida temporal
- Esperanza personal → una futura reingeniería basada en CHERI y ARM Morello 😊
- Pero por ahora, es el intento de defensa más grande entre los fabricantes de dispositivos de consumo
- Este artículo no aborda con claridad qué componentes concretos se movieron a exclaves
- A partir de las imágenes de compilación, parece que los siguientes elementos se ejecutan dentro de exclaves:
- Indicadores seguros de cámara/micrófono
- Parte de las funciones de Apple Neural Engine (ANE)
- Algunos drivers de dispositivo
- Componentes de comunicación con Secure Enclave
- A partir de las imágenes de compilación, parece que los siguientes elementos se ejecutan dentro de exclaves:
- Es posible que más componentes se migren a exclaves en el futuro
- La efectividad de seguridad de los exclaves depende del nivel de optimización de ese trabajo de migración
- Existe la posibilidad de que los exclaves se usen en la infraestructura de Apple Private Cloud Compute
- Podrían ofrecer un alto nivel de seguridad y privacidad para IA basada en la nube
1 comentarios
Comentarios en Hacker News