KO (module noyau Linux) : fichier .ko
pérenneexécution directe, à risqueModule chargeable dynamiquement dans le noyau Linux, permettant d'ajouter un pilote ou une fonctionnalité sans redémarrer ni recompiler le noyau entier.
Un .ko s'exécute au double-clic, sans confirmation de contenu : ce n'est pas un document qui se contente de s'afficher. Ne l'ouvrez pas directement : vérifiez d'abord sa vraie nature avec l'identifiant de fichiers, ou son empreinte avec le vérificateur de hash si une source de confiance en a publié une.
Un fichier KO est un module chargeable dynamiquement dans le noyau Linux, permettant d’ajouter un pilote de périphérique, un système de fichiers ou une fonctionnalité réseau à un système déjà démarré, sans devoir recompiler le noyau entier ni redémarrer la machine. L’insertion se fait via les commandes insmod ou, plus couramment, modprobe qui gère aussi les dépendances entre modules.
Le fichier partage le même conteneur ELF (Executable and Linkable Format) que n’importe quel exécutable ou bibliothèque partagée sous Linux, avec la même signature d’en-tête : seul un champ de type interne (ET_REL, indiquant un fichier objet relogeable plutôt qu’un exécutable direct) distingue structurellement un module noyau d’un binaire ordinaire.
Le noyau vérifie une signature de version (vermagic) intégrée au module lors de son chargement, et refuse de charger un module compilé pour une version de noyau différente de celle réellement en cours d’exécution. Cette protection est nécessaire car les structures de données internes du noyau changent fréquemment d’une version à l’autre, rendant un module incompatible potentiellement dangereux plutôt que simplement inopérant.
Un module noyau s’exécute avec les privilèges les plus élevés du système, au niveau anneau 0 du processeur, au-dessus même des protections qui s’appliquent à un processus utilisateur classique : un module malveillant chargé avec succès (rootkit noyau) reste l’une des formes de compromission les plus difficiles à détecter, puisqu’il peut potentiellement dissimuler sa propre présence aux outils de diagnostic du système qu’il a lui-même compromis.
Signature des modules, Secure Boot et lockdown
Avec l’option CONFIG_MODULE_SIG, le noyau vérifie au chargement une signature cryptographique ajoutée à la fin du fichier .ko, hors du conteneur ELF, et repérable par la chaîne ~Module signature appended~. en fin de fichier. En mode permissif, un module non signé ou mal signé se charge quand même mais marque le noyau comme « tainted » (lettre E) ; avec CONFIG_MODULE_SIG_FORCE, il est refusé. Cette signature étant extérieure à l’ELF, retirer les symboles d’un module (strip) après signature la rend invalide.
Le mode lockdown du noyau n’autorise que le chargement de modules valablement signés. Sur des distributions comme Debian, le démarrage avec Secure Boot active ce mode : un module externe non signé par une clé de confiance (pilote propriétaire, module DKMS) est alors refusé, sauf à le signer avec sa propre clé enregistrée comme MOK (Machine Owner Key).
Signature binaire
| Hexadécimal | Offset |
|---|---|
7F 45 4C 46 | 0 |
Vérifier qu'un fichier porte bien cette signature →
Sécurité
Un module noyau malveillant s'exécute avec les privilèges les plus élevés du système (anneau 0), au-dessus même des protections applicables à un processus utilisateur classique. Un rootkit noyau reste l'une des formes de compromission les plus difficiles à détecter et à éliminer.
Auditer les métadonnées de ce format →
Questions fréquentes
Comment ouvrir un fichier .ko ?
Linux (insmod/modprobe) permet d'ouvrir gratuitement un fichier .ko. Voir la liste complète des logiciels compatibles ci-contre.
Quel est le type MIME du format KO (module noyau Linux) ?
Le type MIME du format KO (module noyau Linux) est application/x-object.
Le format KO (module noyau Linux) (.ko) est-il encore utilisé aujourd'hui ?
Oui, le format KO (module noyau Linux) est pérenne : il reste activement utilisé et pris en charge par les logiciels actuels.
Peut-on ouvrir un fichier .ko sur mobile, sans installer d'application ?
Aucun outil web n'est référencé sur cette fiche pour ce format : l'ouverture nécessite un logiciel de bureau (voir la liste « Avec quoi l'ouvrir » ci-contre).
Pourquoi un fichier .ko partage-t-il la même signature qu'un exécutable Linux classique ?
Un module noyau utilise le même format conteneur ELF (Executable and Linkable Format) que n'importe quel exécutable ou bibliothèque partagée sous Linux : seul un champ de type interne à l'en-tête ELF (ET_REL, indiquant un fichier objet relogeable) distingue un module noyau d'un exécutable ordinaire, pas la signature de tête elle-même.
Un module KO compilé pour une version de noyau fonctionne-t-il sur une autre version ?
Rarement sans recompilation : le noyau Linux vérifie une signature de version (vermagic) intégrée au module à son chargement, et refuse de charger un module compilé pour une version de noyau différente de celle en cours d'exécution. Il s'agit d'une protection contre les incompatibilités binaires internes, qui changent fréquemment entre versions du noyau.
Un fichier .ko présente-t-il des risques de sécurité ?
Un module noyau malveillant s'exécute avec les privilèges les plus élevés du système (anneau 0), au-dessus même des protections applicables à un processus utilisateur classique. Un rootkit noyau reste l'une des formes de compromission les plus difficiles à détecter et à éliminer.
DLL, Dylib, ELF, KO, EFI, SYS : les formats binaires système selon l'OS et le niveau de privilège →
Un fichier ne s'ouvre pas : les causes possibles →
Comment savoir si un fichier est corrompu →
Sources
- The Linux Kernel Module Programming Guide (sysprog21)
- The Linux kernel documentation : Kernel module signing facility
- man7.org : kernel_lockdown(7)
- Debian Wiki : SecureBoot
Dernière mise à jour :