
استغلال تصعيد امتيازات محلي مسلح لـ CVE-2026-7867 في udisks2، باستخدام انتحال التحميل كمستخدم لتجاوز PolicyKit والحصول على شل جذر.
as-user Spoofing → Authorization Bypass → Root-context Mount → LPECVE-2026-7867 هي ثغرة تصعيد صلاحيات محلية في udisks2 تتعلق بطريقة D-Bus الخاصة بـ Filesystem.Mount، وخيار as-user، وتدفقات التركيب المُدارة عبر fstab، ومعالجة تفويض معيبة.
يحتوي هذا المستودع الخاص على ملاحظات البحث الفني ونصوص PoC المستخدمة للتحقق من المشكلة في بيئة مختبرية خاضعة للرقابة.
تم اكتشاف الثغرة والإبلاغ عنها بواسطة:
| Azizcan Daştan | azqzazq1 |
| Özlem Ozan | oz7oz7 |
تم تخصيص المعرف التالي للمشكلة:
CVE-2026-7867
تنتج الثغرة عن علاقة ثقة معيبة بين UID الحقيقي لمتصل D-Bus وUID المحسوب/الفعلي الناتج عن خيار التركيب as-user.
في التدفقات المعيبة، يمكن لمستخدم محلي غير ممتاز التأثير على مسار تنفيذ التركيب بحيث يتم تركيب نظام ملفات في سياق ممتاز/جذر دون سلوك تفويض PolicyKit المتوقع.
الخلل الجوهري ليس مجرد «خيارات تركيب يتحكم بها المستخدم».
المشكلة الفعلية هي:
يفشل
udisks2في التمييز باستمرار بين هوية المتصل الأصلية وهويةas-userالمحسوبة أثناء تفويض وتنفيذ تركيب fstab.
| الحقل | القيمة |
|---|---|
| CVE | CVE-2026-7867 |
| المنتج | udisks2 |
| المكوّن | Filesystem.Mount |
| نوع الهجوم | تصعيد صلاحيات محلي |
| الأولية | انتحال as-user |
| حدود الأمان | هوية متصل D-Bus → تنفيذ تركيب ممتاز |
| طبقة التفويض | تفويض تركيب PolicyKit / fstab |
| البائع | Red Hat / upstream الخاص بـ udisks |
| الحالة | تصحيح قيد الإعداد / إفصاح منسّق |
| الإصدار المخطط للإصلاح | udisks 2.11.2 |
يرتبط المنطق المعيب بمسار معالجة تركيب fstab داخل udisks2، خاصةً عندما يتضمن طلب التركيب ما يلي:
Filesystem.Mount
as-user
x-udisks-auth
user
users
المناطق الحساسة أمنيًا ذات الصلة هي:
D-Bus caller identity
↓
as-user option handling
↓
fstab authorization logic
↓
PolicyKit decision flow
↓
root-context mount execution
┌─────────────────────────────┐
│ Unprivileged Local User │
└──────────────┬──────────────┘
│
│ Filesystem.Mount
│ with as-user influence
▼
┌─────────────────────────────┐
│ udisks2 / udisksd │
│ privileged system daemon │
└──────────────┬──────────────┘
│
│ fstab logic evaluates
│ user/auth options
▼
┌─────────────────────────────┐
│ Authorization Gap │
│ mount_other_user not │
│ enforced in skipped path │
└──────────────┬──────────────┘
│
│ root-context branch reached
▼
┌─────────────────────────────┐
│ Filesystem Mounted │
│ without expected auth flow │
└──────────────┬──────────────┘
│
│ impact depends on mount flags
▼
┌─────────────────────────────┐
│ Local Privilege Escalation │
│ controlled lab validation │
└─────────────────────────────┘
ينبع السلوك المعيب من خلل في الخلط بين الهويات.
يمتلك النظام عدة مفاهيم للهوية:
real D-Bus caller UID
computed as-user UID
effective mount UID
udisksd daemon privilege context
يفشل التدفق المعيب في فرض هذه الهويات بشكل متسق.
على وجه الخصوص:
mount_other_user صحيحًا بسبب استخدام as-userx-udisks-auth أو user أو users أن تؤثر على مسار التفويضmount_other_user بشكل موثوق خارج تلك الكتلةالنتيجة هي تجاوز لحدود الصلاحيات المحلية.
x-udisks-authمن المفترض أن يفرض خيار x-udisks-auth تدفق تفويض إداري عبر PolicyKit.
السلوك المتوقع:
mount request
↓
attempt mount as caller
↓
permission/auth failure
↓
PolicyKit filesystem-fstab check
↓
admin approval
↓
mount as authorized privileged action
السلوك المعيب:
mount request with as-user influence
↓
computed identity affects execution
↓
mount succeeds too early
↓
PolicyKit auth path is not reached as expected
↓
privileged mount state is achieved
وهذا يجعل النموذج الأمني المحيط بـ x-udisks-auth غير موثوق في المسار المعيب.
النموذج المتوقع:
Unprivileged user
↓
D-Bus mount request
↓
PolicyKit / fstab authorization
↓
restricted mount behavior
النموذج المكسور:
Unprivileged user
↓
D-Bus mount request with as-user spoofing
↓
authorization logic mismatch
↓
root-context mount execution
تتسم الثغرة بخطورة خاصة لأن الخدمة المتأثرة تعمل بصلاحيات مرتفعة.
قد يسمح الاستغلال الناجح لمستخدم محلي غير ممتاز بتركيب نظام ملفات عبر udisks2 في مسار تنفيذ بسياق جذر دون طلب التفويض المتوقع.
اعتمادًا على نظام الملفات وعلمات التركيب، قد يشمل الأثر ما يلي:
هذه ثغرة محلية.
تشمل الشروط ذات الصلة ما يلي:
| الشرط | مطلوب |
|---|---|
| وصول مستخدم محلي | نعم |
إصدار udisks2 معيب | نعم |
توفر وظيفة as-user | نعم |
| هدف تركيب مناسب مُدار عبر fstab | نعم |
| مسار تفويض معيب | نعم |
| وصول عن بُعد | لا |
.
├── README.md
├── disk2root.sh ← main exploit (self-contained LPE)
└── poc/
├── setup_lpe_env.sh ← lab environment setup
├── f2_mount_as_user_bypass.sh
├── f2_check_nosuid.sh
├── f2_suid_test.sh
├── f2_final.sh
└── cleanup_lpe_env.sh
disk2root.shاستغلال مُسلَّح مكتمل الذات. يبني حمولته الخاصة SUID بصلاحيات جذر، وينشئ صورة قرص مُجهزة، ثم يركّبها عبر تجاوز polkit باستخدام as-user=root، ويمنحك قشرة جذر.
الخيار 1 — التشغيل بصلاحيات الجذر (يعمل في كل البيئات، بما في ذلك SSH):
./disk2root.sh