Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ghostlock-k419-adapter — محوّل GhostLock (CVE-2026-43499) لنواة أندرويد 4.19.152-perf+ | Kitploit
أدوات/GitHubGitHub/xiaobailovesstirring/ghostlock-k419-adapter
أمان أندرويدتصعيد الامتيازاتأطر الاستغلالالاستغلالما بعد الاستغلالاختبار الاختراقأمن الجوالتطوير الحمولاتاستغلال الملفات الثنائية

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHubxiaobailovesstirring/ghostlock-k419-adapter

ghostlock-k419-adapter

محوّل GhostLock (CVE-2026-43499) لنواة أندرويد 4.19.152-perf+

عرض المستودع
64150منذ 2 أشهرلم تتم المراجعة بعد

GhostLock — كسر حماية محمل الإقلاع المقفل لأجهزة OnePlus

استغلال نواة (kernel exploit) لأجهزة OnePlus/OPPO/realme ذات محمل إقلاع مقفل. يحقق تثبيت root + KernelSU دون فتح قفل محمل الإقلاع أو تعديل صورة الإقلاع. كشف تلقائي لإصدار النواة في وقت التشغيل مع جدول إزاحات متعدد الأجهزة.

GhostLock يعمل على OnePlus Ace 6T مع KernelSU (LKM، وضع Jailbreak)

الثغرة

CVE-2026-43499 — Futex PI (توريث الأولوية) استخدام بعد التحرير (Use-After-Free)

يؤثر على نواة لينكس 2.6.39 ~ 7.1. تم إصلاحه في الفرع الرئيسي (mainline) 7.1 (commit 3bfdc63936dd). لا يزال Android GKI 6.12.x عرضة للخطر.

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

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

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

الجهازSoCالنواةالحالة
OnePlus Ace 6T (PLR110)SM88456.12.38-...-ab14275539يعمل
OnePlus Ace 6T (PLR110)SM88456.12.38-...-ab14552068يعمل
OnePlus 15 (CPH2749)SM88506.12.23-...-ab14541642يعمل
Xiaomi 17 (pudding)SM88506.12.23-...-abogki463945075يعمل
Xiaomi 17 (pudding)SM88506.12.69-...-abogki514973465يعمل (تحديث أغسطس 2026)
OnePlus 13 (IN2060)SM87506.6.89-...-abogki446052083يعمل (PSELECT_SHIFT=-2)
OPPO Pad 4 ProSM87506.6.89-...-ab14358676يعمل (PSELECT_SHIFT=-2)

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

الجهازSoCالنواةملاحظات
OnePlus 15T (PLZ110)SM88456.12.38-...-ab14552068نفس نواة Ace 6T. تم التحقق عبر QEMU بفرق SP=-64.

غير ممكن (تخطيط المكدس غير متوافق)

يعمل تراكب pselect على المكدس فقط عندما يقع rt_mutex_waiter المُحرر داخل المنطقة القابلة للتحكم من المستخدم في مخزن stack_fds. يُحدد مكان وقوع الويتر بواسطة مخرجات المترجم (PGO + LTO)، وليس إصدار النواة. راجع تخطيط المكدس للتفاصيل.

الجهازSoCالنواةالسبب
OPPO Find X9 UltraSM87506.12.58-android16-6PGO يزيل إطار do_futex → فرق SP=+32، كلمة الويتر=14. لا توجد إزاحة آمنة.
OPPO Find X7—6.1.1576.1 GKI: الويتر عند الكلمة 13 (جميع أجهزة OPLUS/GKI ذات 6.1)
realme RMX5070SM66506.1.1416.1 GKI: الويتر عند الكلمة 13
realme RMX3852SM86356.1.141نفس فرع 6.1 الخاص بـ RMX5070
OnePlus 13R / Ace 5SM86506.1.xنفس فرع 6.1
OnePlus 12SM86506.1.1416.1 GKI: do_futex مضمّن عبر PGO، كلمة الويتر=13/19
OPPO Pad 5 (OPD2502)MT68786.1.134نفس فرع 6.1
OPPO PKW110—5.15.180إطار do_futex 0x140 (4.5x الطبيعي) → كلمة الويتر=-29، لا يمكن الوصول إليها
Motorola Edge 60 FusionMT68786.1.1456.1 GKI: الويتر عند الكلمة 13 (غير OPLUS، نفس النتيجة)
iQOO Z9 5G—5.15.178إطار do_futex كبير جدًا، لا يمكن الوصول إلى الويتر. ليس جهاز OPLUS (vivo).

تدفق الاستغلال

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

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

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

PI write (mode=4)  →  redirect miscdevice fops to fake fops (via W0 pi_tree)
                      configfs r/w established
                   →  pipe physrw (1-byte precise kernel r/w)
                   →  SELinux enforcing = 0 (single byte, no policycap corruption)
                   →  UMH: inject work_struct into system_unbound_wq
                      kernel executes /data/local/tmp/a/e --umh as UID 0
                   →  root script → ksud late-load → KSU installed

المزايا على المسار B:

  • كتابة SELinux ببايت واحد — لا تُفسد selinux_state.policycap (يصلح مشاكل الشبكة على OnePlus 13)
  • بدون perf_event_open — يعمل تحت قيود seccomp
  • بدون تصحيح بيانات الاعتماد — يتجنب تعديل task_struct الحية

متاح حاليًا على: OnePlus 13 (kernel 6.6، C ashmem). غير متاح على أجهزة Rust ashmem (6.12 GKI) — يُخصص miscdevice في الكومة (heap)، والعنوان غير قابل للتنبؤ وقت الترجمة.

المسار B: كتابة PI المباشرة (احتياطي، جميع الأجهزة)

يُستخدم عندما تكون إزاحات UMH أو misc_fops الخاصة بـ C ashmem غير متاحة.

Write 1 (mode=1)  →  SELinux enforcing = 0
                      (low byte of kernel ptr = 0x00, 8-byte write)

Write 2 (mode=2)  →  task->cred = init_cred
                      (uid=0, all capabilities)

Root shell         →  ksud late-load (KernelSU LKM)
                   →  su -c load_policy (fix SELinux policycap)
                   →  dynamic manager registration

وضع التمهيد الذاتي (الهاتف بمفرده)

App (seccomp)  →  Write 1 (no perf needed)
               →  mini-adb connect TCP (port from /data/local/tmp/a/adb_port, default 5555)
               →  adb shell: full exploit (perf works, no seccomp)
               →  root → KSU → network fix

الإقلاع التلقائي (عبر تكامل ReSukiSU)

BOOT_COMPLETED → BootCompletedReceiver
  ├─ su available → skip (soft reboot / already rooted)
  └─ no root → GhostlockService → setsid exploit --bootstrap

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

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

stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── USER CONTROLLED ──►│◄── KERNEL ZEROED ──►

يكتب الاستغلال حقول الويتر المزيفة (task, lock) في خرائط البت المدخلة لـ fd_set. لكي يعمل هذا، يجب أن يقع حقلا task وlock الخاصان بالويتر في المنطقة القابلة للتحكم (الكلمات 0-14).

Ace 6T ✅ (waiter at word 2):
  ░░████████████████░░│░░░░░░░░░░░░░░░░░░
    ▲waiter      t  l │
    task/lock controllable

RMX5070 ❌ (waiter at word 13):
  ░░░░░░░░░░░░░████│██████████████░░░░░░
                 ▲  │    t     l
               waiter  task/lock ZEROED

قاعدة الجدوى: يجب أن تكون كلمة الويتر + 11 (إزاحة lock في rt_waiter_node) ≤ 14. أقصى كلمة ويتر مجدية هي 3.

يُحدد موضع الويتر بواسطة تخطيط إطار المكدس في المترجم (ملفات تحسين PGO + LTO + BOLT)، والذي يختلف حسب فرع SoC. قد يكون لإصدار النواة نفسه تخطيطات مختلفة على SoCs مختلفة.

kernel_phys_load

تمر جميع عمليات الكتابة إلى النواة عبر اسم مستعار للخريطة الخطية للصورة:

data_addr(x) = PAGE_OFFSET + (kernel_phys_load - PHYS_OFFSET) + (x - KIMAGE_TEXT_BASE)

يختار محمل الإقلاع kernel_phys_load، لذلك يختلف حسب SoC وليس موجودًا في boot.img أو DT. حقل خاص بكل جهاز في struct kernel_offsets؛ 0 = استخدام الافتراضي في target.h.

SoCkernel_phys_load
SM8845 (Ace 6T, 15T)0xa8000000
SM8750 (OnePlus 13, OPPO Pad 4 Pro)0xa8000000
SM8850 (OnePlus 15, Xiaomi 17)0xc7800000

القيمة الخاطئة تفشل بصمت — فلا تزال الكتابة تصل إلى ذاكرة RAM المعينة، لذلك لا يحدث انهيار ولا تأثير. لا تخلط بينها وبين مشكلة PSELECT_SHIFT. اقرأها من جهاز مخترق (rooted) من نفس الطراز (يبدأ Kernel code عند _stext؛ ويكون _text أقل بـ 0x10000):

su -c 'grep -i "Kernel code" /proc/iomem'   # c7810000-... -> 0xc7800000

PSELECT_SHIFT

تضع النوى المختلفة الويتر في مواضع مختلفة داخل المنطقة القابلة للتحكم. استخدم PSELECT_SHIFT للضبط:

# Default (Ace 6T + OnePlus 15, 6.12): shift=0
/data/local/tmp/a/e

# OnePlus 13 (6.6): shift=-2
PSELECT_SHIFT=-2 /data/local/tmp/a/e

# Override kernel_phys_load for new SoCs (when /proc/iomem is not accessible):
KPHYS=0xc7800000 /data/local/tmp/a/e
تنزيل الأداة