Alert!

Root-Lücke im netfilter-Subsystem des Linux-Kernels

Angreifer könnten aufgrund von Sicherheitslücken in nf_tables im Linux-Kernel ihre Rechte zu Root ausweiten. Patches dichten die Sicherheitslecks ab.

In Pocket speichern vorlesen Druckansicht 29 Kommentare lesen
Aufmacher root-Lücke in nf_tables im Linux-Kernel

Der Pinguin ist Vorbild für das Kernel-Logo Tux.

(Bild: Daniel AJ Sokolov)

Lesezeit: 3 Min.
Von

Der Sicherheitsforscher David Bouman hat in nf_tables aus dem netfilter-Subsystem des Linux-Kernel zwei Sicherheitslücken entdeckt, die das Ausweiten der Rechte zu Root ermöglichen. In Kürze will er Proof-of-Concept-Code veröffentlichen, der das Ausnutzen der Lücke demonstriert.

Eine der beiden Lücken sortiert Red Hat als Use-after-Free-Schwachstelle ein. Sie findet sich in der nft_do_chain-Routine in net/netfilter/nf_tables_core.c. Sie initialisiert Register-Daten nicht, auf die nf_tables-Ausdrücke zugreifen können. Die Register können je nach Code-Pfad in nft_do_chain Kernel-Image-Zeiger enthalten, Modul-Zeiger oder Zeiger auf allokierte Speicherbereiche (CVE-2022-1016, CVSS laut Red Hat 5.5, Risiko mittel).

Um nun an die Daten in dem Register zu gelangen, hat Bouman netfilter-Regeln erstellt. Die blockieren Pakete abhängig davon, ob ein bestimmtes Byte größer als eine Konstante in der Regel ist oder nicht. Damit hat er laut eigener Erklärung eine binäre Suchprozedur erstellt, die den Inhalt des Registers anhand der Information wiederherstellt, ob ein Paket blockiert wurde oder nicht. Am Ende führt das zu einem Leck einer Kernel-Adresse.

Die zweite Sicherheitslücke besteht in einem möglichen Zugriff außerhalb der vorgesehenen Grenzen bei der Verarbeitung von Ausdrücken in nf_tables. Dadurch könnten Angreifer mit einer manipulierten nft_expr_payload eine Rücksprungadresse auf dem Stack überschreiben und eingeschleusten Code mit höheren Rechten ausführen (CVE-2022-1015, CVSS laut Red Hat 6.6, mittel). Laut Bouman geht die Schwachstelle auf Compiler-Optimierungen zurück, die einen Integer-Überlauf ermöglichen. Um die Lücke auszunutzen, müssen für unprivilegierte Nutzer der User- und Network-Namespace-Zugriff erlaubt sein – dies ist bei den meisten Linux-Distributionen die Standardeinstellung.

Der Exploit, mit dem Bouman seine Rechte am System auf root ausgeweitet hat, nutzt die Lücke CVE-2022-1016, um Daten vom Stack in den Registerbereich von nft_do_chain zu kopieren. Diese Adress-Information liest der Exploit mit der netfilter-Regelwerk-basierten Suche aus. Schließlich erstellt der Exploit einen speziell präparierten nft_expr_payload, der eigenen Code als Daten auf dem Stack ablegt, um damit die Lücke CVE-2022-1015 auszunutzen und die Rücksprungadresse zu überschreiben.

In den Kernel-Quellen haben die Entwickler die betroffenen Netfilter-Routinen bereits am 17. März dieses Jahres korrigiert. Die Fehlerbehebungen haben in den Kernel 5.17.1 Einzug gehalten. Die Linux-Distributionen müssen noch aktualisierte Kernel ausliefern. Red Hat, Debian und Ubuntu haben inzwischen evaluiert, welche Distributionen verwundbar sind. Die aktualisierten Kernel stehen jedoch zum Zeitpunkt der Meldung noch nicht bereit.

Red Hat nennt als Übergangslösung, unprivilegierten Nutzern den Zugriff auf User- und Network-Namespace zu entziehen. In der Sicherheitsmeldung erläutert der Hersteller, wie das etwa unter Red Hat Enterprise Linux 8 zu bewerkstelligen ist.

Erst vor Kurzem fand sich mit Dirty Pipe eine Schwachstelle mit ähnlichen Auswirkungen im Linux-Kernel.

(dmk)