From ae3461b085b0cbac45806c62c303c72d09f923c9 Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 9 Sep 2026 17:03:12 +0200 Subject: [PATCH] Garde l'hyperthreading (exception R8 explicite, pas de contournement silencieux) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- hosts/common/base.nix | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/hosts/common/base.nix b/hosts/common/base.nix index 6d838b9..c969b74 100644 --- a/hosts/common/base.nix +++ b/hosts/common/base.nix @@ -36,16 +36,36 @@ # sont des postes clients), mais à ne SURTOUT PAS importer sur # pxe-server/configuration.nix, qui a besoin l'inverse (voir son # 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 = { enable = true; level = "intermediary"; 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 # explicitement listé en exception : "AppArmor is partially supported # on NixOS", modules/anssi/base.nix) -- repris tel quel du profil oreo.