
GhostLock (CVE-2026-43499) Galaxy S25 FE के लिए (W.I.P)
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 के माध्यम से स्थायी रूट शेल।system_unbound_wq पर एक work_struct जाली बनाता है
जिसका फ़ंक्शन call_usermodehelper_exec_work है, इसलिए कर्नेल
init क्रेड्स के साथ हमारे डेमन को निष्पादित करता है। KDP का क्रेडेंशियल पेजों पर EL2 गार्ड
कभी ट्रिगर नहीं होता।pselect + futex PI रेस
→ प्रति राउंड एक संरेखित qword राइट
→ attr कैरियर (दो नकली misc fds)
कंट्रोलर fd डेटा पॉइंटर को रीटार्गेट करता है
डेटा fd किसी भी कर्नेल एड्रेस को रीड/राइट करता है
→ slide oracle (tracefs)
→ UMH रूट (workqueue इंजेक्शन)
system_unbound_wq
ptmx ओपन/क्लोज़ स्टॉर्म एक वर्कर को जगाता है
कर्नेल init क्रेड्स के साथ डेमन को निष्पादित करता है
→ DEFEX बाईपास (bind-mount)
→ su_daemon /data/local/tmp/temp_su.sock पर सुनता है
पैरामीटर कर्नेल लाइन (तीन लाइनें: cn, intl, exynos) द्वारा मिलाए जाते हैं, न कि
व्यक्तिगत बिल्ड द्वारा। अज्ञात OTA बिल्ड मॉडल और CSC द्वारा निकटतम ज्ञात लाइन पर वापस आ जाते हैं।
पूरी तरह से अज्ञात मॉडल अस्वीकार कर दिए जाते हैं (fail-closed)। एम्बेडेड बिल्ड
सूची 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
शेल सत्र से चलाएं, 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 |