← Toutes les règles
SOCLE-CLD-KRN-020// Kernel buildmoyenneruntime effectif

Émuler Privileged Access Never (PAN)

Garantit que le noyau ARM64 est compilé avec CONFIG_ARM64_SW_TTBR0_PAN=y, fournissant une émulation logicielle de Privileged Access Never (PAN) sur les CPU sans PAN matériel.

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.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

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

Privileged Access Never (PAN) est l'équivalent ARM du SMAP x86 : il empêche le noyau de déréférencer accidentellement (ou de façon malveillante, via un exploit) des adresses de l'espace utilisateur lorsqu'il s'exécute en mode privilégié. Sur le matériel ARM64 dépourvu de la fonction PAN matérielle, CONFIG_ARM64_SW_TTBR0_PAN=y l'émule en logiciel en basculant TTBR0. Sans lui, des techniques d'exploitation classiques comme ret2usr, placer du code/des données contrôlés par l'attaquant en mémoire utilisateur et tromper le noyau pour qu'il les utilise, deviennent viables, transformant un bug noyau en compromission totale.

Ce que vérifie Pavois

Pavois lit la config de compilation du noyau en cours d'exécution via /boot/config-$(uname -r) (repli /proc/config.gz) et vérifie CONFIG_ARM64_SW_TTBR0_PAN=y. Lire la config effective du noyau vivant, indexée sur uname -r, est plus fiable que deviner depuis un fichier /boot/config-*, car cela correspond à l'image exacte démarrée par GRUB même si plusieurs noyaux coexistent. Cette option ne s'applique qu'à ARM64 ; sur x86 la ligne est simplement absente (la protection équivalente est SMAP).

only_if('arm64 only') { os.arch.to_s =~ /aarch64|arm/ }
describe command("grep -h '^CONFIG_ARM64_SW_TTBR0_PAN=' /boot/config-$(uname -r) 2>/dev/null; zcat /proc/config.gz 2>/dev/null | grep '^CONFIG_ARM64_SW_TTBR0_PAN='") do
  its('stdout') { should match(/^CONFIG_ARM64_SW_TTBR0_PAN=y$/) }
end

Comment vérifier qu’elle est appliquée

Exécutez grep -h '^CONFIG_ARM64_SW_TTBR0_PAN=' /boot/config-$(uname -r) (ou zcat /proc/config.gz | grep ARM64_SW_TTBR0_PAN). Attendu sur ARM64 : CONFIG_ARM64_SW_TTBR0_PAN=y. Confirmez l'architecture avec uname -m (doit indiquer aarch64).

Inspecter et investiguer

C'est une option de compilation statique du noyau sans journal d'exécution. Inspectez-la avec zcat /proc/config.gz | grep ARM64_SW_TTBR0_PAN ou grep ARM64_SW_TTBR0_PAN /boot/config-$(uname -r). Au démarrage, dmesg | grep -i pan peut indiquer le support PAN du CPU.

Remédiation

Aucune remédiation automatisée n'est fournie : c'est une option de compilation du noyau. Appliquez-la en démarrant un noyau ARM64 compilé avec CONFIG_ARM64_SW_TTBR0_PAN=y, la plupart des noyaux de distribution l'activent déjà, sinon recompilez le noyau. pavois harden apply ne peut pas la modifier.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

resourcekernel_build
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Risque en l'absence : sur les CPU ARM64 sans PAN matériel, le noyau peut être trompé pour lire/exécuter la mémoire utilisateur, permettant une élévation de privilèges de type ret2usr à partir d'un simple bug noyau.

Précautions avant de modifier : l'option n'a de sens que sur ARM64 ; ignorez le constat sur x86. Le PAN logiciel via TTBR0 ajoute un léger surcoût par appel système mais aucun risque fonctionnel. Changer de noyau nécessite un redémarrage, conservez l'entrée du noyau précédent dans GRUB en repli et validez le démarrage sur une console avant de retirer l'ancienne image.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R27direct2.0haute

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.

Sources & références

Normes officielles

ANSSI-BP-028 (2.0) ↗