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

Directive de configuration de l'IOMMU

Garantit que le noyau a démarré avec iommu=force, activant l'unité de gestion de la mémoire d'E/S (IOMMU) afin que le DMA des périphériques soit médiatisé et confiné.

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

Sur les plateformes x86, l'IOMMU médiatise l'accès direct à la mémoire (DMA) des périphériques matériels. Sans elle, un périphérique malveillant ou compromis (carte PCIe, périphérique Thunderbolt/USB4, micrologiciel) peut effectuer des lectures/écritures DMA arbitraires de la RAM système, contournant entièrement les protections mémoire de l'OS, l'attaque DMA classique utilisée pour extraire des clés ou implanter du code. iommu=force impose la traduction IOMMU même lorsque le micrologiciel la laisserait en passthrough, fermant cette surface d'attaque par accès physique (ANSSI BP-028 R7).

Ce que vérifie Pavois

Pavois lit /proc/cmdline, la ligne avec laquelle le noyau en cours a démarré, et vérifie la présence de iommu=force. Inspecter /etc/default/grub ne montrerait que l'intention pour le prochain démarrage ; /proc/cmdline prouve que la directive IOMMU est active dans le noyau en cours, détectant une régénération ratée du chargeur d'amorçage ou un drop-in ayant silencieusement supprimé le paramètre.

only_if('n/a in a virtualized guest: applied only on bare metal') { command('systemd-detect-virt -q').exit_status != 0 }
describe command('cat /proc/cmdline') do
  its('stdout') { should match(/(^| )iommu=force( |$)/) }
end
describe command("grep -hwsF 'iommu=force' /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

Exécutez cat /proc/cmdline et confirmez la présence de iommu=force. Vérifiez que l'IOMMU s'est réellement activée avec dmesg | grep -e DMAR -e IOMMU (lignes d'initialisation Intel VT-d / AMD-Vi). Le drapeau n'apparaît qu'après un redémarrage suivant un changement de configuration.

Inspecter et investiguer

Les messages d'initialisation IOMMU et de faute DMA sont dans le tampon noyau : dmesg | grep -i -e DMAR -e IOMMU -e AMD-Vi. Les fautes persistantes (un périphérique bloqué dans un DMA illégitime) y apparaissent aussi.

Remédiation

pavois harden apply utilise la ressource kernel_cmdline pour ajouter iommu=force à la configuration du chargeur d'amorçage (GRUB) et la régénérer. Il est signalé reboot_required car l'IOMMU est configurée au démarrage, le paramètre n'apparaît dans /proc/cmdline qu'après le redémarrage suivant.

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

paramiommu=force
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

Plus risqué que les autres réglages de cmdline : forcer l'IOMMU peut casser des périphériques qui dépendent du passthrough DMA (certains GPU, cartes réseau, configurations de passthrough/virtualisation) et, sur un micrologiciel défaillant, provoquer des blocages au démarrage ou des pannes de périphériques. Précautions : la plateforme doit avoir VT-d/AMD-Vi activé dans le BIOS/UEFI ; testez d'abord sur un hôte hors production, conservez un accès console/hors bande pour la récupération, et vérifiez dmesg pour les fautes DMA après redémarrage. Gardez une entrée GRUB antérieure fonctionnelle en repli.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R7direct2.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