Extension sécurisée du noyau sous macOS
À partir de macOS 11, si les extensions de noyau tierces sont activées, elles ne peuvent pas être chargées dans le noyau sur demande. Au lieu de cela, elles sont fusionnées dans une collection du noyau auxiliaire (AuxKC), qui est chargée pendant le processus de démarrage. Pour un Mac avec puce Apple, la mesure de l’AuxKC est signée dans le fichier LocalPolicy (sur les ordinateurs plus anciens, l’AuxKC réside dans le volume de données). La reconstruction de l’AuxKC requiert l’approbation de l’utilisateur et le redémarrage de macOS pour charger les modifications dans le noyau. Le démarrage sécurisé doit aussi être réglé à « Sécurité réduite ».
Important : Les extensions de noyau ne sont plus recommandées pour macOS. Puisque ces extensions mettent en danger l’intégrité et la fiabilité du système d’exploitation, Apple recommande aux utilisateurs de privilégier des solutions qui n’y ont pas recours.
Extensions de noyau sur un Mac avec puce Apple
Les extensions de noyau doivent être explicitement activées sur un Mac avec puce Apple en maintenant le bouton d’alimentation enfoncé au démarrage pour lancer le mode 1TR (One True Recovery), en rétrogradant ensuite le règlement de sécurité à « Sécurité réduite », puis en cochant la case qui permet d’activer les extensions de noyau. Cette action requiert aussi d’entrer un mot de passe administrateur pour autoriser la rétrogradation. La combinaison du mode 1TR et de l’exigence d’un mot de passe complique les attaques purement logicielles à partir de macOS visant à introduire des extensions de noyau pour permettre à un assaillant de s’arroger les privilèges du noyau.
Une fois qu’un utilisateur autorise le chargement d’extensions de noyau, le processus de chargement des extensions de noyau approuvées par l’utilisateur est utilisé pour autoriser l’installation des extensions de noyau. L’autorisation utilisée pour ce processus est également utilisée pour capturer un hachage SHA384 de l’UAKL (User Authorized Kext List, liste d’extensions de noyau autorisées par l’utilisateur) dans le fichier LocalPolicy. Le démon de gestion du noyau (kmd
) est ensuite chargé de valider uniquement les extensions de noyau répertoriées dans l’UAKL en vue de leur inclusion dans l’AuxKC.
Si la protection de l’intégrité du système (SIP) est activée, la signature de chaque extension de noyau est vérifiée avant d’être incluse dans l’AuxKC.
Si la SIP est désactivée, la signature de l’extension de noyau n’est pas imposée.
Les flux de sécurité permissive permettent aux développeurs ou aux utilisateurs qui ne font pas partie du programme Apple pour les développeurs de tester les extensions de noyau avant qu’elles ne soient signées.
Une fois l’AuxKC créée, sa mesure est envoyée au Secure Enclave pour être signée et incluse dans une structure de données Image4 qui pourra être évaluée par iBoot au démarrage. Dans la cadre de la création de l’AuxKC, un reçu d’extension de noyau est également généré. Il contient la liste des extensions de noyau qui ont effectivement été incluses dans l’AuxKC, car l’ensemble pourrait être un sous-ensemble de l’UAKL si des extensions de noyau interdites étaient détectées. Un hachage SHA384 de la structure de données Image4 de l’AuxKC et un reçu d’extension de noyau sont inclus dans le fichier LocalPolicy. Le hachage Image4 de l’AuxKC est utilisé pour qu’iBoot puisse procéder à une vérification supplémentaire au démarrage afin de contribuer à empêcher le démarrage d’un ancien fichier Image4 de l’AuxKC signé par le Secure Enclave au moyen d’un fichier LocalPolicy plus récent. Le reçu de l’extension de noyau est utilisé par les sous-systèmes, comme Apple Pay, pour déterminer si des extensions de noyau susceptibles d’interférer avec la fiabilité de macOS sont actuellement chargées. Si tel est le cas, les fonctionnalités d’Apple Pay pourraient être désactivées.
Extensions système
macOS 10.15 permet aux développeurs d’étendre les capacités de macOS en installant et en gérant des extensions système qui s’exécutent dans l’espace utilisateur plutôt qu’au niveau du noyau. En s’exécutant dans l’espace utilisateur, les extensions système augmentent la stabilité et la sécurité de macOS. Bien que les extensions de noyau aient pleinement accès à l’intégralité du système d’exploitation, les extensions exécutées dans l’espace utilisateur reçoivent uniquement les privilèges nécessaires à la réalisation de leur fonction indiquée.
Les développeurs peuvent utiliser des cadres d’application comme DriverKit, EndpointSecurity et NetworkExtension pour écrire des pilotes USB et d’interface humaine, des outils pour la sécurité des terminaux (comme la prévention des pertes de données ou d’autres agents de terminaux) ainsi que des outils VPN et réseau, le tout sans devoir écrire d’extensions de noyau. Des agents de sécurité tiers ne devraient être utilisés que s’ils tirent parti de ces API ou s’ils sont dotés d’une solide feuille de route pour passer à ces interfaces et délaisser les extensions du noyau.
Chargement des extensions de noyau approuvées par l’utilisateur
Pour une sécurité accrue, l’autorisation de l’utilisateur est exigée pour le chargement d’extensions de noyau installées en même temps que macOS 10.13 ou après la mise à niveau. On appelle ce processus le chargement d’extensions de noyau approuvées par l’utilisateur. L’autorisation de l’administrateur est requise pour approuver une extension du noyau. Les extensions de noyau ne nécessitent pas d’autorisation si elles :
ont été installées sur un Mac sous macOS 10.12 ou une version antérieure;
remplacent des extensions déjà approuvées;
sont autorisées à s’exécuter sans l’approbation de l’utilisateur à l’aide de l’outil de ligne de commande
spctl
accessible à partir de recoveryOS;sont autorisées à s’exécuter à l’aide de la solution de gestion des appareils mobiles (GAM).
Sous macOS 10.13.2 et les versions ultérieures, les utilisateurs peuvent utiliser la GAM pour préciser une liste d’extensions de noyau pouvant être chargées sans autorisation. Cette option nécessite un Mac exécutant macOS 10.13.2 inscrit à une solution de GAM par l’entremise d’Apple School Manager, d’Apple Business Manager ou d’une inscription à la GAM effectuée par l’utilisateur.