
VFS per Git ab95cf51 - Alta - Locale - LPE - directory di lavoro del programma di installazione non qualificata gvfs.exe
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vfs-install-cwd
Classe: LPE Portata: Locale
VFS for Git master ab95cf51 (tag v2.0.26259.1) - Microsoft
Setup.iss PrepareToInstall chiama sempre ExecWithResult('gvfs.exe', 'service --list-mounted', '', ...) tramite {cmd} /S /C con WorkingDir vuota. Questa eredita la directory dalla quale l'amministratore ha avviato SetupGVFS*.exe. cmd.exe cerca nella CWD e poi nel PATH. UnmountRepos usa lo stesso nome non qualificato.
Lo stesso file qualifica già i percorsi sicuri. sc.exe è {sys}\SC.EXE. Il remount post-installazione è {app}\gvfs.exe. Alla prima installazione non esiste ancora un vero gvfs.exe nel PATH, quindi un file piantato accanto all'installer firmato vince.
| ID | nessuna CVE al momento |
| Classe | LPE (ricerca nella CWD dell'installer elevato / exec non qualificato) |
| Portata | Locale (UI:R) |
| CWE | CWE-427, CWE-428 |
| CVSS | Alto: 7.3 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H |
| Prodotto | VFS for Git |
| Affetto | master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1). Solo Windows. |
| Auth | Locale. Pianta gvfs.exe nella directory dalla quale un amministratore avvia SetupGVFS*.exe. |
| Licenza | GNU Affero GPL v3.0 |
| Lab | Solo 127.0.0.1. how=gadget (nessun SetupGVFS*.exe nativo). |
Gemello di CVE-2021-47874 (binPath non quotato), sink diverso. sc.exe e il percorso di remount su questo pin sono già qualificati.
Pianta un gvfs.exe benigno accanto all'installer firmato. Quando un amministratore avvia il setup da quella cartella, PrepareToInstall esegue il file piantato come installer elevato.
| Privilegio | Metodo / sink | Cosa concede | Recon / integrità / disponibilità | Provato in lab o dedotto |
|---|---|---|---|---|
| Ereditare la CWD dell'installer | ExecWithResult con WorkingDir vuota (Setup.iss ~830) | La ricerca parte dalla cartella di avvio | Integrità dell'ordine di ricerca | Provato in lab. Gadget working_dir="", ricerca cwd-then-path. |
Risolvere gvfs.exe non qualificato dalla CWD prima del PATH | cmd.exe /S /C ""gvfs.exe" service --list-mounted > ..." | Il file piantato vince sul PATH | Integrità | Provato in lab. prepare-resolved=cwd-plant, risolto /lab/cwd/gvfs.exe. La copia nel PATH non è stata colpita. |
| Eseguire come installer elevato | Proprietario del file witness = uid del gadget (sostituto del setup elevato) | Esecuzione di codice equivalente ad admin | Integrità | Provato in lab sull'uid del gadget. IL admin nativo non disponibile su questo host. |
| Stesso file piantato sull'unmount | Exec('gvfs.exe', 'service --unmount-all', '', ...) (Setup.iss ~544) | Il file piantato viene eseguito di nuovo durante l'unmount | Integrità | Provato in lab. unmount-resolved=cwd-plant. |
| Continuare il setup dopo il file piantato | Il file piantato esce con 0 e scrive solo un canary | Il setup procede | Disponibilità dell'installazione | Provato in lab. Il testo del witness è VFS-INSTALL-CWD-WITNESS. Nessun payload. |
Chiusi su questo residuo: remount {app}\gvfs.exe (remount-resolved=app, remount-plant=no). {sys}\SC.EXE quotato (sc-resolved=sys). Ricerca solo nel PATH POSIX (unix-cwd-search=no). SetupGVFS*.exe / ProjFS live (questo host è macOS; how=gadget). Exec remoto non autenticato. ImagePath non quotato CVE-2021-47874 (binPath già quotato).
Altri residui dello stesso pin: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate.
Ho fissato VFSForGit master ab95cf51 dopo il merge del 2026-09-28. La skip list è CVE-2021-47874. Setup.iss quota già binPath e qualifica {sys}\SC.EXE e {app}\gvfs.exe. PrepareToInstall passa ancora un gvfs.exe nudo a cmd.exe.
Vicoli ciechi già registrati: ri-segnalare CVE-2021-47874; trattare la ricerca solo nel PATH POSIX come il bug di Windows; sostenere che anche il remount sia non qualificato. Teatro. Windows nativo era assente, quindi il lab è un gadget di ExecWithResult più la ricerca CWD-then-PATH di cmd.
python3 vfs-install-cwd-Abraxas-Labs.py
oppure
cd lab
./run.sh
Gadget HTTP su 127.0.0.1:19680. Witness VFS-INSTALL-CWD-WITNESS. L'ultima riga usa 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') quando presente, altrimenti saltare la query list-mounted alla prima installazione. Non passare mai un gvfs.exe nudo a cmd.exe. Qualificare UnmountRepos allo stesso modo.
ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3aSetup.iss PrepareToInstall / UnmountRepos / {sys}\SC.EXE / {app}\gvfs.exeImagePath non quotatoGNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.