Garde l'hyperthreading (exception R8 explicite, pas de contournement silencieux)

R8 (mitigations CPU) coupe le SMT via mds=full,nosmt. Désactivé via
security.anssi.exceptions.R8 (mécanisme prévu par le module), puis
boot.kernelParams réaffirme le reste de R8 à l'identique du texte
source (modules/anssi/kernel-options.nix), sauf mds=full,nosmt ->
mds=full (valeur alternative documentée du même paramètre, mitige MDS
sans couper l'hyperthreading).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 17:03:12 +02:00
co-authored by Claude Sonnet 5
parent 6bcb16b8ab
commit ae3461b085
+24 -4
View File
@@ -36,16 +36,36 @@
# sont des postes clients), mais à ne SURTOUT PAS importer sur # sont des postes clients), mais à ne SURTOUT PAS importer sur
# pxe-server/configuration.nix, qui a besoin l'inverse (voir son # pxe-server/configuration.nix, qui a besoin l'inverse (voir son
# networking.nat) -- pxe-server n'importe pas ce fichier, donc ok. # networking.nat) -- pxe-server n'importe pas ce fichier, donc ok.
# R8 ajoute des mitigations CPU dont "mds=full,nosmt" (désactive
# l'hyperthreading) : impact perf réel sur du matériel bas de gamme,
# c'est la vraie recommandation ANSSI au niveau "intermediary", pas
# une invention -- à surveiller sur les PC les plus faibles du parc.
security.anssi = { security.anssi = {
enable = true; enable = true;
level = "intermediary"; level = "intermediary";
category = "client"; category = "client";
# R8 (mitigations CPU) désactive l'hyperthreading via "mds=full,nosmt"
# -- impact perf trop lourd sur le matériel bas de gamme du parc (PC
# à 4 Go de RAM). On désactive donc la règle via le mécanisme d'exception
# prévu par le module lui-même (modules/anssi/options.nix), PAS en la
# contournant en silence.
exceptions.R8.rationale = "SMT (hyperthreading) volontairement conservé : impact perf trop lourd sur le parc (matériel bas de gamme, parfois 4 Go de RAM). Les autres mitigations de R8 sont réappliquées ci-dessous, à l'identique du texte source (modules/anssi/kernel-options.nix), sauf 'nosmt' remplacé par la valeur alternative documentée 'mds=full' (mitige MDS sans couper l'hyperthreading).";
}; };
# Reprise verbatim de modules/anssi/kernel-options.nix (règle R8), sauf
# "mds=full,nosmt" -> "mds=full" (voir exception R8 ci-dessus). Toutes
# les autres valeurs viennent du texte source, aucune n'est inventée.
boot.kernelParams = [
"l1tf=full,force"
"page_poison=on"
"pti=on"
"slab_nomerge=yes"
"slub_debug=FZP"
"spec_store_bypass_disable=seccomp"
"spectre_v2=on"
"mds=full" # sans ",nosmt" : hyperthreading conservé
"mce=0"
"page_alloc.shuffle=1"
"rng_core.default_quality=500"
];
# Pas (encore) couvert par le module ANSSI ci-dessus (R45 y est # Pas (encore) couvert par le module ANSSI ci-dessus (R45 y est
# explicitement listé en exception : "AppArmor is partially supported # explicitement listé en exception : "AppArmor is partially supported
# on NixOS", modules/anssi/base.nix) -- repris tel quel du profil oreo. # on NixOS", modules/anssi/base.nix) -- repris tel quel du profil oreo.