
GhostLock (CVE-2026-43499) لجهاز Galaxy S26
تم نقل CVE-2026-43499 إلى سلسلة سامسونج Galaxy S26 — أندرويد 16 / GKI 6.12. ملف ثنائي واحد، ثلاثة أسطر نواة، مطابقة ديناميكية للمعلمات في وقت التشغيل: يغطي نظريًا سلسلة S26 بالكامل دون تجميع لكل إصدار.
معظم جهود نقل GhostLock تستهدف جهازًا واحدًا أو برنامجًا ثابتًا واحدًا. هذا المستودع هو نقل جديد يعيد كتابة كل آلية لهدف S26 ومن المتوقع أن يغطي العائلة بأكملها.
أثناء صيانتي لمشروع snothin/CyberMeowfia، وجدت أن قناة pipe physrw الأصلية غير مستقرة (كانت تقطع الشبكة)، لذا تخليت عن هذا المسار واستكشفت بدائل. لاحقًا وجدت أن monovibe قد قطع شوطًا أبعد على طول المسار الذي كنت أستكشفه، فاعتمدت النهج، وبعد تصحيح أخطاء متكرر تشكّل هذا المستودع.
uid=0(root) context=u:r:kernel:s0؛ شل جذر دائم عبر su_daemon على مقبس يونكس مجرد.work_struct على system_unbound_wq بحيث تكون وظيفتها call_usermodehelper_exec_work، فتنفّذ النواة البرنامج الخفي لدينا بصلاحيات init. حارس EL2 الخاص بـ KDP على صفحات بيانات الاعتماد لا يُفعَّل أبدًا.pselect + futex PI race
→ one aligned qword write per round
→ attr carrier (two fake misc fds)
controller fd retargets the data pointer
data fd reads/writes any kernel address
→ slide oracle (tracefs)
→ UMH root (workqueue injection)
system_unbound_wq
ptmx open/close storm wakes a worker
kernel execs daemon with init creds
→ DEFEX bypass (bind-mount)
→ su_daemon listens on /data/local/tmp/temp_su.sock
تُطابق المعاملات حسب سطر النواة (ثلاثة أسطر: cn، intl، exynos)، وليس حسب إصدار فردي. إصدارات OTA غير المعروفة تتراجع إلى أقرب سطر معروف حسب الطراز وCSC. الطرز غير المعروفة تمامًا تُرفض (إغلاق عند الفشل). قائمة الإصدارات المضمّنة هي المرجع المعتمد في exploit/src/params_table.c. راجع PORTING.md للمعلمات المطلوبة عند النقل إلى جهاز أو برنامج ثابت جديد.
يتطلب Android NDK (r26+). فقط شغّل:
cd exploit
make preload
# produces build/bin/preload.so (exploit) and build/embed/su_daemon_aarch64_pie (embedded daemon)
انقل preload.so و su_daemon_aarch64_pie و ksud إلى الجهاز (شغّل من جلسة adb shell، uid 2000):
adb push exploit/build/bin/preload.so /data/local/tmp/
adb push exploit/build/embed/su_daemon_aarch64_pie /data/local/tmp/cve-2026-43499-root
adb push <ksud> /data/local/tmp/ksud
adb shell chmod 755 /data/local/tmp/cve-2026-43499-root /data/local/tmp/ksud
# Single attempt:
adb shell "env LD_PRELOAD=/data/local/tmp/preload.so sh"
الاستغلال احتمالي (سباق) وعادة ما يحتاج محاولات متكررة. عند التشغيل الناجح، يستمع su_daemon على /data/local/tmp/temp_su.sock، ويمكن لأي عملية محلية الاتصال به.
حارس ادعاء الإقلاع (/data/local/tmp/ghostlock-boot.log) يسجّل نتيجة تشغيل كل إقلاع؛ تشغيل ثانٍ للسلسلة الكاملة في نفس الإقلاع مرفوض (قد يعطّل الجهاز). امسح الملف أو عيّن BOOT_FORCE=1 لتجاوز ذلك.
exploit/src/kernelsnitch/)هذا المستودع مُصدَر بموجب رخصة Apache-2.0؛ راجع LICENSE للنص الكامل و NOTICE لمصدر الشيفرة.
| Model | Device codename | Tested builds |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (tested build) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |