Désactiver les vidages mémoire (core dumps) pour les programmes SUID
Définit fs.suid_dumpable=0 pour que les programmes setuid/setgid n'écrivent jamais de core dump, empêchant la fuite du contenu privilégié de la mémoire.
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
Un vidage mémoire (core dump) capture l'image mémoire complète d'un processus au moment où il plante. Pour un programme setuid/setgid, qui s'exécute avec des privilèges supérieurs à ceux de l'utilisateur appelant, cette image peut contenir des secrets, des clés ou d'autres données privilégiées que l'utilisateur ne devrait jamais voir. Définir fs.suid_dumpable=0 interdit à tout programme setuid de produire un core dump, empêchant un attaquant de faire planter délibérément un binaire privilégié pour récupérer le contenu sensible de la mémoire.
Ce que vérifie Pavois
Pavois lit la valeur effective du noyau via la ressource kernel_parameter (équivalent à sysctl fs.suid_dumpable), et non /etc/sysctl.conf ou un drop-in *.conf. Un fichier peut déclarer 0 alors qu'un drop-in ultérieur ou une faute de frappe a laissé la valeur effective à 1 ou 2 ; lire le noyau en cours d'exécution reflète ce que les programmes setuid sont réellement autorisés à faire.
describe kernel_parameter('fs.suid_dumpable') do
its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*fs.suid_dumpable[[:space:]]*=[[:space:]]*0([[:space:]]|$)' /etc/sysctl.conf /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf 2>/dev/null") do
its('stdout') { should match(/\S/) }
endComment vérifier qu’elle est appliquée
Exécutez sysctl fs.suid_dumpable, sortie attendue fs.suid_dumpable = 0.
Inspecter et investiguer
Lisez la valeur courante avec sysctl fs.suid_dumpable ou cat /proc/sys/fs/suid_dumpable. Si un programme setuid plante alors que le vidage est désactivé, le noyau journalise un message de type coredump skipped visible via dmesg ou journalctl -k, et tout gestionnaire de core comme systemd-coredump (journalctl -u systemd-coredump) enregistrera la suppression.
Remédiation
Le plan de durcissement de Pavois définit la clé sysctl fs.suid_dumpable à 0, la persiste dans un drop-in géré et l'applique à chaud, de sorte que le noyau en cours d'exécution comme les démarrages futurs l'utilisent. Appliqué avec pavois harden apply.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| key | fs.suid_dumpable |
|---|---|
| resource | sysctl |
| value | 0 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Risque opérationnel très faible. La seule perte est la possibilité de déboguer les plantages de binaires setuid via les core dumps, ce qui est précisément l'objectif. Si vous devez déboguer un binaire privilégié précis, remontez temporairement la valeur à 2 (vidages restreints, root uniquement) dans un environnement contrôlé, puis remettez à 0. Réversible en modifiant la clé.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R14 | direct | 2.0 | haute |
| CIS | 1.5.3, 3.3.1.1, 1.5.4 | direct | per OS, see the benchmark table | haute |
| NIST | SI-11(a), SI-11(b) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| PCI DSS | 3.3.1.1 | support | 4.0.1 | moyenne |
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.