In ungepatchten Distributionen lauert eine neue gefährliche Linux-Schwachstelle. Genannt Dirty Pipe und verfolgt als CVE-2022-0847, Die Schwachstelle liegt im Kernel (seit Version 5.8), Schaffung der Möglichkeit für Bedrohungsakteure, beliebige Daten in alle lesbaren Online-Dateien zu überschreiben.
Dies könnte dann eine vollständige Übernahme exponierter Systeme ermöglichen. Forscher Max Kellermann sagt, Dirty Pipe sei ähnlich der Dirty-Cow-Fehler, offengelegt in 2016, aber leichter auszunutzen. CVE-2016-5195, auch bekannt als Dirty Cow und Kernel Local Privilege Escalation, wurde in jeder Linux-Distribution gefunden, die in den letzten neun Jahren veröffentlicht wurde, bis zu 2016.
Wie war schmutziges Rohr (CVE-2022-0847) entdeckt?
So erzählt Max Kellermann die Geschichte:
Alles begann vor einem Jahr mit einem Support-Ticket zu beschädigten Dateien. Ein Kunde beschwerte sich, dass die heruntergeladenen Zugriffsprotokolle nicht dekomprimiert werden konnten. Und in der Tat, Auf einem der Protokollserver war eine beschädigte Protokolldatei vorhanden; es könnte dekomprimiert werden, aber gzip hat einen CRC-Fehler gemeldet. Ich konnte nicht erklären, warum es beschädigt war, aber ich nahm an, dass der nächtliche Split-Prozess abgestürzt war und eine beschädigte Datei zurückgelassen hatte. Ich habe den CRC der Datei manuell korrigiert, schloss das Ticket, und vergaß bald das Problem.
Die Situation wiederholte sich immer wieder. Jedes Mal, wenn es passiert ist, Der Inhalt der Datei scheint korrekt zu sein, wobei nur der CRC am Ende der Datei falsch ist. Mehrere beschädigte Dateien zur Hand zu haben, ermöglichte dem Forscher eine tiefere Analyse, und entdeckte so ein überraschendes Korruptionsmuster.
Schließlich, Er entdeckte einen Fehler „in der Art und Weise, wie die ‚Flags’ Mitglied der neuen Pipe-Pufferstruktur fehlte die ordnungsgemäße Initialisierung in den Funktionen copy_page_to_iter_pipe und push_pipe im Linux-Kernel und konnte daher veraltete Werte enthalten,” wie von Red Hat Forschern in einem separaten Ratgeber zusammengefasst.
Infolge, Ein nicht privilegierter lokaler Benutzer könnte den Fehler ausnutzen, um auf Seiten im Seitencache zu schreiben, die von schreibgeschützten Dateien unterstützt werden, Erstellen einer Berechtigungseskalationsbedingung. Der Name, Schmutziges Rohr, stammt von der Pipeline, was in Unix-ähnlichen Computer-Betriebssystemen ein Mechanismus für die Kommunikation zwischen Prozessen per Message-Passing ist. In diesem Sinne, Eine Pipeline ist eine Reihe von Prozessen, die durch ihre Standard-Streams miteinander verkettet sind, damit der Ausgabetext jedes Prozesses (stdout) wird direkt als Input übergeben (stdin) zum nächsten, laut Wikipedia. https://en.wikipedia.org/wiki/Pipeline_(Unix)
Wie kann die Dirty-Pipe-Schwachstelle ausgenutzt werden??
Kellermann sagt, dass das Ausnutzen des Fehlers CVE-2022-0847 die folgenden Schritte erfordert:
1.Erstellen Sie ein Rohr.
2.Füllen Sie die Pipe mit beliebigen Daten (das PIPE_BUF_FLAG_CAN_MERGE-Flag in allen Ringeinträgen zu setzen).
3.Entleeren Sie das Rohr (Belassen des Flags in allen struct pipe_buffer-Instanzen auf dem struct pipe_inode_inforing).
4.Splice-Daten aus der Zieldatei (mit O_RDONLY geöffnet) in das Rohr von kurz vor dem Zielversatz.
5.Schreiben Sie beliebige Daten in die Pipe; diese Daten überschreiben die Seite der zwischengespeicherten Datei, anstatt eine neue anonyme Struktur pipe_buffer zu erstellen, da PIPE_BUF_FLAG_CAN_MERGE gesetzt ist.
Diese Ausnutzung funktioniert auch mit unveränderlichen Dateien auf schreibgeschützten Btrfs-Snapshots und auf schreibgeschützten Mounts (einschließlich CD-ROM-Halterungen). „Das liegt daran, dass der Seitencache immer beschreibbar ist (durch den Kern), und beim Schreiben in eine Pipe werden niemals Berechtigungen überprüft,“, fügte Kellermann hinzu.
Der Forscher auch erstellt und geteilt seinen Proof-of-Concept-Code.
Die Schwachstelle wurde bereits in Linux-Versionen gepatcht 5.16.11, 5.15.25, und 5.10.102. Google hat auch freigegeben Fixes für den Android-Kernel im Februar 24, 2022.
Es ist bemerkenswert, dass gestern, März 7, wir haben darüber geschrieben ein weiteres schwerwiegendes Linux-Kernel-Problem, die missbraucht werden könnten, um einem Container zu entkommen, um beliebige Befehle auf dem Host auszuführen. Die Schwachstelle wird als CVE-2022-0492 verfolgt, und wurde von der Palo Alto Unit detailliert beschrieben 42 Forscher vernetzen.