
VFS for Git ab95cf51 - उच्च - स्थानीय - LPE - इंस्टॉलर CWD अनक्वालिफाइड gvfs.exe
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vfs-install-cwd
Class: LPE Reach: Local
VFS for Git master ab95cf51 (tag v2.0.26259.1) - Microsoft
Setup.iss PrepareToInstall हमेशा ExecWithResult('gvfs.exe', 'service --list-mounted', '', ...) को {cmd} /S /C के माध्यम से खाली WorkingDir के साथ कॉल करता है। यह उस डायरेक्टरी को इनहेरिट करता है जहाँ से एडमिन ने SetupGVFS*.exe लॉन्च किया था। cmd.exe पहले CWD फिर PATH खोजता है। UnmountRepos भी वही अनक्वालिफाइड नाम इस्तेमाल करता है।
वही फ़ाइल पहले से ही सुरक्षित पाथ को क्वालिफाई करती है। sc.exe है {sys}\SC.EXE। पोस्ट-इंस्टॉल रीमाउंट है {app}\gvfs.exe। पहली इंस्टॉल में PATH पर अभी कोई असली gvfs.exe नहीं होता, इसलिए साइन किए गए इंस्टॉलर के बगल में रखा प्लांट जीत जाता है।
| ID | अभी कोई CVE नहीं |
| Class | LPE (एलिवेटेड इंस्टॉलर CWD सर्च / अनक्वालिफाइड exec) |
| Reach | Local (UI:R) |
| CWE | CWE-427, CWE-428 |
| CVSS | High: 7.3 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H |
| Product | VFS for Git |
| Affected | master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1)। केवल Windows। |
| Auth | Local। उस डायरेक्टरी में gvfs.exe प्लांट करें जहाँ से एडमिन SetupGVFS*.exe लॉन्च करता है। |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1। how=gadget (कोई नेटिव SetupGVFS*.exe नहीं)। |
CVE-2021-47874 (अनक्वोटेड binPath) का सिबलिंग, अलग सिंक। इस पिन पर sc.exe और रीमाउंट पाथ पहले से ही क्वालिफाइड हैं।
साइन किए गए इंस्टॉलर के बगल में एक बिनाइन gvfs.exe प्लांट करें। जब एडमिन उस फ़ोल्डर से सेटअप लॉन्च करता है, PrepareToInstall प्लांट को एलिवेटेड इंस्टॉलर के रूप में चलाता है।
| Privilege | Method / sink | What it grants | Recon / integrity / availability | Lab-proven or inferred |
|---|---|---|---|---|
| इंस्टॉलर CWD इनहेरिट करें | ExecWithResult खाली WorkingDir (Setup.iss ~830) | सर्च लॉन्च फ़ोल्डर से शुरू होती है | सर्च ऑर्डर की इंटेग्रिटी | Lab-proven। Gadget working_dir="", search cwd-then-path। |
PATH से पहले CWD से अनक्वालिफाइड gvfs.exe रिज़ॉल्व करें | cmd.exe /S /C ""gvfs.exe" service --list-mounted > ..." | प्लांट PATH पर जीत जाता है | Integrity | Lab-proven। prepare-resolved=cwd-plant, resolved /lab/cwd/gvfs.exe। PATH कॉपी हिट नहीं हुई। |
| एलिवेटेड इंस्टॉलर के रूप में चलाएँ | Witness फ़ाइल ओनर = gadget uid (एलिवेटेड सेटअप का स्टैंड-इन) | एडमिन-समतुल्य कोड एक्ज़ीक्यूशन | Integrity | Lab-proven gadget uid पर। इस होस्ट पर नेटिव एडमिन IL उपलब्ध नहीं। |
| अनमाउंट पर वही प्लांट | Exec('gvfs.exe', 'service --unmount-all', '', ...) (Setup.iss ~544) | अनमाउंट के दौरान प्लांट फिर चलता है | Integrity | Lab-proven। unmount-resolved=cwd-plant। |
| प्लांट के बाद सेटअप जारी रखें | प्लांट exit 0 करता है और केवल एक canary लिखता है | सेटअप आगे बढ़ता है | इंस्टॉल की उपलब्धता | Lab-proven। Witness टेक्स्ट है VFS-INSTALL-CWD-WITNESS। कोई पेलोड नहीं। |
इस लेफ्टओवर पर बंद: रीमाउंट {app}\gvfs.exe (remount-resolved=app, remount-plant=no)। क्वोटेड {sys}\SC.EXE (sc-resolved=sys)। POSIX केवल-PATH सर्च (unix-cwd-search=no)। लाइव SetupGVFS*.exe / ProjFS (यह होस्ट macOS है; how=gadget)। रिमोट अनऑथेंटिकेटेड exec। अनक्वोटेड ImagePath CVE-2021-47874 (पहले से क्वोटेड binPath)।
इसी पिन के लेफ्टओवर: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate।
मैंने 2026-09-28 मर्ज के बाद VFSForGit master ab95cf51 को पिन किया। स्किप लिस्ट है CVE-2021-47874। Setup.iss पहले से ही binPath को क्वोट करता है और {sys}\SC.EXE तथा {app}\gvfs.exe को क्वालिफाई करता है। PrepareToInstall अभी भी cmd.exe को बेयर gvfs.exe पास करता है।
पहले से दर्ज गलत रास्ते: CVE-2021-47874 को दोबारा फाइल करना; POSIX केवल-PATH सर्च को Windows बग मानना; यह दावा करना कि रीमाउंट भी अनक्वालिफाइड है। थिएटर। नेटिव Windows मौजूद नहीं था, इसलिए लैब ExecWithResult का gadget प्लस cmd CWD-then-PATH सर्च है।
python3 vfs-install-cwd-Abraxas-Labs.py
या
cd lab
./run.sh
Gadget HTTP 127.0.0.1:19680 पर। Witness VFS-INSTALL-CWD-WITNESS। अंतिम पंक्ति 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'), अन्यथा पहली इंस्टॉल पर list-mounted क्वेरी छोड़ दें। cmd.exe को कभी बेयर gvfs.exe पास न करें। UnmountRepos को भी उसी तरह क्वालिफाई करें।
ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3aSetup.iss PrepareToInstall / UnmountRepos / {sys}\SC.EXE / {app}\gvfs.exeImagePathGNU Affero GPL v3.0। देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।