← Toutes les règles
SOCLE-CLD-KRN-006// Kernel command linemoyenneruntime effectif

Forcer un kernel panic sur les MCE non corrigées

Exige le paramètre de démarrage noyau mce=0 afin qu'une Machine Check Exception non corrigée déclenche un kernel panic immédiat au lieu d'un SIGBUS récupérable.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Une Machine Check Exception (MCE) non corrigée signale une corruption mémoire ou CPU. Par défaut, le noyau tolère ces erreurs en envoyant un SIGBUS au processus concerné puis poursuit son exécution. Laisser le système en vie après une corruption permet à un attaquant de rejouer une attaque par injection de faute matérielle (telle que Rowhammer) jusqu'à ce qu'un bit-flip atteigne un emplacement utile. Forcer un kernel panic sur les MCE non corrigées (mce=0) transforme chaque corruption en arrêt brutal, supprimant la capacité de l'attaquant à itérer.

Ce que vérifie Pavois

Pavois lit la ligne de commande noyau active depuis /proc/cmdline et vérifie la présence de mce=0. /proc/cmdline est la ligne de boot effective réellement analysée par le noyau en cours, et non /etc/default/grub ou un drop-in dans /etc/default/grub.d/, qui peut avoir été modifié sans régénérer la configuration du bootloader. Lire le fichier rapporterait une valeur pas encore en vigueur ; lire /proc/cmdline ne peut être trompé.

describe command('cat /proc/cmdline') do
  its('stdout') { should match(/(^| )mce=0( |$)/) }
end
describe command("grep -hwsF 'mce=0' /etc/default/grub /etc/kernel/cmdline /boot/grub/grub.cfg /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg 2>/dev/null") do
  its('stdout') { should match(/\S/) }
end

Comment vérifier qu’elle est appliquée

Lancez cat /proc/cmdline et confirmez que la sortie contient le jeton autonome mce=0, par exemple :

BOOT_IMAGE=/vmlinuz ... mce=0 ...

Inspecter et investiguer

Les évènements Machine Check sont journalisés par le noyau, inspectez dmesg | grep -i mce ou journalctl -k | grep -i mce. Avec mce=0, une erreur non corrigée apparaît comme un panic dans le ring buffer noyau juste avant l'arrêt du système.

Remédiation

pavois harden apply utilise la ressource kernel_cmdline pour ajouter le paramètre mce=0 à la configuration du bootloader (GRUB) et la régénérer, afin que l'option soit présente au prochain démarrage. S'agissant d'un paramètre de boot, un redémarrage est requis pour qu'il prenne effet.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

parammce=0
reboot_requiredtrue
resourcekernel_cmdline
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Avec mce=0, toute erreur matérielle non corrigée devient un arrêt brutal du système au lieu d'un évènement récupérable. Sur du matériel défaillant ou vieillissant, cela peut transformer des anomalies mémoire isolées en indisponibilités imprévues. Précautions :

  • À éviter sur les hôtes à RAM/CPU marginaux connus ; remplacez d'abord le matériel.
  • Validez sur un nœud non critique et assurez-vous d'avoir une supervision/redémarrage automatique avant un déploiement de masse.
  • Conservez un accès console série ou hors-bande pour que le panic soit visible sur les machines sans écran.
  • Le changement ne s'applique qu'après redémarrage ; planifiez une fenêtre de maintenance.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R8direct2.0haute

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références