
سلاح إثبات مفهوم مُسلّح لثغرة CVE-2026-43499 (GhostLock)، وهي خلل في rtmutex بنواة لينكس يتيح تصعيد الامتيازات محليًا. يتضمن سلاسل استغلال مخصصة لكل توزيعة، وتقارير فنية، واختبارات موثوقية.
بحث تسليح لـ CVE-2026-43499 (ghostlock).
خطأ مسار الوكيل remove_water() في rtmutex الذي يترك pi_blocked_on لمهمة معلقًا داخل إطار مكدس النواة الخاص بها.
يعود الفضل في فئة الخطأ واستراتيجية الاستغلال الأصلية إلى nebusec (شرحهم هنا)
كل شيء في هذا المستودع هو عملي الخاص لكل توزيعة على حدة:
كل عائلة نواة تحتاج إلى بدائيات مختلفة جوهريًا وهذا ما يجعل هذا مثيرًا للاهتمام.
مشغل Ghostlock غير مميز بالكامل (ثلاثة futexes، خيطان، ولا مساحات أسماء). العملية وراء تحويل المؤشر المعلق إلى صلاحيات root هي حيث تختلف كل توزيعة عن الأخرى، وهذا يعود إلى هندسة الإطار، والتخفيفات، وما تعنيه "بايتات مُتحكم بها في عنوان نواة معروف" كلها تتغير. سيجمع هذا المستودع سلاسل الاستغلال لكل عائلة هدف.
| الهدف | السلسلة | التهيئة | الحالة |
|---|---|---|---|
RHEL/CentOS 7 — 3.10.0-1160.102.1.el7 | el7/ — صفحة physmap-alias + رسام auxv + مسار sched_setscheduler | root داخل مساحة الاسم (حاوية مميزة) | يعمل، اختبار إجهاد 40/40 على إقلاعات نظيفة |
RHEL/CentOS 7 — 3.10.0-693.el7 | نفس السلسلة، هندسة إطار مُقاسة | نفس الشيء | المكونات مُتحقق منها 10/10؛ بانتظار اختبار الإجهاد فقط |
راجع WRITEUP.md في كل دليل فرعي للتحليل الفني الكامل، والسبب الجذري، ولماذا لا تنتقل سلسلة عصر 6.x القياسية،
ونتائج البدائيات، وما بنيته بدلاً من ذلك، وهندسات الإطارات المُقاسة، والبيانات المتعلقة بالموثوقية.
حيث تصبح الأمور صعبة - يتحقق المسار من ->lock الخاص بـ waiters المزورة مقابل القفل الذي وجده من خلاله (BUG_ON(w->lock != lock) على 3.10)، لذا تحتاج إلى هياكل مزيفة في ذاكرة قابلة للعنونة من النواة على عنوان تعرفه. هذا ما يختلف بشكل كبير بين النوى (خدعة منطقة دخول CPU من عصر 6.x التي استخدمها nebusec، غير موجودة على 3.10، el7 يعشوائي خريطة القاعدة المباشرة، إلخ). كل writeup يوثق إجابته الخاصة.
الخطأ والمشغل: لا تحتاج إلى أي صلاحيات، ولا مساحات أسماء مستخدمين، ولا شيء. أي مستخدم محلي يعمل.
كل تسليح يحدد تهيئته الخاصة في writeup الخاص به. سلسلة el7 مُهيأة من root داخل مساحة الاسم (عمليًا: أي RCE إلى حاوية مميزة - تم التحقق من ذلك من مثيل MYSQL عبر مسار مكون UDF الإضافي الخاص به، وهو موقف شائع جدًا). العمل على جانب النواة بعد التهيئة يستخدم فقط:
/proc/self/pagemap مع PFNs حقيقية (داخل مساحة الاسم CAP_SYS_ADMIN)/proc/kcore (داخل مساحة الاسم CAP_SYS_RAWIO على el7)/proc/kallsyms غير مُقنّع (kptr_restrict=0 أو CAP_SYSLOG)لا شيء من هذه هو الثغرة نفسها، إنها مجرد تسهيلات تهيئة تقوم مقام تسريبات المعلومات التي لم أبنيها بعد.
على el7 تحديدًا، سلسلة غير مميزة بالكامل محجوبة لأسباب هيكلية (خطأ BUG_ON في 3.10، لا CEA، لا زوج قفل مزيف ثابت في .data للنواة، بوابة PFN في pagemap)
يحتوي writeup الخاص بـ el7 على التحليل الكامل واتجاهات البحث، بشكل أساسي بدائية تسريب معلومات لعنوان الرأس
panic_on_oops=1، سير خاطئ سيسبب panic وينتج عنه جهاز ميت، لذا اعتبره إعدادًا كجزء من نموذج التهديد الخاص بك عند الاختبارel7/
WRITEUP.md writeup فني كامل لسلسلة el7
ghostlock_el7.c ملف واحد لإثبات المفهوم لكلتا النوى المُختبرتين
3bfdc63936dd ("rtmutex: Use waiter::task instead of current in
remove_waiter()")؛ متابعة NPD 40a25d59e85b