Configurer les mitigations de la faille L1 Terminal Fault
Garantit que le noyau a démarré avec l1tf=full,force, activant la mitigation la plus forte de L1 Terminal Fault, y compris le contrôle inconditionnel du SMT/hyper-threading.
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.
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
L1TF (L1 Terminal Fault, alias Foreshadow) est une vulnérabilité d'exécution spéculative qui permet à un attaquant de lire toute mémoire physique mise en cache dans le cache de données L1, contournant les contrôles d'accès mémoire imposés par l'OS ou l'hyperviseur. Sur un hôte partagé ou une plateforme de virtualisation, cela permet le vol de secrets entre VM / entre invités. l1tf=full,force applique la mitigation complète et la force même lorsque le noyau la jugerait inutile, et désactive le partage SMT vulnérable, la configuration imposée par l'ANSSI BP-028 R8 pour les CPU Intel affectés.
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 l1tf=full,force. C'est décisif par rapport à la lecture de /etc/default/grub : le fichier de config n'est qu'une intention pour le prochain démarrage, alors que /proc/cmdline prouve que la mitigation est active dans le noyau en cours. Recoupez l'état effectif avec /sys/devices/system/cpu/vulnerabilities/l1tf, qui rapporte la mitigation réellement appliquée.
describe command('cat /proc/cmdline') do
its('stdout') { should match(/(^| )l1tf=full( |$)/) }
end
describe command("grep -hwsF 'l1tf=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/) }
endComment vérifier qu’elle est appliquée
Exécutez cat /proc/cmdline et confirmez la présence de l1tf=full,force, puis cat /sys/devices/system/cpu/vulnerabilities/l1tf doit indiquer la mitigation active (p. ex. Mitigation: PTE Inversion; VMX: cache flushes, SMT disabled). Le drapeau n'apparaît qu'après un redémarrage.
Inspecter et investiguer
La mitigation effective est rapportée par cat /sys/devices/system/cpu/vulnerabilities/l1tf. Les messages de mitigation/SMT du noyau apparaissent dans dmesg (dmesg | grep -i -e l1tf -e smt).
Remédiation
pavois harden apply utilise la ressource kernel_cmdline pour ajouter l1tf=full,force à la configuration du chargeur d'amorçage (GRUB) et la régénérer. Signalé reboot_required : la mitigation ne prend effet, et 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 :
| param | l1tf=full |
|---|---|
| reboot_required | true |
| resource | kernel_cmdline |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Compromis de performance important : full,force peut désactiver le SMT/hyper-threading, ce qui peut réduire le débit sur les charges limitées par le CPU et fortement virtualisées, anticipez la perte de capacité. Précautions : sur les CPU AMD (non affectés par L1TF), l'option est de fait sans effet ; sur les CPU Intel récents avec corrections matérielles, elle peut être inutile. Validez l'état réel via /sys/.../vulnerabilities/l1tf plutôt que de le supposer. Nécessite un redémarrage ; vérifiez que le chargeur d'amorçage s'est régénéré proprement pour éviter de démarrer une ligne de noyau imprévue.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R8 | direct | 2.0 | haute |
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.