
VFS für Git ab95cf51 - Hoch - Lokal - LPE - Installer CWD nicht qualifiziert gvfs.exe
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vfs-install-cwd
Klasse: LPE Reichweite: Lokal
VFS for Git master ab95cf51 (Tag v2.0.26259.1) - Microsoft
Setup.iss PrepareToInstall ruft immer ExecWithResult('gvfs.exe', 'service --list-mounted', '', ...) über {cmd} /S /C mit einem leeren WorkingDir auf. Dadurch wird das Verzeichnis geerbt, aus dem der Administrator SetupGVFS*.exe gestartet hat. cmd.exe durchsucht zuerst das CWD und dann PATH. UnmountRepos verwendet denselben unqualifizierten Namen.
Dieselbe Datei qualifiziert bereits die sicheren Pfade. sc.exe ist {sys}\SC.EXE. Das Remount nach der Installation ist {app}\gvfs.exe. Bei der Erstinstallation gibt es noch kein echtes gvfs.exe im PATH, daher gewinnt eine Pflanze neben dem signierten Installer.
| ID | noch keine CVE |
| Klasse | LPE (CWD-Suche des erhöhten Installers / unqualifizierte Ausführung) |
| Reichweite | Lokal (UI:R) |
| CWE | CWE-427, CWE-428 |
| CVSS | Hoch: 7.3 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H |
| Produkt | VFS for Git |
| Betroffen | master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (Tag v2.0.26259.1). Nur Windows. |
| Auth | Lokal. Pflanze gvfs.exe in das Verzeichnis, aus dem ein Administrator SetupGVFS*.exe startet. |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | Nur 127.0.0.1. how=gadget (kein natives SetupGVFS*.exe). |
Geschwister von CVE-2021-47874 (nicht in Anführungszeichen gesetzter binPath), andere Senke. sc.exe und der Remount-Pfad sind bei diesem Pin bereits qualifiziert.
Pflanze ein harmloses gvfs.exe neben den signierten Installer. Wenn ein Administrator das Setup aus diesem Ordner startet, führt PrepareToInstall die Pflanze als erhöhter Installer aus.
| Privileg | Methode / Senke | Was es gewährt | Recon / Integrität / Verfügbarkeit | Lab-bewiesen oder abgeleitet |
|---|---|---|---|---|
| Installer-CWD erben | ExecWithResult leeres WorkingDir (Setup.iss ~830) | Suche beginnt im Startordner | Integrität der Suchreihenfolge | Lab-bewiesen. Gadget working_dir="", Suche cwd-then-path. |
Unqualifiziertes gvfs.exe aus CWD vor PATH auflösen | cmd.exe /S /C ""gvfs.exe" service --list-mounted > ..." | Pflanze gewinnt gegen PATH | Integrität | Lab-bewiesen. prepare-resolved=cwd-plant, aufgelöst /lab/cwd/gvfs.exe. PATH-Kopie wurde nicht getroffen. |
| Als erhöhter Installer ausführen | Witness-Dateieigentümer = Gadget-uid (Platzhalter für erhöhtes Setup) | Admin-äquivalente Codeausführung | Integrität | Lab-bewiesen auf der Gadget-uid. Natives Admin-IL auf diesem Host nicht verfügbar. |
| Dieselbe Pflanze beim Unmount | Exec('gvfs.exe', 'service --unmount-all', '', ...) (Setup.iss ~544) | Pflanze läuft erneut während des Unmounts | Integrität | Lab-bewiesen. unmount-resolved=cwd-plant. |
| Setup nach der Pflanze fortsetzen | Pflanze beendet mit 0 und schreibt nur einen Canary | Setup fährt fort | Verfügbarkeit der Installation | Lab-bewiesen. Witness-Text ist VFS-INSTALL-CWD-WITNESS. Keine Payload. |
Geschlossen bei diesem Überbleibsel: Remount {app}\gvfs.exe (remount-resolved=app, remount-plant=no). In Anführungszeichen gesetztes {sys}\SC.EXE (sc-resolved=sys). POSIX-Nur-PATH-Suche (unix-cwd-search=no). Live SetupGVFS*.exe / ProjFS (dieser Host ist macOS; how=gadget). Remote unauthentifizierte Ausführung. Nicht in Anführungszeichen gesetzter ImagePath CVE-2021-47874 (bereits in Anführungszeichen gesetzter binPath).
Überbleibsel desselben Pins: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate.
Ich habe VFSForGit master ab95cf51 nach dem Merge vom 2026-09-28 gepinnt. Die Skip-Liste ist CVE-2021-47874. Setup.iss setzt binPath bereits in Anführungszeichen und qualifiziert {sys}\SC.EXE und {app}\gvfs.exe. PrepareToInstall übergibt immer noch ein bloßes gvfs.exe an cmd.exe.
Bereits festgehaltene Irrwege: erneutes Einreichen von CVE-2021-47874; die POSIX-Nur-PATH-Suche als den Windows-Bug behandeln; behaupten, dass der Remount ebenfalls unqualifiziert ist. Theater. Natives Windows fehlte, daher ist das Lab ein Gadget von ExecWithResult plus cmd-CWD-dann-PATH-Suche.
python3 vfs-install-cwd-Abraxas-Labs.py
oder
cd lab
./run.sh
Gadget-HTTP auf 127.0.0.1:19680. Witness VFS-INSTALL-CWD-WITNESS. Letzte Zeile verwendet how=gadget.
SUCCESS vfs-install-cwd how=gadget prepare-resolved=cwd-plant prepare-witness=yes remount-resolved=app remount-plant=no unix-cwd-search=no VFS-INSTALL-CWD-WITNESS
ExpandConstant('{app}\gvfs.exe'), wenn vorhanden, sonst die list-mounted-Abfrage bei der Erstinstallation überspringen. Niemals ein bloßes gvfs.exe an cmd.exe übergeben. UnmountRepos auf dieselbe Weise qualifizieren.
ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3aSetup.iss PrepareToInstall / UnmountRepos / {sys}\SC.EXE / {app}\gvfs.exeImagePathGNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.