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
CVE-2026-92162 — Bildungsorientierte Analyse und PoC im Testmodus für CVE-2026-92162, einen Path Traversal im DeployAppstream-Arch-Parameter von Flatpak, der die Erstellung von Root-Verzeichnissen ermöglicht. | Kitploit
Tools/GitHubGitHub/0xsemizzz/cve-2026-92162
Privilege EscalationSchwachstellenanalyseExploitationPost-ExploitationPenetrationstestsPapers & ForschungLernen & Bildung
GitHub0xsemizzz/cve-2026-92162

CVE-2026-92162

Bildungsorientierte Analyse und PoC im Testmodus für CVE-2026-92162, einen Path Traversal im DeployAppstream-Arch-Parameter von Flatpak, der die Erstellung von Root-Verzeichnissen ermöglicht.

Repository anzeigen
1vor 4h 40mNoch 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

CVE-2026-92162: Flatpak DeployAppstream arch Path Traversal

Lehrreiche Ausarbeitung und Proof of Concept im Testmodus für einen Path Traversal im Flatpak-System-Helper (flatpak-system-helper). Die D-Bus-Methode DeployAppstream akzeptiert einen arch-String, der in einen Dateisystempfad eingesetzt und als root erstellt wird, ohne Validierung. Ein aktiver lokaler Benutzer kann ../-Komponenten übergeben und bewirken, dass der root-privilegierte Dienst Verzeichnisse außerhalb des vorgesehenen appstream-Baums erstellt.

Dieses Repository begleitet die vollständige technische Analyse und den Forschungs-Post-Mortem. Es dient der Bildung, für Verteidiger, die den Mechanismus verstehen wollen, und für autorisierte Tests auf Systemen, die Ihnen gehören oder für die Sie eine schriftliche Genehmigung zur Bewertung haben.

Verantwortungsvolle Nutzung

Dieses Material wird nach koordinierter Offenlegung und nach Bereitstellung eines korrigierten Flatpak-Releases veröffentlicht. Führen Sie den Proof of Concept nur gegen eine Labormaschine aus, die Ihnen gehört oder die Sie ausdrücklich zur Testung autorisiert haben. Führen Sie ihn nicht gegen Systeme aus, die Sie nicht kontrollieren. Sie sind dafür verantwortlich, im Rahmen des Gesetzes und im Rahmen jeder Autorisierung zu bleiben, die Sie besitzen.

Das Problem in einem Absatz

handle_deploy_appstream() im System-Helper validiert das origin-Argument, aber nicht das arch-Argument. Bei einem OCI-Remote fließt arch in flatpak_build_file und dann in g_mkdir_with_parents, das als root läuft und ../ lexikalisch auflöst. Die polkit-Aktion für die Methode ist org.freedesktop.Flatpak.appstream-update, die allow_active=yes ist, sodass eine aktive lokale Sitzung den Code ohne Passwortabfrage erreicht. Auf einem System, das bereits ein OCI-Remote hat, wie etwa eine Standard-Fedora-Workstation mit ihrem fedora-Remote, kann ein Benutzer mit geringen Rechten root-eigene Verzeichnisse an einem beliebigen Pfad erstellen. Die Payload in diesem Repository zielt auf /root/.ssh selbst.

Teil einer Kette aus zwei Schwachstellen

Diese Schwachstelle, Finding A, wurde als Teil einer Kette aus zwei Schwachstellen demonstriert, die verwendet wurde, um von einem nicht authentifizierten lokalen Benutzer zu root auf der Maschine zu eskalieren, in einem kontrollierten und autorisierten Labor. Die Kette funktioniert wie folgt: Finding A erstellt /root/.ssh als root. Finding B, ein sekunditives Schreib-Primitiv, kann dann vom Angreifer kontrollierte Inhalte in dieses Verzeichnis schreiben. Zusammen geben sie einem Angreifer eine root-eigene Datei an einem vom Angreifer gewählten Pfad. Jeder Bug allein ist begrenzt: Finding A erstellt nur Verzeichnisse, und Finding B kann nur dorthin schreiben, wo bereits ein übergeordnetes Verzeichnis existiert. Finding A liefert das übergeordnete Verzeichnis, das Finding B benötigt, und das Paar wird zu einem root-Dateischreibzugriff.

Finding B wurde unabhängig durch diese Forschung identifiziert, ist aber kein neuer Fund: Es ist die bekannte, weiterhin ungepatchte Schwäche im Extra-Data-Write-Pfad von Deploy, die im Forschungs-Post-Mortem dokumentiert ist. Diese Ausarbeitung behandelt daher Finding A und wird dafür anerkannt, und verwendet Finding B nur als die bekannte, ungepatchte Komponente, auf die sich die Kette stützt.

Dieses Repository demonstriert nur Finding A. Die Verkettungsmethodik und die defensiven Lehren sind im Forschungs-Post-Mortem dokumentiert.

Der Fix

Das Projekt liefert bereits flatpak_is_valid_arch, das einen Architekturnamen auf [A-Za-z0-9_] beschränkt. Die Behebung besteht darin, es am Handler-Rand und innerhalb der pfadbildenden Helfer auf das arch-Argument anzuwenden. Ein ../-Wert kann dieses Prädikat nicht passieren. Aktualisieren Sie auf das korrigierte Flatpak-Release.

Repository-Layout

root@kitploit:~
.
├── README.md                 Diese Datei.
├── requirements.txt          Systempaket-Voraussetzungen für den PoC.
└── poc_arch_traversal.sh     PoC für den unvalidierten arch-Parameter.
                              Standardmäßig Sandbox-Testmodus, Produktionsmodus
                              zielt auf /root/.ssh. Nur für Bildungszwecke.

Verwendung

Voraussetzungen

  • Eine Linux-Maschine mit installiertem flatpak und den Paketen aus requirements.txt.
  • Eine lokale Konsolenanmeldung (nicht SSH), wenn Sie den Produktionsmodus ausführen, da der Trigger auf polkit allow_active=yes angewiesen ist. Prüfen Sie mit: loginctl list-sessions und bestätigen Sie, dass Ihre Sitzung einen Seat anzeigt.
  • Es wird keine OCI-Registry benötigt. Das Verzeichnis wird vor jedem Netzwerkabruf erstellt, sodass die Registry-URL nie erfolgreich kontaktiert wird.
  • Das Helper-Binary ist standardmäßig /usr/libexec/flatpak-system-helper; das Skript sucht zuerst nach einem frisch gebauten Helper in builddir/ oder _build/ des Flatpak-Quellbaums, und FLATPAK_SYSTEM_HELPER überschreibt alles. Siehe requirements.txt für die benötigten Systempakete.

Schritt 0: nach einem OCI-Remote suchen

Der Produktionsmodus erkennt automatisch ein vorhandenes OCI-Remote in der Systeminstallation und verwendet es. Jedes OCI-Remote funktioniert, selbst ein gefälschtes oder unerreichbares, da das mkdir erfolgt, bevor die Registry überhaupt kontaktiert wird. Wenn kein OCI-Remote existiert, bricht das Skript mit einer Meldung "No OCI remote found" ab und sendet nichts.

Fedora Workstation liefert bereits das OCI-Remote fedora, sodass dort nichts getan werden muss. Prüfen Sie, was existiert, mit flatpak remotes --system (ein OCI-Remote zeigt oci in seiner Optionsspalte).

Schritt 1: ein OCI-Remote hinzufügen (nur wenn Schritt 0 keines gefunden hat)

Dies ist der einzige Befehl im gesamten Ablauf, der sudo benötigt, und das Skript führt ihn nie für Sie aus. Fügen Sie eines hinzu mit:

root@kitploit:~
sudo flatpak remote-add --system --no-gpg-verify oci-poc oci+http://127.0.0.1:19876

(flatpak hat kein --oci-Flag, zumindest bis 1.19.0, der Version, auf der diese Arbeit basiert; das oci+-URL-Präfix macht das Remote zu einer OCI-Registry.) Eine Meldung "Warning: Could not update extra metadata" ist zu erwarten, wenn keine Registry läuft; das Remote wird trotzdem hinzugefügt.

Schritt 2: den Sandbox-Testmodus ausführen (sicher, kein root)

root@kitploit:~
bash poc_arch_traversal.sh

Das Skript startet einen privaten D-Bus-Bus und einen Helper im --session-Modus, alles unter einem temporären Verzeichnis. Es ruft DeployAppstream mit der Payload ../../../../../root/.ssh auf und verifiziert, dass das ausgebrochene Verzeichnis unter <workdir>/root/.ssh erstellt wurde, was das reale Ziel widerspiegelt. Erwarten Sie einen D-Bus-Fehler in der Mitte der Ausgabe: Das ist der fehlschlagende OCI-Index-Abruf, nachdem das Verzeichnis bereits erstellt wurde, und das ist das erwartete Verhalten.

Schritt 3: den Produktionsmodus ausführen (erstellt /root/.ssh als root)

root@kitploit:~
bash poc_arch_traversal.sh prod

Das Skript fragt nie nach einem Passwort. Es erkennt automatisch ein OCI-Remote, löst DeployAppstream unauthentifiziert mit der Traversal-Payload aus und gibt die Antwort des Helpers aus. Der root-Helper erstellt /root/.ssh und schlägt dann bei der unerreichbaren Registry fehl, was den erwarteten D-Bus-Fehler ausgibt. Wenn die Antwort stattdessen ein Authentifizierungsfehler ist, befinden Sie sich nicht in einer aktiven lokalen Sitzung; führen Sie es von der Konsole der Maschine aus. Ein bestimmtes Remote kann mit bash poc_arch_traversal.sh prod <remote> erzwungen werden.

Schritt 4: selbst verifizieren

Der Trigger selbst läuft unprivilegiert, aber die Bestätigung des Ergebnisses erfordert root, daher überlässt das Skript das Ihnen. Nach dem Lauf, auf derselben Maschine:

root@kitploit:~
sudo ls -laR /root/.ssh
sudo stat -c '%U:%G' /root/.ssh

Das Verzeichnis muss existieren und root:root gehören. Der D-Bus-Fehler in der Skriptausgabe ist kein Fehlschlag: Er beweist, dass das mkdir vor dem Abruf lief, da das ausgebrochene Verzeichnis existiert, obwohl der Methodenaufruf fehlschlug.

Wenn /root/.ssh bereits vor dem Lauf existierte (zum Beispiel auf einem Host mit laufendem sshd), ist der Lauf auf diesem Pfad ein No-op und hinterlässt nichts: Die lock-Datei des Helpers ist transient und wird entfernt, wenn die Methode zurückkehrt, und icons wird erst nach einem erfolgreichen Index-Abruf geschrieben. Für eine saubere Verifikation führen Sie ihn gegen einen Pfad aus, der noch nicht existiert.

Aufräumen

root@kitploit:~
sudo rm -rf /root/.ssh      # nur, wenn es vor dem Lauf nicht existierte
sudo flatpak remote-delete --system oci-poc

Danksagung

Recherche und Ausarbeitung von Yehia Ali Mohamed Ezzat.

  • GitHub: 0xSemizzz
  • Website: https://0xsemizzz.vercel.app/

Lizenz

Dokumentation und Code in diesem Repository werden für Bildungszwecke bereitgestellt. Nutzung auf eigenes Risiko und nur dort, wo Sie autorisiert sind.

Tool herunterladen