Alert!

Linux: Dirty Pipe beschert Root-Rechte

Eine Lücke im Linux-Kern unterminiert das Rechtesystem und trifft Server, Embedded Geräte und Smartphones.

In Pocket speichern vorlesen Druckansicht 232 Kommentare lesen

(Bild: ChiccoDodiFC/Shutterstock.com)

Lesezeit: 3 Min.

Ein Fehler im Kernel erlaubt es Angreifern, in einem Linux-System Dateien zu verändern, auf die sie keinen Zugriff haben dürften. So könnten sie sich Root-Rechte verschaffen und anschließend das System nachhaltig verwanzen. Das Problem betrifft alle Systeme, die Linux ab 5.8 einsetzen – einschließlich Android-Smartphones. Mittlerweile gibt es Kernel-Versionen, die den Fehler namens Dirty Pipe beseitigen.

Entdeckt hat den Fehler der Hacker und Software-Entwickler Max Kellermann, der immer wieder Support Tickets über kaputte Archiv-Dateien auf den Tisch bekam. Er ging der Sache auf den Grund und fand heraus, dass tatsächlich ein Fehler in der Verwaltung von sogenannten Pipes im Linux-Kernel die Ursache war. Der führte in speziellen Situationen dazu, dass die Ausgaben von verschiedenen Quellen zusammengeworfen wurden. Etwas vereinfacht kann damit ein unprivilegierter Prozess eines normalen Anwenders Daten in die Ausgabe eines Prozesses mit höheren Rechten einschleusen.

Pipes sind ein Mechanismus der unidirektionalen Kommunikation zwischen Prozessen, der besonders auf Unix-Systemen beliebt ist. Das besondere dabei ist, dass beim Einsatz von splice() (zu Deutsch "einschleifen") keine Daten im Speicher kopiert werden müssen, was Zeit kosten würde. Stattdessen erhält der Empfänger direkt Verweise auf die bereits für den Absender angelegten Speicherbereiche ("zero copy").

Problematisch wird es, wenn mehrere Absender eine Pipe mit Daten beschicken; das Verwalten dieser Verweise und Speicherbereiche und der damit verbundenen Rechte ist Aufgabe des Kernels. Wenn die eingespleißten Daten nicht exakt auf ganze Speicherseiten passen (eine Memory Page hat 4 kB), kommt dieser gelegentlich so durcheinander, dass letztlich falsche Daten im Ausgabekanal landen.

Kellermann demonstriert mit einem kleinen Demo-Programm diese Dirty Pipe genannte Schwachstelle (CVE-2022-0847). Damit könnte etwa ein normaler Nutzer den Eintrag des root-Benutzers in /etc/passwd überschreiben und sich so Zugang zu dessen Rechten verschaffen. Dirty Pipe umgeht dabei auch den Schutz von Read-Only-Dateisystemen etwa bei BTRFS-Snapshots oder gemounteten CD-ROMs (also deren Abbild im Kernel-Cache), erklärt Kellermann in seiner ausführlichen Analyse The Dirty Pipe Vulnerability.

Nach seiner Entdeckung der Fehlerursache unterrichtete Kellermann das Linux-Kernel-Team und auch die Distributoren. In Absprache mit Linus Torvalds legte er dann ohne weitere Kommentare am 21. Februar einen Minimal-Patch vor, der den Fehler beseitigte. Die dann noch im Februar veröffentlichten Linux-Kernel 5.16.11, 5.15.25 und 5.10.102 beseitigen somit das Problem und auch Google hat den Patch in den Android-Kernel eingepflegt. Jetzt ist es an den Distributoren und Hardware-Herstellern, dafür zu sorgen, dass anfälligen Systeme mit Updates versorgt werden.

Update 7. März 2022, 19:20: Nach einem Hinweis von Max Kellermann die Funktionsweise von Pipes und splice() berichtigt, den Hinweis auf die CD-ROM-Abbilder eingebaut und den root-Exploit präzisiert.

(ju)