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’équipe | ID de bundle |
|---|---|
| 3T5GSNBU6W | com.github.osxfuse.filesystems.osxfuse |

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.