Kernel-Adressen verbergen
Programme ohne besondere Rechte können nicht mehr lesen, wo etwas im Kernel-Speicher liegt. Angreifer nutzen diese Adressen, um Exploits gezielt auszurichten.
Warum es wichtig ist
Viele Kernel-Exploits müssen genau wissen, wo bestimmter Code oder bestimmte Daten im Speicher liegen. Kernel-Adressen können über mehrere Schnittstellen lecken, und ein Angreifer, der bereits ein Programm auf Ihrem Rechner laufen hat, kann sie sammeln und den Exploit genau zielen. Sie zu verbergen behebt keinen Fehler, nimmt dem Angreifer aber eine Karte, die er sonst benutzen würde.
Wie es funktioniert
Setzt den Kernelparameter kernel.kptr_restrict auf 2. Kernel-Zeiger, die im Format %pK ausgegeben werden, erscheinen dann für jeden Benutzer, auch root, als Nullen. Der Wert 1 verbirgt sie nur für Benutzer ohne die Capability CAP_SYSLOG.
Für wen es sich eignet
Passt auf fast jeden Desktop und Server. Lassen Sie 0 oder 1, wenn Sie den Kernel selbst debuggen oder auf einer Entwicklungsmachine Profiling-Werkzeuge nutzen, die echte Kernel-Adressen brauchen.
Was Sie bemerken könnten
Meist nichts. Werkzeuge wie perf können warnen, dass Kernel-Adresskarten eingeschränkt sind, und /proc/kallsyms zeigt sogar root Nullen.
Auf Ihrem Computer prüfen
Den aktuellen Wert lesen:
sysctl kernel.kptr_restrict Von Hand anwenden
Jetzt setzen (bis zum nächsten Neustart):
sudo sysctl -w kernel.kptr_restrict=2 Nach Neustarts beibehalten, in einer eigenen Datei:
sudo tee /etc/sysctl.d/90-kernel-kptr-restrict.conf <<'EOF'
kernel.kptr_restrict = 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
- kernel.kptr_restrict