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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cheese — CVE-2025-21479 प्रूफ-ऑफ-कॉन्सेप्ट, मुझे लगता है | Kitploit
उपकरण/GitHubGitHub/zhuowei/cheese
एंड्रॉइड सुरक्षाएम्बेडेड सिस्टम सुरक्षाविशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगमोबाइल सुरक्षाहार्डवेयर सुरक्षाफर्मवेयर विश्लेषणबाइनरी शोषण
GitHubzhuowei/cheese
268591 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

cheese

CVE-2025-21479 प्रूफ-ऑफ-कॉन्सेप्ट, मुझे लगता है

रिपॉजिटरी देखें

Quest 3/3S के लिए रूट एक्सप्लॉइट — 7 अगस्त 2025 अपडेट और उससे पहले के संस्करणों के लिए, CVE-2025-21479 पर आधारित।

Magisk, Cheese और Termux का रूट शेल के साथ स्क्रीनशॉट

चेतावनी:

  • रूट करना खतरनाक है। यदि आप Quest 3/3S को ब्रिक कर देते हैं, तो उसे ठीक करने का कोई तरीका नहीं है।

  • यह टेम्प रूट होने पर सभी सुरक्षा को अक्षम कर देता है।

  • जिन ऐप्स या वेबसाइटों पर आप भरोसा नहीं करते, उन्हें न चलाएँ / न खोलें।

  • बूट या सिस्टम पार्टीशन में न लिखें। आप डिवाइस को BRICK कर देंगे।

  • Magisk की "Install" सुविधा का उपयोग न करें।

  • रूट करने के बाद आप अपने deviceKey, Meta Access Token और Oculus Access Token का बैकअप लेना चाह सकते हैं।

डाउनलोड

आप Release अनुभाग में एक APK डाउनलोड कर सकते हैं।

रूट करने की मार्गदर्शिका

Quest 3/3S रूट करने के लिए FreeXR की गाइड देखें।

अधिक जानकारी के लिए FreeXR के Discord से जुड़ें।

समर्थित संस्करण

  • Quest 3: v79 5115411.12900.520 (7 अगस्त 2025) और उससे नीचे, लगभग v71 तक।
  • Quest 3S: v79 117688.9900.610 (6 अगस्त 2025) और उससे नीचे, लगभग v71 तक।

कोई नया संस्करण समर्थित नहीं है। (पुराने संस्करणों को अधिक मेहनत से समर्थित किया जा सकता है।)

असमर्थित संस्करण

Meta ने इन संस्करणों और उनसे नए सभी संस्करणों में CVE-2025-21479 को पैच कर दिया है। वे कभी समर्थित नहीं होंगे।

  • Quest 3: v79 5115411.13420.520 (10 अगस्त 2025)
  • Quest 3S: v79 117688.10380.610 (10 अगस्त 2025)

इसमें इनका कोड शामिल है:

  • adrenaline by Project Zero
  • adreno_user from m-y-mo
  • Freedreno from Mesa
  • shellcode from Longterm Security
  • Magisk from topjohnwu and the Magisk developers.

स्रोत

इस रिपॉजिटरी में कमांड-लाइन cheese एक्ज़ीक्यूटेबल का स्रोत कोड है।

ऐप का स्रोत कोड cheese-app रिपॉजिटरी में है।

धन्यवाद

यह अन्य शोधकर्ताओं के Adreno GPU विश्लेषणों पर आधारित है; इसमें इनका कोड उपयोग किया गया है:

  • Project Zero/Ben Hawkes का Adrenaline
  • GitHub Security/Man Yue Mo का adreno_user
  • Freedreno/Rob Clark का kilroy

Adreno GPU फ़र्मवेयर के बारे में अतिरिक्त जानकारी, जिसमें फ़र्मवेयर को diff करने का तरीका और फ़र्मवेयर कैसे काम करता है, Freedreno के afuc दस्तावेज़ से आती है, जिसे Rob Clark, Connor Abbott और अन्य Freedreno/Turnip योगदानकर्ताओं ने बनाया है।

XRBreak और FreeXR के डेवलपर्स को उनकी सभी मदद और योगदान के लिए धन्यवाद।

====

CVE-2025-21479 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो दर्शाता है कि यह केवल Adreno A7xx (Snapdragon 8 Gen 1 / XR2 Gen 2 और नए) डिवाइसों को प्रभावित करता है।

यह केवल जाँचता है कि डिवाइस असुरक्षित (vulnerable) है या नहीं — इसे वास्तव में कुछ दिलचस्प करने लायक बनाने के लिए अधिक प्रयास करना होगा।

बिना पैच वाले Adreno A7xx डिवाइसों पर, इसे चलाने पर यह प्रिंट होना चाहिए:

root@kitploit:~
0 0

और यदि आप adb bugreport चलाते हैं, तो कर्नेल dmesg में आपको यह दिखाई देगा:

root@kitploit:~
<2>[146532.566695][  T933] kgsl kgsl-3d0: GPU PAGE FAULT: addr = 4000031004 pid= 0 name=(null) drawctxt=1111638594 context pid = 0
<2>[146532.566756][  T933] kgsl kgsl-3d0: context=gfx3d_user TTBR0=0x1234567841414141 (write unknown fault)
<2>[146532.566783][  T933] kgsl kgsl-3d0: FAULTING BLOCK: CP

Adreno A6xx डिवाइसों पर, इसे चलाने पर यह प्रिंट होता है:

root@kitploit:~
41414141 42424242

https://notnow.dev/notice/AvIZRBttG7DsDhx9hw

पैच किए हुए Adreno A7xx (जैसे मई 2025 सुरक्षा अपडेट के बाद के Samsung डिवाइस) को भी यह प्रिंट करना चाहिए, लेकिन मैंने इसका परीक्षण नहीं किया है।

उपयोग कैसे करें

root@kitploit:~
# adjust path to point to your Android NDK
bash build.sh
adb push cheese /data/local/tmp
adb shell /data/local/tmp/cheese

यह कैसे काम करता है

https://notnow.dev/notice/Av4sfoQjyrxogkZ6Ya

यह Adreno GPU पर एक कमांड बफर चलाता है (Project Zero के Adrenaline कोड के संशोधित संस्करण का उपयोग करके)

CP_SET_MODE चलाएँ — यह ड्रॉ स्टेट्स को तुरंत चलाने में सक्षम बनाता है।

CP_SET_DRAW_STATE चलाएँ — यह IB_LEVEL को 0x4 पर सेट करता है, फिर एक इंस्ट्रक्शन बफर को कॉल करता है।

CP_SET_DRAW_STATE के अंदर, CP_SMMU_TABLE_UPDATE चलाएँ।

यहाँ CP_SMMU_TABLE_UPDATE को हैंडल करने वाला फ़र्मवेयर है:

root@kitploit:~
CP_SMMU_TABLE_UPDATE:
// get IB level
and $02, $12, 0x3
// if not 0 (kernel ring buffer), go to CP_NOP
brne $02, 0x0, #l1873
<actual SMMU modify code >

तो IB_LEVEL=4 के साथ, 4 को 3 से मास्क करने पर 0 मिलता है, जो कर्नेल रिंग बफर की जाँच को पास कर देता है।

इसलिए आप पेजटेबल बदल सकते हैं और GPU को एरर करने पर मजबूर कर सकते हैं।

मैंने पैच को कैसे diff किया

मैंने Freedreno के afuc डिसअसेंबलर का उपयोग करके कई Samsung Galaxy फ़र्मवेयर को diff किया।

Galaxy S24 फ़र्मवेयर सबसे उपयोगी था, क्योंकि इसका GPU फ़र्मवेयर केवल एक वर्जन से भिन्न है — सुरक्षा फिक्स:

https://notnow.dev/notice/AuueszvUVUQnWqMQeO

https://notnow.dev/notice/Av0kDfOUPKhqHyjyxE

Galaxy S24 फ़र्मवेयर: gen70900_sqe.fw

  • अप्रैल अपडेट (S921USQU4BYD9): v675
  • मई अपडेट (S921USQS4BYE4): v676

https://notnow.dev/notice/Av0a7wUouVSa3EKkE4

Galaxy S24 Adreno फ़र्मवेयर को v675 और v676 के बीच diff करने पर एक प्रकार का diff दिखता है:

root@kitploit:~
        0163: b80300a4  CP_ME_INIT:
        0163: b80300a4  fxn355:
        0163: b80300a4  cread $03, [$00 + 0x0a4]
-       0164: 2a440003  and $04, $12, 0x3
+       0164: 2a440007  and $04, $12, 0x7
        0165: 98641813  ushr $03, $03, $04
        0166: c860004a  brne $03, b0, #l432
        0167: 01000000  nop

$12 की हर एक्सेस अब 0x3 की जगह 0x7 के साथ AND होती है। कोई अन्य बदलाव नहीं है।

https://gist.github.com/zhuowei/46a68b9ee53589cdeaa40c11d15d895f

रजिस्टर $12 IB level प्रतीत होता है: https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id23 https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id29

जो यह चुनता है कि ड्रॉ कमांडों की कौन सी कतार पढ़ी जाएगी। https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id31

Adreno 7xx हार्डवेयर 5 कतारों का समर्थन करता है (RB (kernel ringbuffer, विशेषाधिकार प्राप्त), IB1, IB2, IB3, या SDS): https://cs.android.com/android/platform/superproject/main/+/main:external/mesa3d/src/freedreno/registers/adreno/adreno_control_regs.xml;l=327;drc=c0867f48117dc2c18b1ae689235cb1f60b237600

https://notnow.dev/notice/Av0kDfOUPKhqHyjyxE

मुझे लगता है कि यह diff CVE-2025-21479 है। ऐसा लगता है कि यह केवल Adreno A7xx डिवाइसों (Snapdragon 8 Gen 1 और उससे ऊपर) को प्रभावित करता है। शायद Qualcomm बुलेटिन गलत है?

  • A6xx में 4 IB levels हैं: RB, IB1, IB2, और SDS: SDS=0x3
  • A7xx IB3 जोड़ता है: अब 5 IB levels हैं: RB, IB1, IB2, IB3, और SDS=0x4.
  • SDS अब 0x4 है, इसलिए 0x3 से मास्क करने पर 0x0 मिलेगा।

मेरा अनुमान है, एक Adreno A7xx डिवाइस पर:

  • यदि आप किसी तरह CP_SET_DRAW_STATE के साथ IB level 4 (SDS) पर कमांड निष्पादित कर सकें
  • और कोई ऐसा कमांड खोजें जो IB level = RB (कर्नेल-प्रदत्त रिंग बफर) की जाँच करता है, जैसे CP_SMMU_TABLE_UPDATE
  • तो आप उसे जाँच को बायपास करने के लिए धोखा दे सकते हैं

Project Zero ब्लॉग पोस्ट के अनुसार, CP_INDIRECT_BUFFER इंस्ट्रक्शन कंट्रोल प्रोसेसर इंस्ट्रक्शनों के एक इंडायरेक्ट बफर को कॉल करता है।

जब कोई ऐप GPU का उपयोग करना चाहता है, तो कर्नेल की RB (kernel ring buffer) में एक CP_INDIRECT_BUFFER कमांड होगा जो उपयोगकर्ता-प्रदत्त इंडायरेक्ट बफर — IB1 को कॉल करता है। यह उपयोगकर्ता बफर अपने स्वयं के इंडायरेक्ट बफर IB2 को कॉल कर सकता है। A7xx पर, IB3 भी होता है।

इसके अलावा, A6xx और A7xx दोनों पर, SDS होता है, जिसे इंडायरेक्ट बफर से नहीं, बल्कि CP_SET_DRAW_STATE से प्रवेश किया जाता है।

https://cs.android.com/android/platform/superproject/+/android15-qpr2-release:external/mesa3d/src/freedreno/decode/cffdec.c;l=3030;drc=0dc791ed57dacf9fe3df694d7f285a8d9f942fa7 https://cs.android.com/android/platform/superproject/+/android15-qpr2-release:external/mesa3d/src/freedreno/decode/cffdec.c;l=2283;drc=0dc791ed57dacf9fe3df694d7f285a8d9f942fa7

A6xx में RB, IB1, IB2 और SDS है। CP_SET_DRAW_STATE IB level को 0x3 पर सेट करता है: Galaxy Fold 3 फ़र्मवेयर के a650_sqe.fw.v114 में:

root@kitploit:~
mov $03, 0x3
or $12, $12, 0x20
call #fxn1132 // there's a branch delay slot, so this isn't executed yet...
cwrite $03, [$00 + @IB_LEVEL]

लेकिन A7xx में अब RB, IB1, IB2, IB3, या SDS है। CP_SET_DRAW_STATE अब IB level को 0x4 पर सेट करता है:

root@kitploit:~
mov $03, 0x4
cwrite $03, [$00 + @IB_LEVEL]

0x4 & 0x3 = 0x0.

https://cs.android.com/android/platform/superproject/main/+/main:external/mesa3d/src/freedreno/registers/adreno/adreno_control_regs.xml;l=327;drc=c0867f48117dc2c18b1ae689235cb1f60b237600

इसलिए वर्तमान IB level की जाँच करने वाला कोड सोचेगा कि SDS (set draw state) RB (kernel ring buffer) है, और CP_SMMU_TABLE_UPDATE जैसे कमांड निष्पादन की अनुमति देंगे।

टूल डाउनलोड करें