
Honor WIN RT (AAK-AN00) CVE-2026-43499 الحصول على صلاحيات الجذر المؤقتة - ملاحظات بحثية
(كله مكتوب بواسطة deepseek، أنا لا أفهم شيئًا)
أداة Bootloader الجهاز مقفلة بشكل دائم (
ro.oem_unlock.supportedفارغ)، لا يوجد fastboot، لا يوجد su دائم، لا يوجد Magisk. المسار الوحيد المتبقي هو ثغرة النواة. هذا المستودع يوثق العملية الكاملة من "هل يمكن تنفيذها" إلى "ما مدى استقرارها بعد التنفيذ".
الطبيعة: روت مؤقت، يزول عند إعادة التشغيل.
هذا المستودع يوثق عملية بحث أمني أُجريت على جهازي الشخصي، بهدف فهم أسباب سباق PI في النواة وحدود استقراره.
المسار الوحيد الذي نجح هو:
CVE-2026-43499 (سباق futex PI write-what-where) + ناقل rt_sigreturn
→ حقن LD_PRELOAD في عملية نطاق shell
→ على مرحلتين: أولاً ضرب SELinux Permissive، ثم تغيير task->real_cred / cred إلى init_cred
→ uid=0(root) context=u:r:kernel:s0، وزرع عملية su خفية
لكن ما يستحق التدوين حقًا ليس "كيف حصلنا على root" —— بل ما حدث بعد الحصول عليه.
ما حصلنا عليه ليس root مستقرًا، بل "حالة قابلة للانفجار في أي لحظة".
الكتابة البدائية في exploit تُدخل
rt_mutex_waiterمزيفًا في سلسلة futex PI الحقيقية، وحامل هذا waiter هو مكدس النواة / صفحات الرش التي ستُعاد استخدامها بواسطة استدعاءات نظام لاحقة. لذا من لحظة استقرار root، أي جدولة على مستوى النظام أو تغيير في الأولوية قد يدوس عليه، مما يؤدي مباشرة إلى panic في النواة وإعادة تشغيل. هذا ليس خطأً برمجيًا، بل هو الثمن المتأصل لهذه الطريقة في الاستغلال —— التفاصيل فيdocs/03.
لماذا يجب تثبيت إصدار النواة بدقة: العيب تم إصلاحه في 6.6.140، وجهازنا 6.6.118 < 6.6.140 لذا لا يزال موجودًا؛
كما أن جميع عناوين رموز النواة و"هندسة الناقل" في exploit مثبتة على هذا البناء الواحد، وبعد تغيير النواة يصبح جدول الإزاحات لاغيًا فورًا، وعادةً لا يمكن التراجع.
┌─ المواد ────────────────────────────────────────────────┐
│ boot.img + xbl_config.elf (مستخرجة من برامج الجهاز الثابتة) │
│ ↓ تحليل الرموز │
│ target.h (عناوين رموز النواة، تم التحقق منها بايت ببايت مع kallsyms) │
│ ↓ البناء │
│ preload.so ──► على الجهاز /data/local/tmp/*.so │
└────────────────────────────────────────────────────────┘
↓ حقن LD_PRELOAD
┌──────────── على مرحلتين (يجب عمليتان مستقلتان)────────────┐
│ المرحلة A GW_SELINUX=1 → selinux_state.enforcing = 0 │
│ المرحلة B GW_CHAIN=1 RTSIG_TASK_INIT=1 GW_SU=1 │
│ → task->real_cred ← &init_cred │
│ → task->cred ← &init_cred (تُنفذ بواسطة عملية "الكاتب المُعدّ مسبقًا")│
│ → setresuid(0,0,0) تطبيع │
│ → زرع su مدمج + daemon │
└─────────────────────────────────────────────────────────────┘
↓
uid=0(root) context=u:r:kernel:s0
ثلاثة أمور يجب إتقانها (الخطأ فيها يؤدي إلى الجمود أو panic مباشرة):
real_cred، ثم cred. العكس يؤدي إلى صلاحيات كاملة فورية وفقدان السيطرة على الخيوط.cred ≠ real_cred. في هذه اللحظة أي sched_setaffinity سيعطي EPERM → جمود كامل للدورة.
الحل الصحيح هو fork لعملية "الكاتب المُعدّ مسبقًا" قبل الضربة الأولى (بيانات اعتماد نظيفة)، العملية الأب تنفذ الضربة الأولى، والكاتب ينفذ الثانية، ولا أحد منهما يستدعي syscall أثناء الحالة العابرة.alias(image) = PAGE_OFFSET | (image − KIMAGE_TEXT_BASE + Δ)، مستقر عبر إعادات التشغيل؛
القيمة الحقيقية لما يسمى "مرحلة slide" هي التحقق الذاتي من الكتابة البدائية، وليس تجاوز KASLR.الإطار في المنبع:
Linuxoid-cn/CVE-2026-43499-Poc-Analysis. ملاحظة: هذا ليس GhostLock —— GhostLock يسير عبر مسار pselect، وهندسة نقطة سقوط waiter لا تتوافق مع هذا البناء، التفاصيل فيdocs/06.
إذا كنت أيضًا تعمل على طراز مقفل الـ BL، فكّر أولاً بوضوح فيما تريد فعله بـ root، لأن root على هذه الطرازات غالبًا ما يكون نافذة لا تدوم سوى بضع دقائق. ضع قائمة بالعمليات التي "تحتاج root ويمكن أن تبقى عبر إعادة التشغيل"، ونفّذها دفعة واحدة، ثم
rebootللعودة إلى الحالة النظيفة. لا تحاول "إزالة الآثار الجانبية" —— فهذا هو ثمن الطريقة نفسها.
| البند | القيمة | ملاحظات |
|---|
| الطراز | Honor WIN RT، الطراز AAK-AN00 | الاسم التسويقي "Honor WIN RT" |
| SoC | Snapdragon 8 Elite SM8750-AB | مع Honor WIN (AAP-AN00، SM8850-AC) البرامج الثابتة غير متوافقة |
| النظام | Android 16 / MagicOS 10 | — |
| النواة | 6.6.118-android15-8-gf17133276a57-abogki518694926-4k | ★ شرط صارم، مطابقة حرف بحرف |
| إعدادات النواة | 4K pages، VA_BITS=39، CONFIG_FUTEX_PI=y | شرط هندسة الناقل |
| حزمة البرامج الثابتة | .170 | .160 / .175 لم تُختبر |
| Bootloader | مقفل بشكل دائم | لا fastboot / لا su دائم |
| الوثيقة | المحتوى |
|---|
| 01 · تحليل الجدوى | لماذا لم يتبقَّ سوى ناقل rt_sigreturn واحد |
| 02 · سلسلة رفع الصلاحيات وعوامل النجاح | الكتابة البدائية، السلسلة السداسية، الكاتب المُعدّ مسبقًا، معايير النجاح |
| 03 · السبب الحقيقي للاستقرار: بقايا سلسلة PI | ★ الجوهر. انقطاع الشبكة ليس انقطاع شبكة، بل panic؛ يتضمن تفكيك نقاط الانهيار |
| 04 · قناة بدون كمبيوتر: Shizuku | استخدام rish من Shizuku بدلاً من adb لتشغيل exploit |
| 05 · late-load في KernelSU | طريقة تفعيل LKM ولماذا هو أخطر مُفجّر |
| 06 · قائمة الطرق المسدودة | طرق جُرّبت لكنها لم تنجح، لتوفير إعادة المحاولة على الآخرين |
| 07 · المزالق والبيئة | الحصول على مكدس panic بدون root، مزالق بيئة السكربتات |
| tools/ | سكربتات قابلة لإعادة الاستخدام (نسخة عامة منقّحة) |
| التاريخ | التقدم |
|---|
| 09-08 | تأكيد القفل الدائم لـ BL وإزالة قناة فتح OEM ⇒ التخلي عن المسار الرسمي والتحول إلى مسار الثغرات |
| 09-09 | اختراق مكتبة البرامج الثابتة لخدمة ما بعد البيع، الحصول على boot.img، استخراج النواة والرموز |
| 09-10 | تضييق البحث عن الناقل إلى rt_sigreturn؛ نجاح رفع الصلاحيات (20:14)، uid=0 |
| 09-11 | فتح القناة بدون كمبيوتر (Shizuku)؛ KernelSU قابل للتفعيل؛ تحديد السبب الحقيقي لـ"انقطاع الشبكة" = بقايا سلسلة PI |