
استخدم CVE-2026-43499 لتعطيل SELinux على Android
استخراج Write-1 فقط من
JoinChang/ghostlock-oneplus
لـ CVE-2026-43499. إنه
يعطل وضع enforcing لـ SELinux على أنوية OnePlus المدعومة والضعيفة مع مُحمل إقلاع مقفل، ولا يفعل أي شيء آخر: لا كتابة فوق بيانات الاعتماد، ولا شل جذر، ولا KernelSU، ولا bootstrap، ولا تسرب KASLR.
CVE-2026-43499 هو ثغرة استخدام بعد التحرير (use-after-free) في rtmutex لنواة لينكس في مسار futex PI requeue. أثناء التراجع عن القفل الوكيل، تعمل remove_waiter() على current بدلاً من مهمة المنتظر، مما يترك مؤشر pi_blocked_on للمنتظر معلقًا. تم إصلاحها في الإصدارات الأحدث من لينكس 6.12.86 والإصدارات الأحدث من 6.12.
كتابة PI لعقدة فرعية واحدة:
fake_right = base + 0x100 -> byte0 = 0 (enforcing), byte1 = 1
إنه يعيد استخدام رش الكومة (heap spray) ومسار PI pselect من الاستغلال الكامل، لكنه يتجاوز KASLR (kaslr_slide = 0). يحاول حتى 20 مرة (مع تفريغ البلاطات بين المحاولات) ويخرج بمجرد أن يقرأ /sys/fs/selinux/enforce القيمة 0.
يتم الاحتفاظ بالأوليات المشتركة (رش الكومة في util.c, مسار pselect في fops.c, kernelsnitch, وجداول الإزاحة).
انظر src/devices/offsets.h، المفتاح بواسطة uname -r:
6.12.38-android16-5-...-ab14275539-4k6.12.38-android16-5-...-ab14552068-4k6.12.23-android16-5-...-ab14541642-4k (إزاحة فقط، غير مؤكد)make # uses /opt/android-ndk (or $ANDROID_NDK_HOME)
ينتج selinux_disabler، وهو ملف PIE لمعمارية aarch64 لنظام أندرويد API 35.
adb push selinux_disabler /data/local/tmp/a/e && chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e
تحقق:
adb shell cat /sys/fs/selinux/enforce # -> 0
فقط boot.img مطلوب. استخدم أدوات الاستخراج في دليل الأدوات الخاص بالمشروع الأصلي، ثم أضف إدخالًا تحت src/devices/<device>/offsets.h وقم بتضمينه (#include) من src/devices/offsets.h.
لأغراض البحث الأمني المصرح به والتعليم فقط.
| المُزال | السبب |
|---|
slide.c | تسريب KASLR SLIDE — غير ضروري (slide = 0) |
pipe.c | قراءة/كتابة فيزيائية عبر الأنبوب — يُستخدم فقط في مرحلة CFI/الجذر |
root.c | تصحيح بيانات الاعتماد / install_android_root — كتابة 2 فقط |
miniadb.c | عميل ADB مصغر للإقلاع التمهيدي — غير مستخدم |
try_cfi_stage, install_child_root, repair/refresh/leak/restore helpers (fops.c) | مرحلة CFI / تسريب KASLR / قراءة/كتابة فيزيائية عبر الأنبوب — لم يتم الوصول إليها على مسار الكتابة المخصصة |
perf_find_task, spawn_child, write_root_script, run_exploit, run_bootstrap (main.c) | كتابة 2 (بيانات الاعتماد → init_cred), شل جذر, KSU, bootstrap |