Restreindre userfaultfd

Risque faible Coché par défaut dans IbexWall Catalogue révisé le: 2026-11-05

Un programme ordinaire ne peut plus utiliser le versant noyau de cette interface, dont des attaquants se sont servis pour chronométer leurs coups. Les programmes qui gèrent leur mémoire en espace utilisateur continuent de fonctionner.

Pourquoi il compte

L’appel système userfaultfd laisse un programme gérer lui-même les défauts de page. Des attaquants s’en sont servis pour suspendre le noyau à un instant exact, élargissant un infime écart de temps suffisant pour gagner une course dans un bug du type use-after-free. Retirer la forme noyau de cet appel aux utilisateurs ordinaires complique nombre de ces exploits.

Comment il fonctionne

Met vm.unprivileged_userfaultfd à 0. Selon la documentation du noyau, les utilisateurs sans CAP_SYS_PTRACE ne peuvent alors employer userfaultfd que pour les défauts survenant en mode utilisateur, en passant l’option UFFD_USER_MODE_ONLY. L’accès par /dev/userfaultfd peut être accordé à part.

À qui il s'adresse

Convient à presque tout ordinateur de bureau et serveur. À revoir si vous utilisez la migration à chaud de machines virtuelles, des outils de point de contrôle et restauration, ou un autre logiciel bâti sur userfaultfd.

Ce que vous pouvez remarquer

Presque jamais visible. Un logiciel qui a besoin du userfaultfd complet comme utilisateur normal peut échouer avec une erreur de permission jusqu’à recevoir /dev/userfaultfd ou tourner avec plus de droits.

Le vérifier sur votre ordinateur

Lire la valeur actuelle :

sysctl vm.unprivileged_userfaultfd

L'appliquer à la main

La définir maintenant (jusqu'au prochain redémarrage) :

sudo sysctl -w vm.unprivileged_userfaultfd=0

La conserver après les redémarrages, dans un fichier qui vous appartient :

sudo tee /etc/sysctl.d/90-kernel-userfaultfd.conf <<'EOF'
vm.unprivileged_userfaultfd = 0
EOF
sudo sysctl --system

L'annuler

Supprimez le fichier et redémarrez, ou remettez l'ancienne valeur avec sysctl -w.

Réglages liés

Sources

Linux Hardening Guide (madaidans)
2.2.1