Durcir le compilateur eBPF
Rend le code produit par le compilateur eBPF plus difficile à détourner pour les attaques qui y glissent des instructions choisies.
Pourquoi il compte
Les programmes eBPF sont transformés en code machine par un compilateur à la volée. Une attaquante capable de charger un programme peut forger des constantes à l’intérieur pour que, lues depuis un autre décalage, elles deviennent des instructions de son choix. C’est le JIT spraying, et le durcissement existe pour l’empêcher.
Comment il fonctionne
Met net.core.bpf_jit_harden à 2. Des protections comme l’aveuglement des constantes s’appliquent alors aux programmes eBPF de tous les utilisateurs, pas seulement aux non privilégiés. La documentation du noyau note un léger coût en performance, quand le JIT est utilisé.
À qui il s'adresse
Une précaution peu coûteuse pour presque tous. Les machines qui font un traitement réseau intensif en eBPF et comptent chaque bit de vitesse peuvent préférer mesurer d’abord.
Ce que vous pouvez remarquer
En général rien. Les programmes eBPF peuvent être légèrement plus lents, ce qui ne se voit que sur des configurations réseau ou de traçage très chargées.
Le vérifier sur votre ordinateur
Lire la valeur actuelle :
sysctl net.core.bpf_jit_harden 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 net.core.bpf_jit_harden=2 La conserver après les redémarrages, dans un fichier qui vous appartient :
sudo tee /etc/sysctl.d/90-kernel-bpf-jit-harden.conf <<'EOF'
net.core.bpf_jit_harden = 2
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
- net.core.bpf_jit_harden