Ein neuer Exploit für den Linux-Kernel namens Dirty Cred wurde auf der Sicherheitskonferenz Black Hat in der vergangenen Woche vorgestellt.
Zhenpeng Lin, Doktorand, und ein Forscherteam entwickelten einen alternativen Ansatz für die berüchtigte Dirty-Pipe-Schwachstelle, die Linux-Kernel-Versionen ab 8 betraf.
Dirty Pipe ist eine schwerwiegende Schwachstelle, über die Angreifer Konten mit den geringsten Berechtigungen auf die höchste Stufe (Root) hochstufen können, indem sie ausnutzen, wie der Kernel Pipes zur Datenübertragung verwendet. Angreifer können damit Systemdateien verändern und beliebigen Code einschleusen, der auf anfälligen Rechnern als Root ausgeführt wird.
Lins Team entdeckte eine Möglichkeit, Linux-Kernel-Anmeldedaten auf Systemen auszutauschen, die für eine zuvor gemeldete Schwachstelle (CVE-2021-4154) und eine neue (CVE-2022-2588) anfällig sind. Außerdem rechnen die Forscher damit, künftig weitere kompatible CVEs hinzuzufügen. Ein öffentliches POC (Proof of Concept) ist auf GitHub verfügbar und bietet eine wirksame Abwehr gegen den Angriff.
Die Forscher beschrieben ihren Ansatz als eine generische Methode, die auf Container (anders als Dirty Pipe) und Android angewendet werden kann und „verschiedene Fehler zu Dirty-Pipe-ähnlichen Fehlern macht“. Der erzeugte Exploit „funktioniert mit verschiedenen Kerneln und ARCHs ohne Codeänderung“.
Lesen Sie auch: CI/CD-Pipeline ist ein erhebliches Risiko für die Software-Lieferkette: Black-Hat-Forscher
So funktioniert Dirty Cred
Lin veröffentlichte auf Twitter eine Demo, die zeigt, wie sich der Ansatz dazu nutzen lässt, einen Benutzer mit geringen Berechtigungen auf zwei unterschiedlichen Systemen – etwa CentOS 8 und Ubuntu – hochzustufen, wobei derselbe Exploit-Code verwendet wird:
Im Hintergrund handelt es sich bei dem Angriff um eine Heap-Korruption im Kernel. Da privilegierte Anmeldedaten nicht von nicht privilegierten isoliert sind, kann ein Angreifer versuchen, sie auszutauschen.
Es gibt zwei Haupttypen von Kernel-Anmeldedaten:
- Anmeldedaten von Tasks
- Anmeldedaten geöffneter Dateien
Zur Vereinfachung kann man sagen, dass der Kernel zwei Objekttypen verwendet: „struct cred“ und „struct file“. Diese Objekte werden in speziellen Caches gespeichert. Das erste enthält die Anmeldedaten von Tasks, also Informationen über Privilegien, Fähigkeiten und Berechtigungen von Prozessen.
Jeder Angriff, dem es gelingt, solche Daten zu verändern, kann zu einer Rechteausweitung führen. Dirty Cred gibt eine verwendete, nicht privilegierte Anmeldedatei frei, um eine privilegierte Anmeldedatei im freigewordenen Speicherbereich zuzuweisen und letztlich als privilegierter Benutzer zu agieren:
Der Angriff ist allerdings nicht perfekt, da er warten muss, bis ein privilegierter Benutzer Task-Anmeldedaten zuweist. Es sollte jedoch beispielsweise möglich sein, Prozesse mit Root-SUIDs auszulösen.
Bei Anmeldedaten geöffneter Dateien und struct-file-Objekten funktioniert der Ansatz nahezu genauso. Der Angriff gibt eine Datei nach den Berechtigungsprüfungen, aber vor dem Schreiben auf die Festplatte frei. Dadurch sollte der Angreifer ein schreibgeschütztes Dateiobjekt im Speicherbereich zuweisen und als privilegierter Benutzer agieren können:
Der letzte Schritt zur Stabilisierung des Datei-Exploits ist nicht einfach umzusetzen. Der Austausch muss zwischen den Berechtigungsprüfungen und dem Schreiben auf die Festplatte erfolgen – ein äußerst knappes Zeitfenster.
Die Forscher hoben mehrere Lösungen hervor, die darin bestehen, die Kernel-Ausführung zu pausieren (z. B. mithilfe von FUSE oder einer Dateisperre), um dieses Zeitfenster zu verlängern.
Siehe die beste PAM-Software (Privileged Access Management)
So schützen Sie sich vor Dirty-Cred-Angriffen
Es ist zu beachten, dass sich das POC noch in der Entwicklung befindet, auch wenn es unter bestimmten Bedingungen – etwa bei einer bestimmten Schwachstelle – bereits funktioniert. CVE-2021-4154 wurde im Linux-Kernel gepatcht. Die Forscher weisen jedoch darauf hin, dass „der Exploit auf den meisten CentOS-8-Kerneln ab linux-4.18.0-305.el8 sowie auf den meisten Ubuntu-20-Kerneln ab 5.4.0-87.98 und 5.11.0-37.41 funktioniert“.
Da Objekte nach ihrem Typ und nicht nach ihren Berechtigungen isoliert werden, empfehlen die Forscher, privilegierte von nicht privilegierten Anmeldedaten mithilfe des virtuellen Speichers zu isolieren, um Cache-übergreifende Angriffe zu verhindern.
Der Patch ist auf GitHub verfügbar und besteht darin, Task-Anmeldedaten mithilfe von vmalloc (virtuell zusammenhängendem Speicher) zu isolieren.
Lesen Sie als Nächstes: Die besten Zero-Trust-Sicherheitslösungen





