
VFS for Git ab95cf51 - عالي - محلي - بقايا صلاحيات - استنساخ Authenticated Users GENERIC_WRITE
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vfs-clone-acl
الفئة: صلاحية متبقية الوصول: محلي
VFS for Git master ab95cf51 (tag v2.0.26259.1) - Microsoft
CloneVerb ينشئ PrimaryEnlistmentRoot باستخدام TryCreateDirectoryAccessibleByAuthUsers. تضيف هذه الدالة المساعدة NT AUTHORITY\Authenticated Users بصلاحيات GENERIC_READ|WRITE|EXECUTE|DELETE مع ContainerInherit|ObjectInherit. يتحدث التعليق عن الوصول المرفوع مقابل غير المرفوع لنفس المستخدم. لكن الـ SID هو كل مستخدم مُصادَق عليه.
بعد أن ينفذ الضحية gvfs clone، يمكن لمستخدم آخر مسجَّل الدخول أن يكتب داخل تلك الشجرة، بما في ذلك src\.git\hooks. يبقى المستودع مملوكًا للضحية، لذا لا يمنع git safe.directory ذلك.
| ID | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية (ACL دليل مفرط في التساهل / زرع hook) |
| الوصول | محلي |
| CWE | CWE-732، CWE-276 |
| CVSS | مرتفع: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| المنتج | VFS for Git |
| المتأثر | master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1). Windows فقط. |
| المصادقة | محلي. الضحية ينفذ gvfs clone. المهاجم مستخدم آخر مُصادَق عليه. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط. how=gadget (بدون Windows أصلي / ProjFS). |
هذا RCE على المضيف المحلي بصفة المستنسخ عند تنفيذ hook git/GVFS التالي. ليس shell بصلاحيات SYSTEM. المختبر زرع ملف canary فقط؛ ولم ينفذ أي hook.
الضحية استنسخ باستخدام GVFS. المهاجم هو مستخدم آخر مسجَّل الدخول من فئة Authenticated Users.
| الصلاحية | الطريقة / الهدف | ما تمنحه | الاستطلاع / السلامة / التوفر | مُثبت مختبريًا أو مُستنتج |
|---|---|---|---|---|
| وراثة GENERIC_WRITE على جذر enlistment | CloneVerb يستدعي TryCreateDirectoryAccessibleByAuthUsers(PrimaryEnlistmentRoot) | كل مستخدم مُصادَق عليه يمكنه الكتابة في الشجرة | السلامة | مُثبت مختبريًا على الـ gadget. سطر icacls هو NT AUTHORITY\Authenticated Users:(OI)(CI)(GR,GW,GE,D)، SID S-1-5-11، القناع 0xe0010000 |
وراثة هذا الـ ACE إلى العناصر الفرعية بما فيها .git/hooks | ContainerInherit | ObjectInherit | دليل hooks قابل للكتابة من المهاجم | السلامة | مُثبت مختبريًا. authusers_hooks=yes |
زرع ملف تحت src/.git/hooks بصفة المهاجم | كتابة VFS-CLONE-ACL-WITNESS | Canary في دليل hooks المملوك للضحية | السلامة | مُثبت مختبريًا. المالك هو uid المهاجم 1001، والنص هو الشاهد |
| تشغيل hook مزروع بصفة الضحية عند أمر git/GVFS التالي | استبدال pre-command / محمّل GVFS في نسخة مؤقتة | كود على المضيف بصفة المستنسخ | السلامة | مُستنتج. المختبر زرع ملف canary فقط؛ ولم ينفذ أي hook |
| كتابة ذاكرة الكائنات المحلية بالطريقة نفسها | LocalCacheResolver.cs نفس الدالة المساعدة | شجرة الذاكرة قابلة للكتابة من Auth Users | السلامة | مُستنتج. المختبر استنسخ جذر enlistment فقط |
| سلبي: ACL للمالك فقط | 0700، بدون ACE لـ Authenticated Users | كتابة المهاجم مرفوضة | مغلق | مُثبت مختبريًا مغلق. كتابة المهاجم EACCES |
| other:: قابل للكتابة للجميع | لا ينطبق | كتابة POSIX other | مغلق | مُثبت مختبريًا مغلق. other_write=no |
| كتابة عن بُعد بدون مصادقة | لا ينطبق | كتابة عبر الشبكة | مغلق | تسجيل دخول محلي ثانٍ |
| shell بصلاحيات SYSTEM | لا ينطبق | LocalSystem | مغلق | الـ hook التالي يعمل بصفة المستنسخ، وليس LocalSystem |
بقايا نفس التثبيت: vfs-quote-breakout، vfs-mount-dehydrate، vfs-service-sid، vfs-hook-impersonate، vfs-install-cwd.
ثبّتت VFSForGit master ab95cf51 بعد دمج 2026-09-28. ينشئ Clone جذر enlistment بدالة مساعدة تعليقها عن تقسيم رمز UAC. الـ SID هو AuthenticatedUserSid. هذا كل مستخدم مسجَّل الدخول، وليس المستخدم المُنشئ.
المنعطفات الخاطئة المسجَّلة مسبقًا: معاملة هذا كـ world-writable other:: (ليس كذلك؛ POSIX other لم يكن لديه كتابة)؛ ادعاء SYSTEM؛ تنفيذ hook مزروع في المختبر. مسرح. كان Windows الأصلي مفقودًا، لذا المختبر عبارة عن gadget لتلك الدوال كـ POSIX named-group ACL.
python3 vfs-clone-acl-Abraxas-Labs.py
أو
cd lab
./run.sh
Gadget HTTP على 127.0.0.1:19650. ينسخ TryCreateDirectoryAccessibleByAuthUsers ويطبق نفس الـ ACE كـ POSIX named-group ACL (authusers). السطر الأخير يستخدم how=gadget.
SUCCESS vfs-clone-acl how=gadget auth-users-write=yes inherit=OI-CI attacker-hook-write=yes owner-only=eacces VFS-CLONE-ACL-WITNESS
امنح المستخدم المُنشئ (واختياريًا Administrators لـ UAC)، وليس AuthenticatedUserSid. مكافئ icacls هو (OI)(CI)(M) للمالك فقط.
ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3aCloneVerb.csWindowsFileSystem.cs TryCreateDirectoryAccessibleByAuthUsersLocalCacheResolver.csGNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. بدون ضمان.