1 Punkte von GN⁺ 2024-03-27 | 1 Kommentare | Auf WhatsApp teilen

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

 
GN⁺ 2024-03-27
Hacker-News-Kommentare
  • Ein Proof-of-Concept-Exploit für CVE-2024-1086 wurde veröffentlicht. Betroffen sind Linux-Kernel-Versionen von v5.14 bis v6.6; bei v6.4 bis v6.6 hängt es von der Kernel-Konfigurationsvariable CONFIG_INIT_ON_ALLOC_DEFAULT_ON ab. Weitere Details stehen in der README.md. Der Bug wurde im Februar 2024 gepatcht, und es wird empfohlen, Linux-Geräte zu aktualisieren.
  • Ein Teil des Patches macht einen früheren Commit rückgängig, und es ist nicht klar, warum dieser Commit ursprünglich vorgenommen wurde. Es wird gefragt, ob jemand die Vorgeschichte dazu aufgearbeitet hat.
  • Dieser Exploit basiert auf dem Zugriff auf unprivilegierte User-Namespaces: 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.
  • Beim Schreiben von Security-Blogposts stellt sich immer wieder die Frage, wie viel Vorwissen man bei den Lesern voraussetzen sollte. Es ist nicht leicht, die Zielgruppe festzulegen und genügend Hintergrundinformationen zu liefern. Dieser Artikel dürfte ein nützlicher Leitfaden für alle sein, die mit der Forschung beginnen.
  • Es wird infrage gestellt, warum unprivilegierte User-Namespaces standardmäßig aktiviert sind und warum Nutzern damit standardmäßig die Möglichkeit gegeben wird, Dinge wie iptables auszuführen.
  • Es wird gefragt, wie solche Exploits trotz moderner Sicherheitsmaßnahmen wie ASLR überhaupt möglich sind. In einem Hochschulkurs mit Übungen an Binärdateien mit verschiedenen Bugs habe man erlebt, wie schwierig Exploit-Entwicklung in realen Umgebungen ist.
  • Der Exploit wurde auf einem verwundbaren Debian-System ausprobiert, führte jedoch nicht zu einer Privilegieneskalation; beim zweiten Versuch fror das System vollständig ein. Das unterstreicht, wie wichtig das Einspielen des Patches ist.
  • Die aktuelle Kernel-Konfiguration kann in den Dateien /boot/config oder /proc/config.gz überprüft werden.
  • Laut Ubuntu sind alle LTS-Releases betroffen; in den neuesten gepatchten Kerneln ist das Problem behoben. Xenial und Bionic betreffen Informationen für Nutzer mit erweitertem Support.
  • CONFIG_INIT_ON_FREE_DEFAULT_ON verhindert den Exploit, wird von Distributionen aber standardmäßig nicht gebaut. Das ist ein gutes Beispiel dafür, wie wichtig Kernel-Härtung ist.