0. Vor dem Lesen
- Dieser Blogbeitrag richtet sich an zukünftige Zeitreisende, die Linux-Kernel-Schwachstellen erforschen möchten, und wurde so verfasst, dass Einsteiger den Research-Workflow lernen und erfahrene Forschende neue Techniken kennenlernen können.
- Der Blogbeitrag ist im Stil einer Forschungsarbeit aufgebaut, sodass er sich trotz seines großen Umfangs leicht überfliegen lässt und Wissen effizient daraus extrahiert werden kann.
- Als effiziente Lesemethode wird vorgeschlagen, den Überblicksabschnitt zu lesen, den Bildschirm zu teilen, dabei zu lesen und zu suchen, dann zum Bug-Abschnitt zu springen, um die Funktionsweise des Bugs zu verstehen, und anschließend über den Proof-of-Concept-Abschnitt den Exploit zu betrachten.
1. Überblick
- Dieser Blogbeitrag stellt eine neue Technik vor, um einen 0-day-Double-Free-Bug in nf_tables auszunutzen und damit gehärtete Linux-Kernel (z. B. KernelCTF-Mitigation-Instanzen) mit einer Erfolgsquote von 93 % bis 99 % zu exploiten.
- Dieser Exploit funktioniert nur, wenn nf_tables aktiviert ist und unprivilegierte User-Namespaces aktiviert sind, und führt aus dem Userspace heraus KSMA (Kernel-Space Mirroring Attack) aus, bei dem der Kernel-Space wie in einem Spiegel in den Userspace abgebildet wird.
- Mit der Dirty-Pagedirectory-Technik lassen sich unbegrenzte Lese-/Schreibrechte auf physische Adressen erlangen, was durch Verwirrung in den Seitentabellen ermöglicht wird.
2. Hintergrundinformationen
nf_tables ist eines der In-Tree-Module des Linux-Kernels und wird als Backend für aktuelle Versionen von iptables verwendet.
iptables ist ein Firewall-Tool, das Zustandsmaschinen und benutzerdefinierte Regeln verwendet, um zu entscheiden, ob Pakete die Firewall passieren dürfen.
- Ein Netfilter-Verdikt ist die Entscheidung eines Netfilter-Regelsatzes darüber, ob ein bestimmtes Paket die Firewall passieren darf, etwa indem es verworfen oder akzeptiert wird.
- Die Struktur
sk_buff wird zur Beschreibung von Netzwerkdaten (z. B. IP-Paketen, Ethernet-Frames usw.) verwendet, und das Objekt sk_buff->head enthält den eigentlichen Paketinhalt.
- Die Paketfragmentierungsfunktion von IPv4 ermöglicht die Übertragung eines Pakets in mehreren IP-Fragmenten, und der Linux-Kernel speichert alle Fragmente im selben Rot-Schwarz-Baum.
GN⁺-Meinung
- Dieser Blogbeitrag liefert sehr nützliche Informationen für Menschen, die Schwachstellen im Linux-Kernel erforschen möchten. Insbesondere kann man verstehen, wie mit nf_tables zusammenhängende Schwachstellen funktionieren und wie sie ausgenutzt werden können.
- Die vorgestellte Exploit-Technik kann einen wichtigen Beitrag zur Sicherheitsforschung in realen Umgebungen leisten, und durch solche Techniken können Sicherheitsexperten Schwachstellen in Systemen besser verstehen und abwehren.
- Allerdings besteht auch die Möglichkeit, dass solche Exploit-Techniken für böswillige Zwecke verwendet werden, weshalb die ethischen Fragen berücksichtigt werden sollten, die durch ihre Veröffentlichung entstehen können.
- Um die Sicherheit des Linux-Kernels zu stärken, muss die Community fortlaufend Schwachstellen finden und Patches bereitstellen, und dieser Blogbeitrag kann als Teil dieser Bemühungen gesehen werden.
- Wenn Forschende mit dieser oder ähnlichen Techniken Sicherheitsforschung betreiben, sollten sie Richtlinien zur verantwortungsvollen Offenlegung befolgen und daran mitwirken, dass Patches verteilt werden, bevor Schwachstellen breit ausgenutzt werden können.
1 Kommentare
Hacker-News-Kommentare
CONFIG_INIT_ON_ALLOC_DEFAULT_ONab. Weitere Details stehen in der README.md. Der Bug wurde im Februar 2024 gepatcht, und es wird empfohlen, Linux-Geräte zu aktualisieren.sysctl kernel.unprivileged_userns_clone = 1. Diese Einstellung ist im Debian/Ubuntu- und Arch-Linux-Kernel standardmäßig gesetzt. Wenn diese Einstellung nicht benötigt wird, sollte sie deaktiviert werden./boot/configoder/proc/config.gzüberprüft werden.CONFIG_INIT_ON_FREE_DEFAULT_ONverhindert den Exploit, wird von Distributionen aber standardmäßig nicht gebaut. Das ist ein gutes Beispiel dafür, wie wichtig Kernel-Härtung ist.