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

Configurer la mitigation Microarchitectural Data Sampling (MDS)

Exige le paramètre de démarrage noyau mds=full,nosmt pour mitiger totalement les canaux auxiliaires Microarchitectural Data Sampling, y compris la voie de fuite inter-hyperthread.

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

Le Microarchitectural Data Sampling (MDS) est une classe de vulnérabilités par canal auxiliaire (Fallout, RIDL, ZombieLoad) qui permet à un attaquant d'échantillonner des données résiduelles dans les buffers internes du CPU (store, fill et load buffers) appartenant à d'autres processus, au noyau, à des VM ou à des enclaves SGX. Comme ces buffers sont partagés entre hyperthreads, une mitigation partielle qui ne désactive pas le SMT peut encore fuiter des données. Définir mds=full,nosmt vide les buffers concernés à chaque changement de contexte et désactive le SMT, fermant entièrement la voie de fuite inter-thread.

Ce que vérifie Pavois

Pavois lit la ligne de commande noyau active depuis /proc/cmdline et vérifie la présence de mds=full,nosmt. C'est la ligne de boot réellement analysée par le noyau, et non /etc/default/grub, un scan basé fichier pourrait passer sur une config GRUB modifiée jamais régénérée, laissant le SMT et les buffers exposés. Vous pouvez recouper le verdict du noyau via /sys/devices/system/cpu/vulnerabilities/mds.

describe command('cat /proc/cmdline') do
  its('stdout') { should match(/(^| )mds=full( |$)/) }
end
describe command("grep -hwsF 'mds=full' /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 la présence de mds=full,nosmt. Vérifiez que la mitigation est active avec :

cat /sys/devices/system/cpu/vulnerabilities/mds

La sortie attendue indique Mitigation: Clear CPU buffers; SMT disabled.

Inspecter et investiguer

L'état de la mitigation est exposé sous sysfs : cat /sys/devices/system/cpu/vulnerabilities/mds. Le noyau affiche aussi sa décision au démarrage, dmesg | grep -i 'MDS' ou journalctl -k | grep -i mds.

Remédiation

pavois harden apply utilise la ressource kernel_cmdline pour ajouter mds=full,nosmt à la configuration du bootloader et la régénérer, afin que l'option soit présente au prochain démarrage. 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 :

parammds=full
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

nosmt désactive l'Hyper-Threading, ce qui peut réduire le débit des charges multi-thread liées au CPU jusqu'à ~30 %. Précautions :

  • Mesurez d'abord les charges sensibles à la latence ou à fort nombre de cœurs ; vous perdez des cœurs logiques.
  • Sur des hôtes mono-locataire et de confiance, vous pouvez conserver le SMT et accepter le risque résiduel, mais cette règle impose le profil strict full,nosmt.
  • Le flush est inoffensif sur les CPU corrigés rapportant déjà Not affected.
  • S'applique uniquement 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