eBPF-Compiler härten
Macht den Code, den der eBPF-Compiler erzeugt, schwerer missbrauchbar für Angriffe, die gewählte Anweisungen einschleusen.
Warum es wichtig ist
eBPF-Programme werden von einem Just-in-time-Compiler in Maschinencode übersetzt. Ein Angreifer, der ein Programm laden kann, fügt so Konstanten ein, dass sie, von einem anderen Versatz gelesen, zu selbstgewählten Befehlen werden. Das nennt man JIT spraying, und die Härtung soll es verhindern.
Wie es funktioniert
Setzt net.core.bpf_jit_harden auf 2. Härtungen wie das Verblenden von Konstanten gelten dann für eBPF-Programme aller Benutzer, nicht nur der unprivilegierten. Die Kernel-Dokumentation weist auf einen gewissen Performance-Aufwand hin, wenn der JIT benutzt wird.
Für wen es sich eignet
Eine billige Vorsicht für fast alle. Hosts mit schwerer eBPF-Paketverarbeitung, denen jedes Bit Geschwindigkeit zählt, messen lieber vorher.
Was Sie bemerken könnten
Meist nichts. eBPF-Programme können geringfügig langsamer laufen, was nur bei stark belasteten Netzwerk- oder Tracing-Setups auffällt.
Auf Ihrem Computer prüfen
Den aktuellen Wert lesen:
sysctl net.core.bpf_jit_harden Ein strengerer Wert als dieser ist ebenfalls in Ordnung.
Von Hand anwenden
Jetzt setzen (bis zum nächsten Neustart):
sudo sysctl -w net.core.bpf_jit_harden=2 Nach Neustarts beibehalten, in einer eigenen Datei:
sudo tee /etc/sysctl.d/90-kernel-bpf-jit-harden.conf <<'EOF'
net.core.bpf_jit_harden = 2
EOF
sudo sysctl --system Rückgängig machen
Entfernen Sie die Datei und starten Sie neu, oder setzen Sie den alten Wert mit sysctl -w zurück.
Verwandte Einstellungen
Quellen
- Linux Hardening Guide (madaidans)
- 2.2.1
- Linux kernel documentation
- net.core.bpf_jit_harden