Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ghostlock-oneplus — # GhostLock (CVE-2026-43499) استغلال نواة لأجهزة أندرويد ذات مُحمّل إقلاع مقفل | Kitploit
أدوات/GitHubGitHub/joinchang/ghostlock-oneplus
أمان أندرويدتصعيد الامتيازاتأطر الاستغلالتحليل الثغرات الأمنيةاختبار الاختراقأمن الجوالالتعلم والتعليماستغلال الملفات الثنائية
GitHubjoinchang/ghostlock-oneplus

ghostlock-oneplus

# GhostLock (CVE-2026-43499) استغلال نواة لأجهزة أندرويد ذات مُحمّل إقلاع مقفل

عرض المستودع
2354626منذ 11 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

GhostLock — كسر حماية أداة تحميل الإقلاع المقفلة

استغلال نواة لأجهزة Android ذات أداة تحميل الإقلاع المقفلة. يحقق صلاحيات الجذر المؤقتة + تثبيت KernelSU دون فتح قفل أداة تحميل الإقلاع أو تعديل صورة الإقلاع. اكتشاف تلقائي لوقت التشغيل لإصدار النواة مع جدول إزاحات متعدد الأجهزة.

GhostLock يعمل على OnePlus Ace 6T مع KernelSU (LKM، وضع كسر الحماية)

الثغرة

CVE-2026-43499 — Futex PI (ميراث الأولوية) Use-After-Free

تؤثر على نواة Linux من 5.7 إلى 7.1. تم إصلاحها في الإصدارات المستقرة 6.1.175 و6.6.140 و6.12.86. معظم أجهزة Android لا تزال غير مصححة حتى سبتمبر 2026.

استدعاء النظام pselect6 ينسخ بيانات fd_set على مكدس النواة. عند دمجه مع آلية انتظار futex PI، يمكن استعادة إطار مكدس محرر كبنية rt_mutex_waiter. ثم تقوم إعادة توازن شجرة rb-red أثناء اجتياز سلسلة PI بكتابة قيم محكومة إلى عناوين نواة عشوائية.

الأجهزة المدعومة

تم التحقق من عملها

إزاحات مستخرجة (بانتظار اختبار الجهاز)

غير ممكنة

يتطلب تراكب مكدس pselect أن يقع rt_mutex_waiter المحرر داخل منطقة stack_fds التي يتحكم بها المستخدم (الكلمات 0–14). مكان وقوعه يحدده ملفا تعريف PGO/LTO للمترجم، وليس إصدار النواة. انظر تخطيط المكدس.

ملاحظة حول جدوى 6.1: نوى OPLUS 6.1 غير ممكنة باستمرار بسبب دمج PGO لـ do_futex. ومع ذلك، تحتفظ بعض نوى 6.1 غير OPLUS (vivo) بسلسلة الاستدعاء القياسية وهي ممكنة (vivo T4، X Fold3 Pro). يجب التحقق من الجدوى لكل جهاز على حدة.

مسار الاستغلال

مساران للجذر، يتم اختيارهما تلقائيًا بناءً على قدرات الجهاز:

المسار A: جذر UMH (المفضل، أجهزة C ashmem)

يتطلب off_ashmem_misc_fops != 0 (C ashmem مع miscdevice ثابت في BSS).

root@kitploit:~
كتابة PI (mode=4)  ←  إعادة توجيه miscdevice fops إلى fops مزيفة
                   ←  قراءة/كتابة configfs ← pipe physrw (قراءة/كتابة نواة دقيقة ببايت واحد)
                   ←  SELinux enforcing = 0 (بايت واحد، بدون إتلاف policycap)
                   ←  UMH: حقن work_struct في system_unbound_wq
                   ←  سكربت الجذر ← ksud late-load ← تثبيت KSU

متاح على: OnePlus 13، OPPO Pad 4 Pro، أجهزة 5.10/6.1 C ashmem. غير متاح على Rust ashmem (6.12 GKI) — miscdevice مخصص على الكومة.

المسار B: كتابة PI مباشرة (احتياطي)

root@kitploit:~
كتابة 1 (mode=1)  ←  SELinux enforcing = 0 (كتابة 8 بايت، تتلف البايتات المجاورة)
كتابة 2 (mode=2)  ←  task->cred = init_cred (uid=0، جميع الصلاحيات)
صدفة الجذر         ←  ksud late-load ← KSU ← إصلاح سياسة SELinux

بعد W1+W2، يقوم الاستغلال بتصحيح حقل config في ملف سياسة SELinux الثنائي (|= 0xC0000000 لـ ANDROID_NETLINK_ROUTE + GETNEIGH) ويعيد تحميله عبر /sys/fs/selinux/load لاستعادة اتصال الشبكة.

وضع التمهيد (هاتف مستقل)

root@kitploit:~
التطبيق (seccomp)  ←  كتابة 1 ← mini-adb TCP ← adb shell: استغلال كامل ← جذر

الإقلاع التلقائي

يتم توفير مشغل وقت الإقلاع بواسطة تطبيق GhostLock Anchor المنفصل.

جدوى تخطيط المكدس

مع NFDS=320، يخصص core_sys_select مخزن stack_fds بحجم 256 بايت على مكدس النواة:

root@kitploit:~
stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── يتحكم به المستخدم ──►│◄── تصفره النواة ──►

يضع الاستغلال حقول waiter المزيفة (task، lock) في خرائط بتات إدخال fd_set. لـ 6.12 nested waiter (14 كلمة): أقصى waiter word ممكن = 3. لـ 5.10/6.1 compact waiter (10 كلمات): أقصى waiter word ممكن = 7.

يعتمد موضع waiter على عمق سلسلة الاستدعاء:

kernel_phys_load

تستخدم جميع عمليات كتابة النواة اسمًا مستعارًا للخريطة الخطية. يختار أداة تحميل الإقلاع kernel_phys_load، والذي يختلف حسب SoC:

SoCkernel_phys_load
SM8845 (Ace 6T، 15T)0xa8000000
SM8750 (OnePlus 13، OPPO Pad 4 Pro)0xa8000000

القيمة الخاطئة تفشل بصمت. اقرأها على جهاز مجذر:

root@kitploit:~
su -c 'grep -i "Kernel code" /proc/iomem'   # c7810000-... ← 0xc7800000

تجاوز وقت التشغيل: KPHYS=0xc7800000 /data/local/tmp/a/e

PSELECT_SHIFT

root@kitploit:~
/data/local/tmp/a/e                        # الافتراضي (shift=0)
PSELECT_SHIFT=-2 /data/local/tmp/a/e       # OnePlus 13 (6.6)

KIMAGE_TEXT_BASE

تستخدم نوى 5.10 0xffffffc008000000 (VA_BITS=39، مختلف عن الافتراضي 6.x 0xffffffc080000000). يتم التعامل مع هذا تلقائيًا عبر حقل kimage_text_base في إدخال إزاحة الجهاز.

البناء

root@kitploit:~
make NDK_ROOT=/path/to/android-ndk

أو مباشرة:

root@kitploit:~
NDK=/path/to/android-ndk
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang" \
  -O2 -Wall -Isrc/core -Isrc/devices -DTARGET_CONFIG_H=\"target.h\" \
  src/core/main.c src/core/util.c src/core/slide.c \
  src/core/fops.c src/core/pipe_physrw.c src/core/root.c \
  src/core/miniadb.c src/core/umh_root.c \
  -o ./ghostlock -fPIE -pie -pthread

المتطلبات الأساسية

ksud (مطلوب لتثبيت KSU)

يوفر GhostLock صلاحيات الجذر المؤقتة. يتطلب تثبيت KernelSU ksud الذي يضم kernelsu.ko لكل إصدار KMI.

الطريقةالخطوات
APK ReSukiSU (موصى به)ثبّت ReSukiSU أو هذا . يضم .

الإعداد

root@kitploit:~
adb shell mkdir -p /data/local/tmp/a
adb push ./ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e

شغّله بعد اكتمال الإقلاع وجاهزية ADB.

إضافة أجهزة جديدة

يلزم فقط boot.img — بدون جذر، بدون الحاجة للوصول إلى الجهاز.

1. استخراج النواة وkallsyms

انظر دليل أدوات kallsyms لسير العمل الكامل، أو:

root@kitploit:~
python tools/extract_target.py --kallsyms kallsyms.txt
python tools/extract_btf.py kernel

2. تحديد الجدوى

تحقق مما إذا كان do_futex مدمجًا بواسطة PGO بالبحث في ثنائي النواة عن جميع تعليمات الفرع التي تستهدف futex_wait_requeue_pi. إذا كان __arm64_sys_futex يستدعيها مباشرة (متجاوزًا do_futex)، فمن المرجح أن الجهاز غير ممكن.

3. إنشاء إدخال الجهاز

أضف src/devices/<name>/offsets.h مع الإزاحات المستخرجة وأدرجه في src/devices/offsets.h. استخدم ماكرو إزاحات البنية المناسب:

لأجهزة 5.10/6.1 compact waiter، اضبط أيضًا .kimage_text_base=0xffffffc008000000ULL.

الملفات

الترخيص

لأغراض البحث الأمني المصرح به والتعليم فقط.

تنزيل الأداة
الجهازSoCالنواةفرع GKISHIFT
OnePlus Ace 6T (PLR110)SM88456.12.38android16-50
OnePlus 15 (CPH2745/2747/2749)SM88506.12.23android16-50
Xiaomi 17 (pudding)SM88506.12.23 / 6.12.69android16-5 / android16-60
OnePlus 13 (IN2060)SM87506.6.89android15-8-2
OPPO Pad 4 ProSM87506.6.89android15-8-2
الجهازSoCالنواةملاحظات
OnePlus 15T (PLZ110)SM88456.12.38نفس نواة Ace 6T
OPPO Reno10 Pro+ (CPH2521)SM84755.10.2365.10 compact waiter، waiter word=0
Vivo X Fold3 Pro (PD2337)SM86506.1.1246.1 compact waiter، waiter word=3
Vivo T4SM86506.1.1456.1 compact waiter، waiter word=3
الجهازSoCالنواةالسبب الجذري
OPPO Find X9 UltraSM87506.12.58PGO يزيل do_futex ← waiter word=14
OnePlus 12SM86506.1.141PGO يدمج do_futex ← waiter word=13/19
OnePlus 13R / Ace 5SM86506.1.xOPLUS 6.1: waiter word=13
realme RMX5070SM66506.1.141OPLUS 6.1: waiter word=13
OPPO Pad 5 (OPD2502)MT68786.1.134OPLUS 6.1: waiter word=13
Motorola Edge 60 FusionMT68786.1.145غير OPLUS 6.1: نفس النتيجة
iQOO Neo 10 CNSM86506.1.84إطار do_futex 0xD0 ← waiter word=-11
OPPO PKW110—5.15.180إطار do_futex 0x140 ← waiter word=-29
iQOO Z9 5G—5.15.178إطار do_futex كبير جدًا
CPH2763 (OPPO)—6.1.115OPLUS 6.1: PGO مدمج، waiter word=24
النمطسلسلة الاستدعاءممكن
android16-5 (6.12)sys_futex ← do_futex ← fwrpi✅ waiter word=2
android15-8 (6.6)sys_futex ← do_futex ← fwrpi✅ waiter word=2 (SHIFT=-2)
vivo 6.1sys_futex ← do_futex ← fwrpi✅ waiter word=3
OPLUS 6.1sys_futex ← fwrpi (PGO مدمج)❌ waiter word=13+
android16-6 (X9 Ultra)sys_futex ← fwrpi (PGO مدمج)❌ waiter word=14
5.10 OPLUSsys_futex ← do_futex ← fwrpi✅ waiter word=0
SM8650 (vivo T4، X Fold3 Pro)
0xa8000000
SM8850 (OnePlus 15، Xiaomi 17)0xc7800000
الفرع
libksud.so
إصدار CIحمّله من ReSukiSU CI
النواةتخطيط Waiterالماكرو
6.12.xNested (14 كلمة)STRUCT_OFFSETS_6_12
6.6.xNested (14 كلمة)STRUCT_OFFSETS_6_6
6.1.x (vivo)Compact (10 كلمات)STRUCT_OFFSETS_6_1
5.10.xCompact (10 كلمات)STRUCT_OFFSETS_5_10
الملفالوصف
src/core/main.cنقطة دخول الاستغلال، W1/W2، مسار UMH، التمهيد، سكربت الجذر، إصلاح سياسة SELinux
src/core/fops.cمسار pselect، كتابة PI، مرحلة CFI، دعم compact waiter
src/core/util.cرش الكومة، KernelSnitch، تصريف slab، إعداد الحمولة
src/core/pipe_physrw.cقراءة/كتابة الذاكرة الفعلية عبر مخزن pipe
src/core/umh_root.cجذر UMH عبر حقن workqueue
src/core/miniadb.cعميل Mini ADB (TCP + مصادقة RSA)
src/core/target.hتخطيط الذاكرة، افتراضيات حقول البنية (6.12)
src/core/runtime_struct_offsets.hتجاوز حقول البنية لكل جهاز
src/devices/offsets.hجداول إزاحات الأجهزة + ماكرو STRUCT_OFFSETS_*
tools/extract_target.pyاستخراج الإزاحات من kallsyms
tools/extract_btf.pyاستخراج إزاحات البنية من BTF
tools/kallsyms/سير عمل استرداد kallsyms الشامل