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

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

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

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

دليل الأدوات

الفئات

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

GhostLock-for-OnePlus

(CVE-2026-43499)استغلال النواة لأجهزة OnePlus ذات محمل الإقلاع المقفل.

عرض المستودع
361319منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

GhostLock — ون بلس

中文

استغلال النواة يستهدف أجهزة OnePlus ذات مُحمل الإقلاع المقفل. يستخدم CVE-2026-43499 للحصول على صلاحيات الجذر دون فتح مُحمل الإقلاع أو تعديل boot.img.

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


جدول المحتويات

  • نظرة عامة على الثغرة
  • الأجهزة المدعومة
  • المتطلبات الأساسية
  • البناء
  • الاستخدام
  • أنماط التشغيل
  • التفاصيل التقنية
  • هيكل الملفات
  • إضافة أجهزة جديدة
  • الأسئلة الشائعة

نظرة عامة على الثغرة

العنصرالتفاصيل
CVECVE-2026-43499
النوعاستخدام بعد التحرير (Use-After-Free) في Futex PI (Priority Inheritance)
النطاقنواة لينكس من 2.6.39 إلى 7.1
تم الإصلاح فيالنسخة الرئيسية 7.1 (الالتزام 3bfdc63936dd)
حالة أندرويدGKI 6.12.x لا تزال ضعيفة

السبب الجذري

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

السلسلة

root@kitploit:~
Futex PI UAF (CVE-2026-43499)
  ├─ تزوير كائن rt_mutex_waiter
  ├─ التحكم في مكدس النواة عبر تخطيط fd_set الخاص بـ pselect/select
  ├─ تشغيل عملية PI الخاصة بـ rt_mutex لكتابة عشوائية
  ├─ الكتابة 1: selinux_state.enforcing = 0
  └─ الكتابة 2: cred → init_cred (uid=0، صلاحيات كاملة)

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

يمكن تكييف أجهزة OnePlus الأخرى التي تستخدم نفس عائلة SoC، أو أندرويد 16، أو نواة 6.12.x عبر استخراج الإزاحات من boot.img.


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

ksud (مطلوب لـ KernelSU)

يتولى GhostLock رفع الصلاحيات. يتطلب تثبيت KernelSU وجود ksud (مُرفق مع kernelsu.ko الخاص بـ KMI):

المصدرملاحظات
ReSukiSU APK (موصى به)قم بتثبيت ReSukiSU؛ يحتوي APK على

بدون ksud، سيظل الاستغلال يمنح صلاحية الجذر (uid=0)، لكن KernelSU لن يُثبت ولن يستمر وجود su.


البناء

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

  • Android NDK (r25+)
  • تعيين ANDROID_NDK_HOME أو ANDROID_NDK_ROOT

البناء

root@kitploit:~
# الافتراضي (API 35)
make

# تحديد مستوى API
make API=34

# تحديد مسار NDK
NDK=/path/to/android-ndk make

المخرجات

ghostlock — ملف تنفيذي ARM64 ELF مرتبط بشكل ثابت.


الاستخدام

الإعداد لمرة واحدة

root@kitploit:~
# 1. تمكين وضع ADB TCP
adb tcpip 5555

# 2. دفع مفتاح ADB (مطلوب لوضع التمهيد)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. دفع ملف الاستغلال
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

بعد النجاح الأول، يقوم resetprop تلقائيًا بتعيين persist.adb.tcp.port=5555، مما يسمح بتشغيل تلقائي كامل في عمليات إعادة التشغيل اللاحقة.


أنماط التشغيل

الاستغلال الكامل (سياق ADB shell)

root@kitploit:~
/data/local/tmp/a/e
  • متاح perf، تسريب دقيق لـ task_struct للعملية الفرعية
  • مرحلتان: W1 تعطيل SELinux → W2 رفع الصلاحيات → تحميل KernelSU

وضع التمهيد (سياق التطبيق، مقيد بـ seccomp)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. الكتابة 1 → تعطيل SELinux
  2. استخدام الصلاحيات المحررة لتعيين setprop لتمكين ADB TCP 5555
  3. عميل ADB مصغر مدمج يتصل بـ 127.0.0.1:5555
  4. مصادقة RSA بالمفتاح المُدفوع مسبقًا
  5. تنفيذ الاستغلال الكامل عبر ADB shell (بدون seccomp)

الكتابة 1 فقط

root@kitploit:~
/data/local/tmp/a/e --write1
  • حتى 20 محاولة
  • مفيد لتصحيح الأخطاء أو تعطيل SELinux المؤقت

التفاصيل التقنية

1. مطابقة نواة وقت التشغيل

الإزاحات مخزنة في جدول بحث src/devices/offsets.h، مُفهرسة بـ uname -r. يقوم البرنامج بالمطابقة تلقائيًا عند البدء؛ يتم رفض النوى غير المعروفة.

root@kitploit:~
static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* حارس */
};

مصادر الإزاحات

البنى المُتحقق منها عبر BTF

2. تجاوز KASLR

وضع SLIDE — تسريب boot_id

عندما تكون مؤشرات النواة مقيدة (kptr_restrict)، يتم تسريب العنوان الأساسي عبر boot_id المكتوب بعنوان نواة:

root@kitploit:~
قراءة /proc/sys/kernel/random/boot_id
  └─ UUID يحتوي على عنوان nfulnl_logger
      └─ انزلاق KASLR = العنوان المسرب - إزاحة الصورة
          └─ kaslr_base

وضع FOPS/CFI — تسريب جدول fops

عندما يكون جهاز ashmem قابلاً للوصول، استخدم بدائيات القراءة/الكتابة الخاصة بـ configfs لقراءة مؤشرات الدوال من جدول fops الخاص بـ ashmem وحساب إزاحة KASLR.

3. رش الكومة في النواة

تزوير كائنات النواة على صفحات من الدرجة الثالثة (32 كيلوبايت):

  • file_operations مزيف — اختطاف مؤشر fops لجهاز miscdevice الخاص بـ ashmem
  • rt_mutex_waiter مزيف — محاكاة عقدة منتظِمة في سلسلة PI
  • task_struct مزيف — مرجع مهمة أثناء اجتياز PI
  • rt_mutex (قفل) مزيف — معلومات صحيحة عن المنتظِم والمالك

تم التنفيذ عبر SKB (socket buffer) + KernelSnitch:

  • KernelSnitch — تصادم تجزئة futex لتسريب عناوين mm_struct
  • رش SKB — sendmsg لملء كومة النواة

4. قراءة/كتابة الذاكرة الفعلية (Pipe)

بعد الحصول على أساس KASLR، استخدم مخازن pipe للوصول إلى الذاكرة الفعلية:

root@kitploit:~
1. تحديد موقع مخزن pipe في physmap
2. تزوير جدول عمليات pipe_buffer مشيرًا إلى pipe_buf_ops معروف
3. اختطاف pipe_buffer.page للوصول إلى العنوان الفعلي المستهدف
4. قراءة/كتابة فيزيائية عشوائية عبر عمليات pipe العادية

المدعوم: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. الكتابة على مرحلتين

الكتابة 1 — تعطيل SELinux

root@kitploit:~
الهدف: selinux_state.enforcing (إزاحة 0x00)
الطريقة: كتابة PI عبر العقدة الفرعية → تزوير __rb_parent_color
        مشيرًا إلى selinux_enforcing - 8
        إعادة توازن شجرة rb يكتب 0x00

الكتابة 2 — رفع الصلاحية إلى الجذر

root@kitploit:~
الهدف: مؤشر cred للعملية الفرعية
الطريقة: 1. fork طفل → perf_find_task() لتحديد موقع task_struct
        2. حساب إزاحة حقل cred
        3. كتابة PI عبر العقدة الفرعية → cred = init_cred (uid=0، صلاحيات كاملة)
        4. مسح seccomp (TIF_SECCOMP + بنية seccomp مصفرة)

يتم التحقق من القراءة الخلفية للصلاحيات بعد استبدال cred.

6. عميل ADB مصغر مدمج

src/core/miniadb.c — عميل بروتوكول ADB خفيف الوزن لوضع التمهيد:

root@kitploit:~
1. اتصال TCP بـ 127.0.0.1:5555
2. A_CNXN → طلب اتصال
3. A_AUTH → تحدي رمز RSA
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → استجابة موقعة
6. A_CNXN → إنشاء الاتصال
7. A_OPEN "shell:/data/local/tmp/a/e" → استغلال كامل

يدعم خوارزميات التوقيع SHA-1 و SHA-256.


هيكل الملفات

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # تكوين البناء (NDK cross-compile)
├── README.md                       # التوثيق
├── src/
│   ├── core/                       # كود الاستغلال الأساسي
│   │   ├── main.c                  # نقطة الدخول: كتابة مرحلتين + شل الجذر
│   │   ├── fops.c                  # وضع FOPS/CFI: مسار pselect، كتابة PI، تسريب KASLR
│   │   ├── util.c                  # الأدوات: رش الكومة، KASLR، بدائيات R/W للنواة
│   │   ├── slide.c                 # وضع SLIDE: تسريب boot_id KASLR + مسار pselect
│   │   ├── pipe.c                  # قراءة/كتابة الذاكرة الفعلية لمخزن pipe (physrw)
│   │   ├── root.c                  # استبدال cred، مسح seccomp، إدارة الطفل الجذر
│   │   ├── miniadb.c              # عميل ADB مدمج (TCP + مصادقة RSA)
│   │   ├── common.h               # وحدات ماكرو عالمية، بنى، تصريحات، ثوابت
│   │   ├── target.h               # تخطيط الذاكرة المستهدف / إزاحات البنى / معاملات KASLR
│   │   ├── offset.h               # جسر تكوين الهدف في وقت الترجمة (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — تسريب عنوان mm_struct
│   │       ├── kernelsnitch.h     # الخوارزمية الأساسية: تصادم تجزئة futex + القوة الغاشمة
│   │       ├── futex_hash.h       # دالة تجزئة futex
│   │       ├── timeutils.h        # قياس الطابع الزمني لوحدة المعالجة المركزية (RDTSC)
│   │       └── utils.h            # وحدات ماكرو مساعدة (pr_info / SYSCHK / ASSERT إلخ.)
│   └── devices/                   # جداول إزاحات الأجهزة
│       ├── offsets.h              # تجميع جميع إزاحات الأجهزة (جدول بحث + حارس)
│       ├── ace6t/offsets.h        # إزاحات OnePlus Ace 6T (نسختا نواة)
│       └── op15/offsets.h         # إزاحات OnePlus 15 (نسخة نواة واحدة)
└── tools/                         # سلسلة أدوات استخراج الإزاحات
    ├── extract_target.py          # استخراج إزاحات الرموز العامة من kallsyms (28 عنصرًا)
    └── extract_btf.py             # استخراج إزاحات حقول بنى BTF (57 عنصرًا)

نظرة عامة على الوحدات الأساسية


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

فقط boot.img الخاص بالجهاز المستهدف مطلوب — لا حاجة لصلاحية الجذر أو وصول للجهاز.

استخراج الإزاحات

root@kitploit:~
# 1. استخراج النواة من boot.img
python -c "import struct; d=open('boot.img','rb').read(); \
           open('kernel','wb').write(d[4096:4096+struct.unpack_from('<I',d,8)[0]])"

# 2. الحصول على kallsyms (الجذر: adb shell su -c 'cat /proc/kallsyms' > kallsyms.txt)
#    أو من vmlinux: nm vmlinux > kallsyms.txt

# 3. استخراج إزاحات الرموز العامة
python tools/extract_target.py     # 28 إزاحة، تحقق تلقائي

# 4. استخراج إزاحات حقول البنى
python tools/extract_btf.py kernel  # 57 إزاحة، تحقق تلقائي

خطوات التكييف

  1. إنشاء src/devices/<name>/offsets.h (انظر ace6t/offsets.h)
  2. تضمينه (#include) في src/devices/offsets.h
  3. تحديث src/core/target.h لـ KIMAGE_TEXT_BASE وتخطيط الذاكرة إذا لزم الأمر
  4. إعادة البناء

ضبط عبر الأجهزة

العنصرملاحظات

الأسئلة الشائعة

س: لا يوجد إخراج عند التشغيل؟

تأكد من أنك تعمل في ADB shell. سياق التطبيق يتطلب --bootstrap.

س: "no offsets for this kernel"؟

إصدار النواة الخاص بك غير مدعوم بعد. اتبع إضافة أجهزة جديدة لاستخراج الإزاحات وإعادة البناء.

س: الكتابة 1 تفشل باستمرار؟

  • تأكد من التثبيت على النواة الصحيحة لوحدة المعالجة المركزية (CORE macro)
  • ضبط توقيت PSELECT_ENTER_DELAY_USEC
  • تحقق من العمليات المتداخلة

س: الكتابة 2 تعيد perf 0؟

  • تحقق مما إذا كان seccomp يمنع perf_event_open (استخدم --bootstrap في سياق التطبيق)
  • تحقق من نجاح تجاوز KASLR (وجود kaslr_base صحيح)

س: KernelSU لا يتم تحميله؟

  • تأكد من وجود ksud وقابليته للتنفيذ
  • تحقق من سلامة ملف سياسة الشبكة (إصلاح load_policy)

الترخيص

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

تنزيل الأداة
الجهازالاسم الرمزيSoCالنواةالبرنامج الثابتالحالة
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14275539-4kColorOS 16.0.2.403✅ تم التحقق
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14552068-4kColorOS 16.0.8.301✅ تم التحقق
OnePlus 15PLK110SM8845 (Snapdragon 8s Elite)6.12.23-android16-5-...-ab14541642-4k—✅ تم التحقق
libksud.so
إصدار CIقم بالتنزيل من ReSukiSU CI (ksud-aarch64-linux-android.zip)
النوعالعددالاستخراج
رموز kallsyms العامة28tools/extract_target.py
حقول بنى BTF57tools/extract_btf.py
قيم مشتقة9محسوبة تلقائيًا
ثوابت ثابتة12مشفرة صلبًا
البنيةالحقولالغرض
task_struct17واصف العملية، cred، seccomp
rt_mutex_waiter6هدف تزوير UAF
cred4بيانات الاعتماد، الصلاحيات
seccomp3حالة مرشح seccomp
pipe_inode_info11عمليات الـ pipe buffer
file_operations13جدول fops مزيف
mm_struct1مالك واصف الذاكرة
الوحدةالملف(ات)المسؤولية
الدخولmain.cتحليل CLI، توزيع W1/W2، تدفق التمهيد
مسار PIfops.c / slide.cتخطيط مكدس pselect/select، التلاعب بسلسلة Futex PI
KASLRutil.c / fops.c / slide.cتجاوز ثنائي الوضع: تسريب boot_id + تسريب جدول fops
رش الكومةutil.cتخصيص صفحات الدرجة الثالثة، رش SKB، تخطيط الكائنات المزيفة
قراءة/كتابة فيزيائيةpipe.cاختطاف مخزن pipe، الوصول العشوائي للذاكرة الفعلية
رفع الصلاحياتroot.cاستبدال cred، التحقق من الصلاحيات، مسح seccomp
ADBminiadb.cعميل بروتوكول ADB خفيف الوزن، مصادقة RSA
محرك التسريبkernelsnitch/تصادم تجزئة futex لتحديد موقع mm_struct
VA_BITS48 مقابل 39 → تحديث تخطيط الذاكرة في target.h
التوقيتضبط معاملات PSELECT_* في common.h
Ashmemتطبيق C مقابل Rust → تحديث مطابقة الرموز في extract_target.py
Secureguardالأجهزة غير OnePlus قد تبسط النشر