Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
DirtyPipe-Exploit — Proof of Concept für CVE-2022-0847 | Kitploit
Tools/GitHubGitHub/karanlvm/dirtypipe-exploit
Privilege EscalationSchwachstellenanalyseExploitationPapers & ForschungLernen & BildungBinary-Exploitation
GitHubkaranlvm/dirtypipe-exploit

DirtyPipe-Exploit

Proof of Concept für CVE-2022-0847

Repository anzeigen
21vor 10 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CSE 5380: Informationssicherheits-Paper CVE-2022-0847 (Dirty Pipe)

Von

Karan Vasudevamurthy (UTA-ID: 1002164438)

Was ist CVE?

Common Vulnerabilities and Exposures (CVE) ist eine Liste öffentlich bekannt gemachter Informationssicherheits-Schwachstellen und -Gefährdungen. Die MITRE Corporation führte CVE 1999 ein, um Schwachstellen in Software und Firmware zu identifizieren und zu klassifizieren. MITRE ist eine gemeinnützige Organisation, die bundesfinanzierte Forschungs- und Entwicklungszentren in den Vereinigten Staaten betreibt. CVE zielt darauf ab, den Austausch von Informationen über bekannte Schwachstellen zu erleichtern, damit Cybersicherheitspläne aktualisiert werden können, um die neuesten Sicherheitsprobleme und -schwächen widerzuspiegeln. Zu diesem Zweck weist CVE jeder Schwachstelle oder Gefährdung eine eindeutige Kennung zu, die sogenannte CVE-Kennung, auch bekannt als CVE-Name oder CVE-Nummer. Das Common Vulnerability Scoring System (CVSS) ist eine Reihe offener Standards, um einer Schwachstelle eine Zahl zur Bewertung ihres Schweregrads zuzuweisen. Der Bereich eines CVSS-Scores reicht von 0,0 bis 10,0. Der Grad der Sicherheitsgefährdung steigt mit zunehmender Zahl. Jede CVE-ID hat das Format CVE-YYYY-NNNNN. Der Teil YYYY steht für das Jahr, in dem die CVE-ID vergeben wurde oder die Schwachstelle öffentlich gemacht wurde.

Was sind Pipes?

Im Zusammenhang mit CVE-2022-0847 ist es entscheidend, die internen Abläufe von Pipes zu verstehen, insbesondere die Attribute, die mit dem Pipe-Puffer verbunden sind. Pipes in Linux helfen beim Übertragen von Daten zwischen Prozessen, wobei die Ausgabe eines Prozesses zur Eingabe eines anderen wird. Dieser Mechanismus ermöglicht die Kommunikation und Koordination zwischen verschiedenen Prozessen, die auf dem System laufen. Pipes sind in Linux unidirektional, das heißt, Daten fließen nur in eine Richtung. Ein Pipe-Puffer besteht typischerweise aus einer Datenstruktur mit fester Größe nach dem First-in-First-out-Prinzip (FIFO), die die zwischen Prozessen übertragenen Daten vorübergehend speichert. Wenn ein Prozess Daten in eine Pipe schreibt, werden sie im Puffer gespeichert, bis ein anderer Prozess daraus liest. Sobald die Daten gelesen wurden, werden sie aus dem Puffer entfernt, sodass neue Daten geschrieben werden können.

Die Schwachstelle

Für CVE-2022-0847 ist es wichtig, zwei Funktionen innerhalb des Pipe-Puffers zu verstehen:

  1. copy_page_to_iter_pipe: Diese Funktion ist dafür verantwortlich, Daten von einer Seite in einen mit einem Pipe-Puffer verbundenen Iterator zu kopieren. Im Zusammenhang mit der Interprozesskommunikation über Pipes müssen Daten, die ein Prozess in eine Pipe schreibt, in den Pipe-Puffer kopiert werden, damit sie von einem anderen Prozess gelesen werden können. Die Funktion „copy_page_to_iter_pipe“ erleichtert diesen Kopiervorgang und stellt sicher, dass Daten korrekt und effizient zwischen Prozessen übertragen werden. Innerhalb dieser Funktion wird der Parameter „flags“ verwendet, um bestimmte Attribute oder Verhaltensweisen im Zusammenhang mit dem Kopiervorgang festzulegen oder zu steuern. Diese Flags können Optionen umfassen, wie etwa die Durchführung zusätzlicher Prüfungen oder Validierungen, die Behandlung bestimmter Datentypen oder die Anwendung von Optimierungen zur Effizienzsteigerung.
  2. push_pipe: Die Funktion „push_pipe“ ist am Schieben von Daten in den Pipe-Puffer beteiligt. Wenn ein Prozess Daten in eine Pipe schreibt, müssen die Daten in den Pipe-Puffer eingefügt werden, wo sie dann von einem anderen Prozess gelesen werden können. Die Funktion „push_pipe“ ist für die Durchführung dieses Einfügevorgangs verantwortlich und stellt sicher, dass Daten korrekt im Puffer abgelegt und für andere Prozesse zum Lesen verfügbar gemacht werden.

Seite | 1

Max Kellermann entdeckte, dass der Linux-Kernel Unix-Pipes falsch behandelte. Die Schwachstelle entsteht durch eine unzureichende Initialisierung bestimmter Attribute, insbesondere des Parameters „flags“, in den Funktionen „copy_page_to_iter_pipe“ und „push_pipe“. Dieses Versehen kann dazu führen, dass veraltete oder falsche Werte an die Flags zugewiesen werden, was die Sicherheit und Integrität des Systems gefährden kann. Ein nicht privilegierter lokaler Benutzer konnte diesen Fehler ausnutzen, um in Seiten im Page Cache zu schreiben, die durch schreibgeschützte Dateien gestützt werden, und so seine Privilegien auf dem System zu erweitern.

Angriffsmethodik

Sie ähnelt CVE-2016-5195 „Dirty Cow“, ist aber einfacher auszunutzen. Die Ausnutzung von CVE-2022-0847 erfordert lokalen Zugriff auf das Zielsystem und betrifft Linux-Kernelversionen neuer als 5.8. Wir können neue Pipe-Puffer mit dem falsch gesetzten Flag PIPE_BUF_FLAG_CAN_MERGE erzeugen, da die ordnungsgemäße Initialisierung fehlt. Dieses Flag steuert die Zusammenführung von Schreibvorgängen in einen Pipe-Puffer und ermöglicht dadurch das Schreiben in eine vorhandene Seite, die in die Pipe eingefügt wurde. Wenn eine Datei diese eingefügte Seite zulässt, wird die Änderung in der gemeinsamen systemweiten Sicht der Datei im Speicher sichtbar. Jede weitere Cache-Leerung ignoriert die aktuellen Linux-Berechtigungseinstellungen und kopiert die veränderten Daten auf die Festplatte. Dies würde es einem nicht privilegierten Benutzer ermöglichen, bestimmte Inhalte einer Datei (entweder auf der Festplatte oder im Speicher) zu ändern, selbst wenn die Datei nur durch schreibgeschützte Zugriffskontrollen wie SELinux, standardmäßige Linux-Berechtigungen, erweiterte Zugriffskontrolle und unveränderliche Dateien vor Änderungen geschützt ist. Daher können wir annehmen, dass der Angreifer ein beliebiger nicht privilegierter lokaler Benutzer mit Grundkenntnissen über Linux-Systeme und der Fähigkeit zur Ausführung von Schadcode sein könnte. Eine solche Person könnte ihre Privilegien erweitern und möglicherweise das gesamte System gefährden, was ein erhebliches Sicherheitsrisiko darstellt.

Proof of Concept

Nachfolgend sind die Schritte aufgeführt, die ich befolgt habe, um CVE-2022-0847 auf einer virtuellen Maschine mit Linux auszunutzen.

  1. Prüfen, ob Ihre Linux-Distribution ausgenutzt werden kann-

    Jeder Linux-Kernel neuer als 5.8 ist betroffen. Allerdings können die Versionen 5.16.11, 5.15.25 und 5.10.102 nicht für CVE-2022-0847 ausgenutzt werden. Um Ihre Kernel-Version zu ermitteln, führen Sie einfach *uname -r* aus. Sie können auch dieses Bash-Skript ausführen, wenn Sie unsicher sind, ob ein Zielsystem verwundbar ist.

  2. Herunterladen des richtigen Linux-Kernels-

    Für die Demonstration habe ich mich für Ubuntu 20.04.1 LTS entschieden. Diese Ubuntu-Version läuft jedoch derzeit auf Linux-Kernel 5.15, und CVE-2022-0847 kann auf dieser Kernel-Version nicht ausgenutzt werden. Um Linux-Kernel 5.8 herunterzuladen, können wir einfach *sudo apt install linux-image-5.8.0-63-generic linux-headers-5.8.0-63-generic* ausführen.

  3. Herunterladen des Exploits-

    Der Exploit ist auf GitHub. zu finden. Er zeigt, wie man beliebige Dateiinhalte im Page Cache überschreiben kann, selbst wenn die Datei nicht beschrieben werden darf, unveränderlich ist oder sich auf einem schreibgeschützten Mount befindet. Sie könnten auch *git clone[ https://github.com/karanlvm/Infosec.git* ](https://github.com/karanlvm/Infosec.git%60)*im Terminal ausführen.

  4. Kopieren der ursprünglichen passwd-Datei-

    Wir können *cp /etc/passwd /tmp/passwd.bak* ausführen. Dies hilft uns, den Unterschied in der passwd-Datei vor und nach der Ausführung des Exploits zu erkennen.

  5. Kompilieren des Exploits-

    Um den Exploit erfolgreich zu kompilieren, muss GCC installiert sein. Sie können GCC mit *sudo apt-get install gcc* installieren. Zum Kompilieren des Exploits können Sie ausführen.

Einschränkungen

Es gibt zwei wesentliche Einschränkungen dieses Exploits:

  1. Der Offset darf nicht an einer Seitengrenze liegen (es muss mindestens ein Byte vor dem Offset geschrieben werden).
  2. Der Schreibvorgang darf keine Seitengrenze überschreiten. Das bedeutet, die Nutzlast muss kleiner als 4096 Bytes (Seitengröße) sein.

Aktueller Status und Behebung

Stand 2024-01-12 beträgt die Wahrscheinlichkeit von Ausnutzungsaktivitäten in den nächsten 30 Tagen 7,58 % (Exploit Prediction Scoring System (EPSS)). Nachfolgend ist der CVSS (Common Vulnerability Scoring System) für CVE-2022-0487 angegeben:

Diese Schwachstelle kann auf jedem Linux-Kernel neuer als 5.8 ausgenutzt werden. Die Schwachstelle wurde jedoch in Linux 5.16.11, 5.15.25 und 5.10.102 behoben . Daher können wir einfach die von den Linux-Distributionsbetreuern bereitgestellten Patches oder Updates anwenden, um die Schwachstelle zu beheben. Dazu können wir einfach die folgenden

Befehle *sudo apt update* und *sudo apt upgrade* ausführen.

Referenzen

  1. „2022-0847: A Flaw Was Found in the Way the ‘Flags’ Member of the New Pipe Buffer Structure Was Lacking Proper Initialization in Cop.“ CVE Details, www.cvedetails.com/cve/CVE-2022-0847/. Zugegriffen am 24. Apr. 2024.
  2. Kellermann, Max. „The Dirty Pipe Vulnerability.“ The Dirty Pipe Vulnerability - The Dirty Pipe Vulnerability Documentation, 7. März 2022, dirtypipe.cm4all.com/.
  3. MITRE Corporation. „CVE-2022-0847.“ CVE, 3. März 2022, cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0847.
  4. National Institute of Standards and Technology. „CVE-2022-0847.“ NVD, 3. Okt. 2022, nvd.nist.gov/vuln/detail/cve-2022-0847.
  5. „Piping in Unix or Linux.“ GeeksforGeeks, GeeksforGeeks, 5. Juli 2023, www.geeksforgeeks.org/piping-in-unix-or-linux/.

Seite | 5

Tool herunterladen
*gcc exp.c -o exp*
  • Ausführen des Exploits-

    Zum Ausführen des Exploits müssen die schreibgeschützte Datei, der Offset und einige einzufügende Zeichen als Parameter angegeben werden. In diesem Fall führen wir *./exp /etc/passwd 1 ootz:* aus. Wenn Sie eine Ausgabe erhalten, die „It worked !“ lautet, bedeutet das, dass wir die Dirty-Pipe-Schwachstelle erfolgreich ausgenutzt haben und nun ohne Passwort Root-Zugriff erhalten können.

  • Zur Root-Berechtigung wechseln-

    Jetzt können wir einfach *su rootz* ausführen und sollten Root-Zugriff haben. Zur Bestätigung können wir den Befehl id ausführen.