1 puntos por GN⁺ 2025-03-10 | 1 comentarios | Compartir por WhatsApp

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
  • 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
    • 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
  • 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

 
GN⁺ 2025-03-10
Comentarios en Hacker News
  • Los SoC más recientes de Apple admiten virtualización anidada, y en el M4 iPad Pro se usa un exclave para el LED de la cámara
    • Espero que la próxima revisión de la guía Apple Platform Security cubra el exclave SK y la mitigación de la banda base para la detección de radar Wi‑Fi
  • Hay adiciones específicas de Apple a SPTM
    • XNU está siendo refactorizado hacia una arquitectura inspirada en microkernel, con el objetivo de reducir la base de código y aislar tareas sensibles a la seguridad
    • El aislamiento del espacio de memoria se realiza con ayuda del Secure Page Table Monitor (SPTM)
    • Las tareas sensibles a la seguridad, como la firma de código, la validación de permisos, el modo desarrollador y el modo de ejecución restringida, son manejadas por el Trusted eXecution Monitor (TXM)
  • Es muy probable que esto se realice mediante la tecnología TrustZone de ARM
    • El código fuente de XNU incluye varias referencias a la transición hacia el concepto de mundo seguro de TrustZone
    • Existen más de 150 CVE de TrustZone
  • Hace algunos años, Google implementó pKVM en Pixel usando virtualización anidada por hardware y subió el código al mainline de Linux
    • Sin embargo, no ha anunciado funciones defensivas que usen pKVM/AVF aparte de la VM "Linux Terminal" de Debian
  • Steve creía que una laptop era un diario, y pensaba que tenía esa responsabilidad
    • Si Tim no hubiera compartido la convicción de Steve, no se habría convertido en CEO
    • Hay quienes dicen que extrañan a Steve
  • Apple está reconfigurando el kernel XNU como exclaves
    • El autor de este artículo escribió un texto muy sofisticado y muy bien redactado
    • Como alguien que ha seguido el tema de los exclaves, pienso que está muy bien escrito
  • No estoy acostumbrado a este nivel de conocimiento, pero me pregunto si sería posible atacar el propio enclave para obtener privilegios superiores a los del kernel
    • También me pregunto si este hardware es algo parecido a un coprocesador
  • Me pregunto qué impacto tendrá en la seguridad de macOS
    • Según la documentación de Apple, SPTM no se usa
    • El exclave que actualmente muestra el indicador de la cámara no se aplica a macOS, pero podría aplicarse en el futuro
  • Apple es excelente protegiendo su "plantación"
    • Pero me pregunto qué nos protege de ellos
    • Pregunta si alguna vez han pensado en la posibilidad del "último geohot"
  • Apple podría usar SPTM para gestionar las transiciones entre el mundo seguro y el mundo no seguro
    • Porque no tiene TrustZone