
CVE-2026-43499 के लिए गार्डेड, स्रोत-केवल Humane AI Pin रूट PoC
Humane AI Pin के लिए GhostLock एक ओपन-सोर्स, बूट-स्कोप्ड रूट प्रूफ ऑफ कॉन्सेप्ट है जो एक सटीक रिटेल फर्मवेयर बिल्ड के लिए है। यह एक सामान्य अधिकृत ADB शेल से Linux rtmutex use-after-free CVE-2026-43499 का उपयोग करता है।
रनर जानबूझकर संकीर्ण रखा गया है। कुछ भी तैयार करने से पहले यह पूर्ण फर्मवेयर फिंगरप्रिंट, कर्नेल बिल्ड, स्लॉट, शेल UID और SELinux स्थिति की जाँच करता है। कोई भी बेमेल होने पर रन रुक जाता है।
[!WARNING] यह एक कर्नेल एक्सप्लॉइट है। यह Pin को पैनिक, रीबूट या हार्ड-हैंग कर सकता है। हार्ड हैंग की स्थिति में डिवाइस को अनप्लग करके बैटरी खत्म होने तक प्रतीक्षा करनी पड़ सकती है। इसका उपयोग केवल उसी Pin पर करें जो आपके स्वामित्व में हो और जिसे रिकवर करने का जोखिम आप उठा सकें। रीबूट पर रूट गायब हो जाता है।
| प्रॉपर्टी | स्वीकृत मान |
|---|---|
| डिवाइस | Humane AI Pin, रिटेल यूनिट |
| फर्मवेयर | qti/atoll/atoll:12/SKQ1.230401.001/101.000470.45.20:user/release-keys |
| Android | 12 |
| कर्नेल | 4.14.190-perf, निर्मित Mon Nov 4 18:37:23 PST 2024 |
| स्लॉट | केवल _b |
| कर्नेल आर्किटेक्चर | aarch64 |
| Android ABI | arm64-v8a |
| प्रोफ़ाइल ID | humane-aipin-45.20-nov4 |
| बिल्ड प्रोजेक्ट | humane-aipin-45.20 |
| कर्नेल Image SHA-256 | d4f4e0deb20871fce207f1f095ba1934162081c2f10afaccbb2e6a1e938719fb |
| रिलीज़-कैंडिडेट रीप्ले | अंतिम क्लीन-बूट रीप्ले लंबित |
स्लॉट _a, डेवलपर फर्मवेयर, आस-पास के फर्मवेयर संस्करण, और अन्य Qualcomm
atoll उत्पाद अस्वीकार किए जाते हैं। विवरण के लिए संगतता विवरण देखें।
मिलता-जुलता Android फिंगरप्रिंट इस जाँच को बायपास करने के लिए पर्याप्त नहीं है: A/B स्लॉट
एक ही यूज़रस्पेस बिल्ड पहचान के अंतर्गत भिन्न बूट इमेज और कर्नेल लेआउट रख सकते हैं।
संगतता profiles/ के अंतर्गत एक संस्करणित मैनिफ़ेस्ट द्वारा परिभाषित की जाती है। होस्ट
लॉन्चर, रनर, जनरेट किया गया नेटिव प्रीफ़्लाइट, एलोकेटर ज्यामिति, न्यूनतम
सिंबल, और निर्मित पेलोड उसी मैनिफ़ेस्ट से बंधे हैं। किसी मैनिफ़ेस्ट में स्लॉट जोड़ने के लिए
अभी भी सटीक प्रोफ़ाइल किए गए कर्नेल Image का क्लीन-बूट भौतिक रीप्ले आवश्यक है।
आपको आवश्यकता होगी:
adb, Python 3.10 या नया, make, और एक C कंपाइलर;28.2.13676358 (r28c)।इस रिपॉज़िटरी में कोई ADB निजी कुंजी, फर्मवेयर इमेज, बूट इमेज, बगरिपोर्ट, डिवाइस लॉग, या पहले से बना पेलोड शामिल नहीं है।
Android के कमांड-लाइन टूल्स के साथ पिन किया गया NDK इंस्टॉल करें:
sdkmanager "ndk;28.2.13676358"
पुष्टि करें कि ADB पहले से ही Pin को device के रूप में देख रहा है:
$ adb devices
List of devices attached
YOUR_SERIAL device
रिपॉज़िटरी को क्लोन करें, फिर हर कमांड के लिए वही स्पष्ट सीरियल उपयोग करें:
git clone https://github.com/TheAndersMadsen/humane-aipin-ghostlock.git
cd humane-aipin-ghostlock
./ghostlock check --serial YOUR_SERIAL
./ghostlock run --serial YOUR_SERIAL
./ghostlock verify --serial YOUR_SERIAL
check केवल-पढ़ने योग्य है। यह पता लगाए गए फ़र्मवेयर, कर्नेल, स्लॉट, शेल सीमा, SELinux स्थिति, बैटरी, पावर स्रोत, NDK संशोधन, और बिल्ड-टूल स्थिति को प्रिंट करता है। इसका डायग्नोस्टिक आउटपुट डिफ़ॉल्ट रूप से डिवाइस सीरियल को मास्क करता है।
run एक संरक्षित प्रयास करता है। यह आपसे ROOT YOUR_SERIAL टाइप करने के लिए कहता है, स्रोत से बिल्ड करता है, पुश करने के बाद पेलोड हैश सत्यापित करता है, KASLR प्राप्त करने के लिए वर्तमान-बूट बगरिपोर्ट कैप्चर करता है, डिफ़ॉल्ट रूप से उस कच्ची बगरिपोर्ट को हटा देता है, और दूसरे पूर्ण प्रीफ़्लाइट के बाद ही एक्सप्लॉइट शुरू करता है। लॉन्चर के लिए डिफ़ॉल्ट रूप से कम से कम 20% बैटरी और बाहरी पावर आवश्यक है, फिर रनर बूट के एकल प्रयास का उपभोग करने से ठीक पहले दोनों की पुनः जाँच करता है। --min-battery 0 दोनों पावर गेट्स को अक्षम कर देता है और इसका उद्देश्य केवल तब है जब स्थिर पावर की स्वतंत्र रूप से पुष्टि की गई हो।
verify स्वतंत्र रूप से बूट-स्कोप्ड रूट ब्रोकर से id और getenforce चलाने के लिए कहता है।
एक सफल सत्यापन इस प्रकार दिखता है:
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
SELinux: Permissive
Boot epoch: <redacted>; uptime: <redacted>s
सटीक SELinux संदर्भ कर्नेल और फर्मवेयर-विशिष्ट होता है। स्वीकृति की शर्त यह है कि उसी बूट पर SELinux permissive होने की स्थिति में ब्रोकर के माध्यम से UID/GID 0 प्राप्त हो।
वर्तमान बूट के लिए, पेलोड:
init_cred से बदलता है;/data/local/tmp/su पर एक छोटा कमांड क्लाइंट लिखता है;यह कोई पार्टीशन नहीं लिखता, बूटलोडर अनलॉक नहीं करता, कोई मॉड्यूल इंस्टॉल नहीं करता, verified boot को संशोधित नहीं करता, रीबूट पर्सिस्टेंस नहीं बनाता, किसी नेटवर्क सेवा से संपर्क नहीं करता, या टेलीमेट्री अपलोड नहीं करता।
किसी अन्य ADB shell से रूट कमांड इस प्रकार चलाएँ:
adb -s YOUR_SERIAL shell '/data/local/tmp/su -c id'
रनर प्रति कर्नेल बूट एक प्रयास की अनुमति देता है। यदि यह मिस, टाइमआउट, डिस्कनेक्ट, अनिश्चित स्थिति, पैनिक, या रीबूट की रिपोर्ट करता है, तो उस बूट पर पुनः प्रयास न करें।
पहले रीबूट करें और check फिर से चलाएँ।
यदि ADB अभी भी प्रतिक्रिया देता है:
adb -s YOUR_SERIAL reboot
यदि पिन हार्ड-हंग है और ADB प्रतिक्रिया नहीं देता है, तो सभी बाहरी पावर डिस्कनेक्ट करें। परीक्षण किए गए रिटेल हार्डवेयर में कोई विश्वसनीय उपयोगकर्ता-सुलभ फ़ोर्स्ड रीस्टार्ट नहीं है, इसलिए रिकवरी के लिए पावर पुनः कनेक्ट करने से पहले बैटरी के डिस्चार्ज होने तक प्रतीक्षा करनी पड़ सकती है।
सामान्य रीबूट के बाद, रूट चला जाता है। स्टेज किए गए फ़ाइलें
/data/local/tmp के अंतर्गत निष्क्रिय रह सकती हैं; एक साफ़ शेल उन्हें हटा सकता है, जिसमें बूट-विशिष्ट
परमाणु प्रयास दावे भी शामिल हैं:
adb -s YOUR_SERIAL shell 'rm -f /data/local/tmp/ghostlock-aipin.so /data/local/tmp/su /data/local/tmp/.ghostlock-su.sock /data/local/tmp/.ghostlock-aipin-attempt'
adb -s YOUR_SERIAL shell 'rm -rf /data/local/tmp/.ghostlock-aipin-attempt.*.lock'
PoC का उपयोग करने से पहले SAFETY.md पढ़ें और किसी विफल रन को पुनः प्रयास करने से पहले TROUBLESHOOTING.md पढ़ें।
रन रिकॉर्ड mode-0700 वाली एक अस्थायी निर्देशिका में लिखे जाते हैं। उनमें एक डिवाइस सीरियल, बूट पहचान, कर्नेल पते, और एक्सप्लॉइट टेलीमेट्री होती है। उस निर्देशिका या किसी कच्चे Android bugreport को कभी भी किसी इश्यू के साथ संलग्न न करें।
इसके बजाय एक संक्षिप्त रिपोर्ट बनाएँ:
./ghostlock report /private/tmp/ghostlock-aipin-TIMESTAMP --output ghostlock-report.json
साझा करने से पहले JSON की समीक्षा करें। redactor सीरियल, बूट ID, होस्ट पथ, कच्चा कमांड आउटपुट और कर्नेल पते छोड़ देता है। इसमें preflight, exploit, verification और कुल रन के लिए निश्चित मोनोटोनिक अवधियाँ शामिल होती हैं ताकि डिवाइस साक्ष्य साझा किए बिना विफलताओं की तुलना की जा सके। देखें PRIVACY.md।
Android payload बिल्ड करें:
./ghostlock build
जब एक से अधिक साक्ष्य-समर्थित प्रोफ़ाइल मौजूद हों, तो स्पष्ट रूप से एक चुनें:
./ghostlock build --profile humane-aipin-45.20-nov4
सभी होस्ट परीक्षण और दो स्वतंत्र बिल्ड चलाएँ:
./scripts/verify-release.sh
पेलोड यहाँ लिखा जाता है:
source/build/humane-aipin-45.20/bin/preload.so
बिल्ड उत्पादों को Git द्वारा अनदेखा किया जाता है। रिलीज़ एसेट्स को संबंधित GitHub रिलीज़ से जुड़े चेकसम के विरुद्ध सत्यापित किया जाना चाहिए।