Réserver eBPF aux administrateurs
eBPF permet aux programmes d'exécuter du code dans le noyau et a été une source constante de failles. Ce réglage le limite aux programmes privilégiés et durcit son compilateur.
Pourquoi il compte
eBPF permet à des programmes de charger de petits morceaux de code que le noyau exécute pour eux. Le noyau vérifie ce code avec un vérificateur, et des bugs dans ce vérificateur ont plusieurs fois permis à des utilisateurs ordinaires de prendre le contrôle complet de la machine. Si seuls des programmes privilégiés peuvent charger de l’eBPF, ces bugs restent hors de portée des autres.
Comment il fonctionne
Met kernel.unprivileged_bpf_disabled à 1. Les appels à bpf() sans CAP_BPF ni CAP_SYS_ADMIN échouent alors avec une erreur de permission. La documentation du noyau indique qu’une fois à 1 la valeur ne redescend pas à 0 avant un redémarrage ; la valeur 2 désactive aussi mais laisse un administrateur changer plus tard.
À qui il s'adresse
Juste pour la plupart des ordinateurs de bureau et des serveurs. Laissez désactivé si vous lancez des outils eBPF comme utilisateur normal, par exemple certaines expériences de traçage ou de réseau.
Ce que vous pouvez remarquer
Les programmes qui chargent de l’eBPF sans privilèges échouent avec Operation not permitted. Lancez-les en root ou avec la capacité qui convient. Les logiciels de bureau classiques en ont rarement besoin.
Le vérifier sur votre ordinateur
Lire la valeur actuelle :
sysctl kernel.unprivileged_bpf_disabled Une valeur plus stricte que celle-ci convient aussi.
L'appliquer à la main
La définir maintenant (jusqu'au prochain redémarrage) :
sudo sysctl -w kernel.unprivileged_bpf_disabled=1 La conserver après les redémarrages, dans un fichier qui vous appartient :
sudo tee /etc/sysctl.d/90-kernel-unprivileged-bpf.conf <<'EOF'
kernel.unprivileged_bpf_disabled = 1
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
- Linux kernel documentation
- kernel.unprivileged_bpf_disabled