À propos des Exclaves d’Apple
(randomaugustine.medium.com)Les problèmes des noyaux monolithiques
- Les systèmes d’exploitation modernes se divisent généralement en deux grands domaines de protection :
- Domaine non privilégié (mode utilisateur) : les programmes ne peuvent pas effectuer directement des opérations sensibles comme l’accès aux fichiers ou les communications réseau
- Domaine privilégié (mode noyau) : lorsqu’un programme demande au noyau d’exécuter une opération via un appel système, le code du noyau l’exécute puis renvoie le résultat en mode utilisateur
- La plupart des systèmes d’exploitation utilisent une architecture de noyau monolithique :
- le noyau dispose d’un accès illimité à tout le matériel, à la mémoire et aux données utilisateur du système
- cela fonctionnerait bien si les logiciels étaient sans défauts et s’il n’existait aucune tentative de compromission, mais en pratique il y a des bugs et des vulnérabilités de sécurité
- comme les noyaux monolithiques sont volumineux, la probabilité de vulnérabilités est plus élevée, et une seule faille peut compromettre l’ensemble du système
- L’architecture microkernel renforce la sécurité en retirant la plupart des fonctions du noyau pour les exécuter dans des processus séparés non privilégiés :
- la sécurité peut être renforcée
- mais cela peut entraîner une baisse des performances et une augmentation de la complexité du logiciel applicatif
- malgré cela, les noyaux monolithiques restent largement utilisés en raison de leurs avantages en performances
- Le noyau XNU d’Apple :
- noyau commun utilisé par iOS, macOS, tvOS, visionOS et watchOS
- il repose sur un microkernel Mach, mais comme la plupart des fonctions système s’exécutent dans le même périmètre privilégié, il se comporte en pratique comme un noyau monolithique
- il est donc exposé aux mêmes vulnérabilités de sécurité qu’un noyau monolithique
Efforts d’isolation
- Diverses technologies d’isolation logicielles et matérielles ont été introduites :
- Microsoft Virtualisation-based Security (VBS) – utilisée dans Credential Guard de Windows
- Intel Software Guard Extension (SGX) et VT-X2
- ARM TrustZone – utilisé dans Samsung Knox, Samsung Pay, Android Verified Boot, la saisie sécurisée de code PIN sur Android, etc.
Apple a lui aussi progressivement élargi ses tentatives de séparation des données hors du noyau
-
2013 — Apple Secure Enclave
- introduit pour la première fois sur l’iPhone 5s en 2013
- Secure Enclave fonctionne sur un cœur CPU durci indépendant, avec SepOS, un OS basé sur un microkernel
- le noyau de SepOS utilise cL4, le microkernel embarqué L4 personnalisé d’Apple
- il stocke et protège des données sensibles comme les clés de chiffrement et les informations biométriques (par ex. Face ID)
- il fonctionne indépendamment du noyau iOS et ne fournit des services à iOS qu’au travers d’interactions sécurisées
- même si le noyau iOS est compromis, Secure Enclave n’est pas affecté sauf en cas d’exploit supplémentaire
- attention, Secure Enclave et Secure Exclave sont deux concepts différents
-
2017 — Page Protection Layer (PPL)
- fonctionnalité de sécurité introduite avec le processeur A11 des iPhone 8 et iPhone X
- mécanisme matériel + logiciel qui n’accorde les droits de modification des tables de pages qu’à certaines parties du noyau
- le reste du noyau est limité pour la modification des tables de pages
- la surface d’attaque est réduite, ce qui rend les contournements plus rares
- le PPL a ajouté une couche de protection, mais la majorité des privilèges du noyau restait intacte, ce qui limitait le renforcement complet de la sécurité
-
2021–2023 — Secure Page Table Monitor (SPTM)
- nouvelle fonctionnalité introduite avec le processeur A15 de l’iPhone 13 et iOS 17
- elle remplace PPL, protège des fonctions mémoire supplémentaires et les sépare en plusieurs sous-systèmes
- elle renforce la sécurité via la vérification de signature de code et l’exécution exclusive de code signé par Apple
- c’est à cette période que le code source de XNU commence à contenir des références indirectes à exclave
- ce qui a conduit à l’hypothèse que les sous-systèmes gérés par SPTM pourraient être des exclaves
-
2024 — Exclaves : refonte majeure du modèle de sécurité de XNU
- le concept d’exclave apparaît dans le code source de XNU prenant en charge les processeurs M4 et A18
- les exclaves ne sont pas activés sur les processeurs précédents
- il devient clair que les exclaves sont le résultat d’une refonte majeure du modèle de sécurité de XNU
-
Exclaves de XNU
Avertissement : la structure interne des exclaves n’est pas entièrement open source, donc certains éléments peuvent relever de la supposition ou de l’interprétation
- les exclaves constituent un nouvel ensemble de fonctionnalités qui renforcent fortement le modèle de sécurité historique à noyau monolithique de XNU
- les exclaves sont des ressources isolées de XNU, protégées même si le noyau est compromis
- caractéristiques des exclaves :
- elles sont prédéfinies lors de la compilation de l’OS
- elles sont identifiées par un nom ou un ID
- elles existent en plusieurs types
- elles sont initialisées au démarrage
- elles sont organisées en domaines indépendants
- SPTM protège la mémoire des exclaves avec un nouveau type de page dédié aux exclaves
- types de ressources d’exclave
- buffers mémoire partagés – accessibles à la fois par le noyau et par les exclaves
- configurables dans XNU en lecture seule ou en lecture/écriture
- buffers audio et capteurs – renforcent la sécurité des indicateurs d’accès à la caméra et au micro
- Conclave – regroupe plusieurs ressources dans son propre domaine de sécurité, avec un Conclave Manager pour les administrer
- services – exécutent du code dans l’exclave lorsqu’ils sont appelés par des threads de XNU
- buffers mémoire partagés – accessibles à la fois par le noyau et par les exclaves
-
Noyau sécurisé — basé sur seL4 ?
- un nouveau noyau, le Secure Kernel (SK), a été introduit pour permettre l’exécution indépendante des services d’exclave par rapport à XNU
- une chaîne de version « cL4 » a été repérée dans le fichier image de SK
- il est probable que SK repose sur seL4 plutôt que sur le noyau cL4 (basé sur L4) déjà utilisé par Apple
- les structures IPC utilisées par XNU pour communiquer avec SK ressemblent à celles de seL4
- de nombreuses chaînes utilisées dans SK reprennent des concepts présents dans seL4 (par ex. capabilities, frames, untyped memory, etc.)
- l’adhésion d’Apple à la seL4 Foundation en avril 2024 n’est peut-être pas un hasard
- le noyau du processeur C1 (la nouvelle puce baseband d’Apple) semble lui aussi basé sur L4
-
Monde sécurisé — ARM TrustZone ?
- SepOS s’exécute sur un processeur séparé, tandis que SK s’exécute sur le processeur d’application haute performance
- cela nécessite un niveau de privilège processeur supplémentaire, qui pourrait être mis en œuvre via l’un des mécanismes suivants :
- prise en charge des extensions de virtualisation
- extension SPTM propre à Apple
- l’usage de la technologie ARM TrustZone semble le plus probable
- architecture de TrustZone
- le système est séparé en deux mondes :
- Secure World – exécution du code sécurisé
- Insecure World – exécution du code normal (XNU et iOS)
- le code source de XNU contient de nombreuses références aux transitions entre Secure World et Insecure World de TrustZone
- Apple applique le modèle de service d’exclave plutôt que le Trusted Application model proposé par TrustZone
- SK fournit des services et des ressources d’exclave dans un environnement isolé, ce qui renforce la sécurité
- il serait extrêmement difficile de s’échapper de Secure World vers Insecure World pour compromettre XNU
- le système est séparé en deux mondes :
- RINGGATE
- Apple pourrait utiliser SPTM pour gérer les transitions Secure World ↔ Insecure World
- dans le code, cette transition est désignée sous le nom de "RINGGATE"
Conclusion
- Ce que signifie l’introduction des exclaves
- pour répondre aux attaques persistantes d’acteurs de menace avancés, Apple a introduit les exclaves afin de renforcer le niveau de sécurité du système d’exploitation
- en isolant les ressources sensibles, les effets attendus sont les suivants :
- réduction de la surface d’attaque
- réduction de l’impact d’une vulnérabilité unique du noyau
- défendre un noyau monolithique est un défi sans fin, et les exclaves représentent une approche parmi d’autres pour y répondre
- il reste incertain de savoir s’il s’agit de la bonne direction à long terme ou d’une solution transitoire
- souhait personnel → espérer à l’avenir une refonte basée sur CHERI et ARM Morello 😊
- mais pour l’instant, c’est la tentative de défense la plus ambitieuse parmi les fabricants d’appareils grand public
- cet article n’explique pas précisément quels composants ont été déplacés dans les exclaves
- d’après les images de build, les éléments suivants semblent s’exécuter dans les exclaves :
- indicateurs sécurisés de caméra/micro
- une partie des fonctions de l’Apple Neural Engine (ANE)
- certains pilotes de périphériques
- les composants de communication avec Secure Enclave
- d’après les images de build, les éléments suivants semblent s’exécuter dans les exclaves :
- d’autres composants pourraient à l’avenir être transférés dans les exclaves
- l’efficacité sécuritaire des exclaves dépendra du niveau d’optimisation de ces migrations
- les exclaves pourraient être utilisées dans l’infrastructure Apple Private Cloud Compute
- avec la possibilité d’assurer un haut niveau de sécurité et de confidentialité pour l’IA dans le cloud
1 commentaires
Avis Hacker News