Interdire la fusion des caches slab
Exige que le noyau ne fusionne pas les caches slab par défaut (CONFIG_SLAB_MERGE_DEFAULT n'est pas à y), gardant isolés les types d'objets sans rapport.
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
Par défaut, le noyau fusionne les caches slab de taille similaire pour économiser la mémoire. La fusion mélange des objets noyau sans rapport dans un même cache : un débordement de tas affectant un type d'objet peut alors corrompre des objets d'un type tout autre, sensible pour la sécurité. Garder les caches séparés (CONFIG_SLAB_MERGE_DEFAULT non positionné à y, ou slab_nomerge sur la ligne de boot) confine un débordement aux objets du même type, réduisant la surface d'attaque du noyau.
Ce que vérifie Pavois
Pavois lit la configuration de compilation du noyau en cours d'exécution via /boot/config-$(uname -r) ou /proc/config.gz et vérifie que CONFIG_SLAB_MERGE_DEFAULT n'est pas à y (la valeur conforme est n/non défini). Lire la config effective du noyau démarré prouve si la fusion est le comportement par défaut du noyau réellement en cours. Notez que le paramètre de boot slab_nomerge peut aussi désactiver la fusion à l'exécution, indépendamment de ce défaut de compilation.
describe command("C=/boot/config-$(uname -r); if [ -r \"$C\" ]; then cat \"$C\"; elif zcat /proc/config.gz 2>/dev/null | head -1 | grep -q .; then zcat /proc/config.gz; else echo PAVOIS_NO_KERNEL_CONFIG; fi | grep -E '^(CONFIG_SLAB_MERGE_DEFAULT=|PAVOIS_NO_KERNEL_CONFIG)'") do
its('stdout') { should_not match(/PAVOIS_NO_KERNEL_CONFIG/) }
its('stdout') { should_not match(/^CONFIG_SLAB_MERGE_DEFAULT=y$/) }
endComment vérifier qu’elle est appliquée
grep '^CONFIG_SLAB_MERGE_DEFAULT=' /boot/config-$(uname -r) || zcat /proc/config.gz | grep '^CONFIG_SLAB_MERGE_DEFAULT='
Conforme si le résultat est CONFIG_SLAB_MERGE_DEFAULT=n, si la ligne est absente, ou si le noyau démarre avec slab_nomerge (vérifiez cat /proc/cmdline). Un résultat CONFIG_SLAB_MERGE_DEFAULT=y sans slab_nomerge est non conforme.
Inspecter et investiguer
Il s'agit d'une configuration statique de compilation/boot, sans flux de journal dédié. Inspectez la ligne de commande de boot avec cat /proc/cmdline pour voir si slab_nomerge est actif, et confirmez le défaut de compilation avec la commande grep ci-dessus.
Remédiation
Aucune remédiation automatique n'est fournie. Le défaut de compilation CONFIG_SLAB_MERGE_DEFAULT ne se modifie pas à chaud, mais vous pouvez désactiver la fusion sans recompiler en ajoutant le paramètre slab_nomerge à la ligne de boot du noyau (par ex. via GRUB_CMDLINE_LINUX) puis en redémarrant. Sinon, démarrez un noyau compilé avec CONFIG_SLAB_MERGE_DEFAULT=n.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| resource | kernel_build |
|---|
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Avec la fusion de caches activée, un débordement de tas peut atteindre d'autres types d'objets, élargissant le rayon d'impact des exploits noyau. Précautions : désactiver la fusion (via slab_nomerge ou un noyau sans fusion) augmente modérément la consommation mémoire du noyau, les caches n'étant plus consolidés, surveillez la mémoire sur les systèmes très contraints. Les deux voies imposent un redémarrage ; planifiez une fenêtre de maintenance et conservez une entrée de boot de repli. Testez la nouvelle ligne de boot avec un accès console pour éviter tout blocage en cas d'erreur de saisie du paramètre.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R17 | 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.