
أبحاث CVE واستغلالات للمساعدة في الحصول على صلاحيات الجذر لأجهزة Pixel
احصل على صلاحيات root على جهاز Google Pixel أصلي ذي bootloader مقفل من داخل adb shell غير متميّز، باستغلال ثغرة CVE في النواة — دون فتح القفل، ودون flash، ودون مساعدة من الشركة المصنّعة.
تُنتج ثغرة في النواة يمكن الوصول إليها من مساحة المستخدم بدائية قراءة/كتابة قصيرة العمر. تُستهلك هذه البدائية في التحميل المتأخر لوحدة KernelSU داخل نواة GKI قيد التشغيل، وبعد ذلك تُسلَّم صلاحيات root إلى أي مدير KernelSU مثبَّت مسبقًا. لا يُكتب أي قسم، لذا فإن إعادة التشغيل هي إلغاء التثبيت. كل شيء يعمل من المضيف عبر adb من خلال ملف تنفيذي واحد، ./pixel-ksu-root.
| CVE | الثغرة | أين تقف |
|---|---|---|
| CVE-2026-43499 — GhostLock | مسار futex PI يتبع rt_mutex_waiter تركته remove_waiter() معلّقًا، فيقرأ من خانة على المكدس أعادت pselect(2) شغلها | تمنح root، ومُتحقَّق منها على العتاد؛ وهي وصفة default، لذا فإن تشغيلًا مجرّدًا يتبنّاها |
| CVE-2026-43049 — FFWheel | تنشر hidpp_probe() جهاز الإدخال قبل تهيئة force-feedback وتعيد الخطأ دون hid_hw_stop()، فيبقى struct uhid_device محرَّرًا قابلاً للوصول عبر /dev/input/eventN | تمنح root، ومُتحقَّق منها على العتاد؛ use-after-free من shell غير متميّز إلى قراءة/كتابة عشوائية في النواة، ثم استبدال cred الخاصة بالعملية في مكانها |
| CVE-2026-93189 — Joyride | لا تنتظر hid_hw_stop() أبدًا توقف الإدخال، لذا فإن probe فاشلًا يحرّر struct hidraw التي لا تزال hidraw_report_event() تكتب فيها على معالج آخر | خليفة مرشّحة؛ يُسار مسار الوصول إلى التحرير على العتاد من shell غير متميّز عبر /dev/uhid، وهو مفتوح على الإصدارات التي تُغلق السلسلتين أعلاه |
| CVE-2026-46242 — BadEpoll | تُفرِّغ __ep_remove() قيمة file->f_ep وتواصل استخدام الملف، فيحرّر __fput() المتزامن eventpoll التي لا تزال تكتب عبرها | جزئية؛ سلسلتا القراءة والكتابة تعملان من البداية إلى النهاية، لكن التسليم عبر حدود الـ slab لم يُحلّ بعد |
| CVE-2026-56945 — RogueWave | تسير bigo_iommu_fault_handler() على قائمة نسخ عامة على مستوى السائق دون قفل، بناءً على افتراض موثَّق وخاطئ حول مُستدعيها | قابلة للوصول دون صلاحيات عبر واجهة AMediaCodec العامة؛ لم يُدخَل معالج الأخطاء نفسه بعد |
| CVE-2026-56914 — DirtyDock | تُوسِّخ gcip_iommu_mapping_unmap_buffer() صفحة DMA مثبَّتة باستخدام set_page_dirty() غير المقفلة بدلًا من نسختها المقفلة، متسابقةً مع تفكيك الذاكرة الداعمة | قابلة للإثارة من البداية إلى النهاية، وإن كانت عقدة الجهاز محكومة بالصلاحيات؛ استراتيجيتان متسابقتان دُحضتا، والتوقيت لم يُكسَب بعد |
| CVE-2026-64468 — Frostbind | تُشير binder_free_transaction() إلى t->to_proc دون حمل مرجع | مطاردة؛ القراءة المعرَّضة تعمل، لكن السباق يُخسر على العتاد الحقيقي |
| CVE-2026-64469 — Frostwalk | شقيقة Frostbind، في الدالة نفسها: القراءة غير المقفلة في binder_free_transaction() تتسابق مع binder_thread_release() وهي تسير على transaction_stack لخيط آخر | مطاردة؛ التحرير والسير كلاهما مؤكَّد الوصول، دون أي اعتماد على root في الآلية — تصل إلى عملية تطبيق بالطريقة التي تفعلها Shizuku؛ محاولة استرجاع دون قراءة تحقّق (flood + pin) لم تنجح بعد — الهدف الفعلي للكتابة لا يزال غير مميَّز |
| CVE-2026-64560 — Zombietick | يُحرَّر مؤقّت POSIX CPU على مستوى العملية وهو لا يزال في الطابور، لأن posix_cpu_timer_del() تعود مبكرًا بمجرد أن تُصفِّر de_thread() قيمة ->sighand | مطاردة؛ مرحلة KASLR تنجح، وواصف الجسر لا يُتحقَّق منه أبدًا |
| CVE-2026-49881 — Telecom | تثق Telecom باسم مكوّن يقدّمه المستدعي وتحمّله باستخدام CONTEXT_INCLUDE_CODE، فيشغّل تطبيق طُعم كود Java عشوائيًا داخل system_server | بحث؛ محور في مساحة المستخدم لا ثغرة نواة، مقترن بـ domainprobe/ |
| P0 465827985 — StackJump | كود أصلي مبني دون حماية stack-clash يسمح لإطار كبير بتجاوز صفحة الحماية لخيط system_server | الفيضان يتكرر ويُسقط خيط binder بشكل موثوق؛ لكن الكتابة القائمة على spray التي وصفها المُبلِّغ لا تفعل ذلك، لذا فإن البدائية المحقَّقة هي قراءة tombstone الانهيار — هزيمة كاملة لـ ASLR لتلك العملية |
| CVE-2026-28594 — SealSlip | يُقبل memfd غير مختوم حيث يُتوقَّع ashmem، فيبقى حجمه قابلًا للتغيير بينما يمسكه مستهلك | حجب خدمة فقط لمستدعٍ غير متميّز، ومحدود بـ SELinux؛ محفوظة من أجل الأداة |