
إثبات مفهوم لاستغلال CVE-2022-0185، وهو تجاوز سعة المخزن المؤقت في الكومة (heap-based buffer overflow) في دالة legacy_parse_param في نواة لينكس (ملف fs/fs_context.c). يتيح هذا للمستخدم المحلي غير المتميز رفع صلاحياته إلى صلاحيات الجذر (root).
الاستغلال الأصلي من Crusaders of Rust. الشرح الكامل: https://www.willsroot.io/2022/01/cve-2022-0185.html
الخلل هو نقصان عددي صحيح (integer underflow) في فحص الحدود داخل legacy_parse_param(). عندما يصل الحجم الداخلي للمخزن size إلى 4095 بايت، يلتف الطرح غير الموقّع (unsigned subtraction) ويتجاوز الفحص، مما يتيح تجاوز سعة غير محدود في الكومة داخل شريحة kmalloc-4k.
الأنوية المتأثرة: لينكس 5.1 – 5.15 تم التصحيح في: لينكس 5.16+
make
# ادخل إلى user namespace للحصول على CAP_SYS_ADMIN
unshare -Urm
# شغّل الاستغلال — يجعل /bin/bash SUID
./exploit_fuse
# احصل على شل الجذر
bash -p
يعمل على أنوية أوبونتو ≥ 5.7. عدّل إزاحتي
single_startوmodprobe_pathفيexploit_fuse.cحسب إصدار نواتك.
./exploit_kctf
موثوقيته ~50%، موجه إلى Kubernetes 1.22 (kernel 5.10).
لأغراض تعليمية وبحثية فقط. لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
| الملف | الوصف |
|---|
exploit_fuse.c | استغلال رفع الصلاحيات على أوبونتو باستخدام FUSE + SYSVIPC |
exploit_kctf.c | الهروب من حاوية kCTF باستخدام الأنابيب (pipes) + سلسلة ROP |
fakefuse.c / .h | نظام ملفات FUSE مخصص لظروف السباق (race condition) |
util.c / .h | أدوات مساعدة مشتركة |
libfuse/, libfuse3.a | مكتبة libfuse مبنية بشكل ثابت (بدون dl_open) |
Makefile | سكربت البناء |