URL:     https://linuxfr.org/users/mjules/journaux/modulejail-generer-une-liste-de-blocage-des-modules-pour-reduire-la-surface-d-attaque-du-noyau-linux
Title:   Modulejail, générer une liste de blocage des modules pour réduire la surface d'attaque du noyau Linux
Authors: Mjules
Date:    2026-06-07T16:30:05+02:00
License: CC By-SA
Tags:    kernel, linux, sécurité et modules
Score:   1


Les failles récentes comme [copy.fail](https://copy.fail/) m'ont fait réaliser que les mécanismes d'autochargement des modules, bien que très pratiques, pouvaient permettre d'attaquer le noyau.

D'autant plus avec les noyaux génériques des distributions qui, afin d'avoir une compatibilité importante, incluent un grand nombre de composants optionnels qui peuvent alors servir de cibles.

Mitiger ces problèmes peut se faire de plusieurs façons comme par exemple compiler soi-même son noyau avec les seuls options/pilotes nécessaires, ou encore, bloquer le chargement de tous les modules après le boot à l'aide de l'option sysctl :
 `sysctl kernel.modules_disabled=1`

En moins strict, j'ai découvert récemment [Modulejail](https://github.com/jnuyens/modulejail), script shell qui permet de générer une liste de modules, à placer dans /etc/modprobe.d/ qui ne pourront pas être chargé automatiquement ou via la commande modprobe sans option. Exemple du début d'un fichier sur une debian 13 (3465 modules bloqués) :

```
# modulejail 1.3.1
# https://github.com/jnuyens/modulejail
# profile: conservative
# kernel: 6.12.90+deb13-armmp-lpae
# fingerprint: sha256:d2dbed22405b981dc040cf1cdaa84d520e388327133f43c6237f4e754d8cd33d
# install-line: /bin/sh + logger + /bin/false (syslog tag: modulejail, --fail-on-module-load)
# invocation: ./modulejail -f -o ./modulejail-blacklist.conf
# Do not edit by hand — regenerate with modulejail(8).
install 3w_sas /bin/sh -c '/usr/bin/logger -t modulejail "blocked: 3w_sas" 2>/dev/null; /bin/false'
install 6lowpan /bin/sh -c '/usr/bin/logger -t modulejail "blocked: 6lowpan" 2>/dev/null; /bin/false'
install 6pack /bin/sh -c '/usr/bin/logger -t modulejail "blocked: 6pack" 2>/dev/null; /bin/false'
install 8021q /bin/sh -c '/usr/bin/logger -t modulejail "blocked: 8021q" 2>/dev/null; /bin/false'
```

Le script exclut les modules déjà chargés par le système ainsi qu'une liste variable selon trois profils ([minimal](https://github.com/jnuyens/modulejail/blob/master/modulejail#L82), [conservative](https://github.com/jnuyens/modulejail/blob/master/modulejail#L89) et [desktop](https://github.com/jnuyens/modulejail/blob/master/modulejail#L100)).

Il ne protège pas si l'attaquant est déjà root, (par exemple insmod module.ko ne lit pas /etc/modprobe.d ), il ne corrige pas les bugs, il réduit la surface d'attaque du noyau (ce qui est déjà pas mal).

En cas de problème, il suffit de supprimer/déplacer le fichier pour restaurer le comportement par défaut.

Et bien sur, comme toujours, il est important de lire la documentation avant utilisation pour adapter à votre cas.

Lien : https://github.com/jnuyens/modulejail 

