Extension du noyau

Introduction aux KEXT pour macOS

Les KEXT (Kernel Extensions) sont des modules qui s’intègrent profondément dans le système d’exploitation macOS afin d’en étendre les fonctionnalités ou de prendre en charge du matériel et des exigences système spécifiques. Ils fonctionnent au niveau du noyau — le « système nerveux » de l’OS — et permettent ainsi d’accéder à des ressources et des fonctions inaccessibles depuis l’espace utilisateur.

Pourquoi a-t-on besoin des KEXT ?

  • Prise en charge de matériel non natif, comme des cartes graphiques, cartes réseau ou périphériques de stockage externes spécifiques.
  • Implémentation de systèmes de fichiers (par ex. NTFS, FUSE) non disponibles par défaut sous macOS.
  • Extension des fonctionnalités réseau, par exemple pour des protocoles VPN ou des interfaces réseau virtuelles.
  • Intégration de solutions et de contrôles de sécurité au niveau du noyau.
  • Développement de plateformes de virtualisation et de leur interaction avec le noyau.

Avantages des KEXT :

  • Accès système profond : permettent d’ajouter des fonctions impossibles sans accès direct au noyau.
  • Compatibilité matérielle : les périphériques et fonctionnalités non pris en charge nativement par macOS peuvent être pleinement intégrés.
  • Extensibilité flexible : les développeurs peuvent créer des solutions personnalisées pour des besoins spécifiques.

Configuration et application de la politique

Généralités

Les options de configuration suivantes sont disponibles dans la politique :

[ ] Autoriser les utilisateurs sans privilèges administrateur à approuver des extensions du noyau dans les réglages Sécurité et confidentialité
[ ] L’utilisateur peut approuver des extensions du noyau supplémentaires
[ ] Autoriser toutes les extensions du noyau signées avec ces identifiants d’équipe

En règle générale, toutes les KEXT portant le même identifiant d’équipe peuvent être autorisées. Alternativement, la section suivante permet de définir explicitement des extensions avec un identifiant d’équipe.

Extensions du noyau autorisées

Identifiant d’équipeID de bundle
3T5GSNBU6Wcom.github.osxfuse.filesystems.osxfuse

picture


Lecture de l’identifiant d’équipe et de l’ID de bundle

L’identifiant d’équipe peut être lu à partir du fichier macfuse-5.1.1.dmg téléchargé avec la commande suivante :

codesign -d --verbose=2 macfuse-5.1.1.dmg 2>&1 | grep -i teamidentifier

Résultat :

TeamIdentifier=3T5GSNBU6W

L’ID de bundle peut être obtenu à partir d’une KEXT installée manuellement (exemple : macFUSE) comme suit :

kextstat | grep -i fuse

Résultat :

Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
  265    0 0                  0x1830     0x1830     io.macfuse.filesystems.macfuse.25 (5.1.1) 67A4F7E1-82FE-30A4-A3B3-B6E8722C287A <9 7 6 5 3>

Ainsi, io.macfuse.filesystems.macfuse.25 est l’ID de bundle requis.


Remarque

Dans la section Extensions du noyau autorisées, plusieurs ID de bundle peuvent être ajoutés pour un même identifiant d’équipe — soit lors de l’ajout d’une nouvelle entrée, soit lors de la modification d’une entrée existante via le menu à trois points.

Apple KEXT →