Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2025-21479_iqooneo8 — CVE-2025-21479 (Adreno KGSL) के लिए iQOO Neo8 (SM8475) पर स्थानीय रूट एक्सप्लॉइट - भौतिक मेमोरी रीड/राइट, SELinux अक्षम करता है, रूट शेल लॉन्च करता है | Kitploit
उपकरण/GitHubGitHub/qingizi7/cve-2025-21479_iqooneo8
एंड्रॉइड सुरक्षाविशेषाधिकार वृद्धिशोषण फ्रेमवर्कशोषणरिवर्स इंजीनियरिंगमोबाइल सुरक्षाहार्डवेयर और IoT सुरक्षापेलोड डेवलपमेंटबाइनरी शोषण

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHubqingizi7/cve-2025-21479_iqooneo8

cve-2025-21479_iqooneo8

CVE-2025-21479 (Adreno KGSL) के लिए iQOO Neo8 (SM8475) पर स्थानीय रूट एक्सप्लॉइट - भौतिक मेमोरी रीड/राइट, SELinux अक्षम करता है, रूट शेल लॉन्च करता है

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

CVE-2025-21479 — Qualcomm Adreno GPU 提权漏洞利用(SM8475 / iQOO Neo8)

CVE-2025-21479 के लिए स्थानीय विशेषाधिकार उन्नयन प्रयोग कोड, लक्ष्य vivo V2301A (iQOO Neo8 / PD2301, Snapdragon 8+ Gen 1 / SM8475, Adreno A730, Android 14, GKI कर्नेल 5.10) पर Qualcomm Adreno GPU (KGSL) है।

सिद्धांत रूप में, यह एक्सप्लॉइट KGSL के CP_SMMU_TABLE_UPDATE कमांड के माध्यम से GPU के SMMU को नियंत्रित करता है, मनमानी भौतिक मेमोरी पढ़ने-लिखने की क्षमता प्राप्त करता है, और फिर SELinux को बंद करता है, कर्नेल सिंबल का पता लगाता है और root shell प्राप्त करता है—इस पूरी प्रक्रिया में फ़्लैशिंग की आवश्यकता नहीं होती, और यह Bootloader अनलॉक करने पर भी निर्भर नहीं करता।

仅限对你自己拥有、或已获授权的设备进行安全研究。


它做了什么

  1. GPU 物理内存原语。 Adreno A730(eureka_panther)微码的访问检查 (and $12, 0x3)存在缺陷,会把 Self-Draw-State(SDS)包误判为 RingBuffer(RB)。因此在用户态将伪造的 CP_SMMU_TABLE_UPDATE 放入 SDS 块中提交,即可覆写 GPU 的 TTBR0,让 GPU 页表指向任意物理页——从此 GPU 可以读写任意物理内存。
  2. 稳定化读写。 通过 stabilize_rw 将映射加固为 2 MB 自映射区域, 支持大批量快速读取(fast_pread_bytes 等)。
  3. 关闭 SELinux。 在物理内存中把 selinux_state.enforcing 字段清零。 随后从固定物理基址 0xA8000000 转储内核映像(默认上限 43 MB)—— SM8475 没有物理 KASLR——并直接从原始转储中解析 kallsyms 结构 (大小端自动识别),因此虚拟 KASLR 也不影响。
  4. root 载荷。 用一段 AArch64 shellcode(prepare_kernel_cred(0) → commit_creds(),并关闭 seccomp)补丁 __do_sys_capset。fork 出的子进程 调用 capset() → 变为 uid 0 → 恢复被覆盖的内核代码 → 子进程以 u:r:shell:s0 域重新执行你指定的命令(默认 sh)。内核代码最终 与运行前逐字节一致。

测试设备

型号vivo V2301A(iQOO Neo8,代号 PD2301,主板 taro)
SoCSM8475(骁龙 8+ Gen 1)+ Adreno 730
Android14(UP1A.231005.007,SDK 34,qssi-user)
内核5.10.198-gki-gfb2f5774872c
SELinuxEnforcing(运行时被本工具关闭)

完整设备信息见 device_info.txt。

仓库结构

├── source/
│   ├── cheese.c            # 漏洞利用主程序(include 了下面两个文件)
│   ├── kallsyms_lookup.c   # 针对原始内核映像的 kallsyms 解析器
│   └── adrenaline.h        # KGSL ioctl / 命令定义(作者 hawkes)
├── exploit                 # 预编译 arm64 二进制(动态链接,minSdk 21,
│                           #  NDK r30-beta2)
├── device_info.txt         # 用于调参的目标设备信息
└── README.md

注意:cheese.c 会 #include kallsyms_lookup.c 和 adrenaline.h, 编译时三个文件需要放在同一目录。

编译

任意较新的 Android NDK(r25+)均可,示例:

# 静态链接(自包含、任意 API 等级可运行;体积较大)
aarch64-linux-android34-clang -o cheese source/cheese.c -static

# 动态链接(体积小,依赖设备自带的 libc;API 等级需匹配设备)
aarch64-linux-android34-clang -o exploit_dyn source/cheese.c
# 若要兼容 API 21+ 设备,请改用 aarch64-linux-android21-clang

उपयोग विधि

#推送exploit
adb push exploit /data/local/tmp/

#运行exploit
adb shell
chmod +x /data/local/tmp/exploit
/data/local/tmp/exploit

विस्तृत ट्यूटोरियल के लिए यहाँ क्लिक करें (इसमें एक-क्लिक टूल शामिल है)

सफल होने पर uid=0 वाला एक shell प्राप्त होगा, और इस सत्र का SELinux बंद कर दिया गया है। प्रक्रिया विशेषाधिकार बढ़ाने के बाद argv[1..] को फिर से निष्पादित करेगी (डिफ़ॉल्ट रूप से sh)। प्रत्येक रन में एक उलटी गिनती ("pte wait 3 second") और 43 MB कर्नेल पढ़ने की प्रगति ("Read X / 43 MB") होगी। विशेषाधिकार वृद्धि सफल, uid=0

पर्यावरण चर

चरकार्य
CHEESE_PHYADDR=<phys>कर्नेल भौतिक आधार पता को बाध्यकारी रूप से निर्दिष्ट करें (अंतर्निहित gPhyAddrs प्रोबिंग तालिका को छोड़ें)।
CHEESE_ATTEMPT=<n>gPhyAddrs[0] के बजाय gPhyAddrs[n] का उपयोग करें; GPU आरंभीकरण विफल होने के बाद maybe_retry स्वचालित रूप से वृद्धि करके पुनः प्रयास करेगा।
CHEESE_SWAPPER_PG_DIR_OFF=<off>swapper_pg_dir स्कैनिंग छोड़ें, सीधे इस निरपेक्ष ऑफ़सेट का उपयोग करें।
CHEESE_READ_FULL_KERNEL=1पूर्ण कर्नेल इमेज पढ़ें (डिफ़ॉल्ट पढ़ने की सीमा DEFAULT_KERNEL_SIZE_MB = 43 MB है)।
CHEESE_KALLSYMS_MAX_MB=<MB>kallsyms पढ़ने की सीमा को ओवरराइड करें।
CHEESE_FORCE_MANUAL_PATCHFINDER=1मैन्युअल patchfinder फ़ॉलबैक का उपयोग करने के लिए बाध्य करें (init_cred, prepare_kernel_cred)।
CHEESE_SKIP_GPU=1GPU पढ़ने/लिखने के चरण को छोड़ें (केवल डिबगिंग के लिए)।
CHEESE_NO_RETRY=1विफलता के बाद सीधे बाहर निकलें, संख्या बदलकर पुनः प्रयास न करें।

vr.ko को अक्षम करना

vivo मॉडलों की विशेष तंत्र के कारण, iQOO Neo8 पर root विशेषाधिकार को स्थिर बनाए रखने के लिए इसे अक्षम करना आवश्यक है (विस्तृत सिद्धांत यहाँ नहीं बताया गया है। अन्य vivo मॉडलों और कर्नेल संस्करणों पर यह सामान्य रूप से लागू नहीं हो सकता है, vr.ko को स्वयं निकालकर रिवर्स इंजीनियरिंग विश्लेषण करना आवश्यक है)। निम्नलिखित कार्यों को निष्पादित करने से पहले सुनिश्चित करें कि वर्तमान shell सत्र को root विशेषाधिकार प्राप्त हैं।

#备份原始apanic

dd if="$(readlink -f /dev/block/by-name/apanic)" of=/sdcard/apanic_full.bin
#adb shell内执行
adb pull /sdcard/apanic_full.bin ./
#主机端执行

#禁用vr.ko(风险自行评估)
printf '\370\037\000\000\000\000\000\000\000\000\000\000' | dd of=$(readlink -f /dev/block/by-name/apanic) bs=1 seek=$(( $(blockdev --getsize64 /dev/block/by-name/apanic) - 65472 )) conv=notrunc && sync

इसके बाद यदि फ़ोन को कोल्ड रीस्टार्ट करने से root अनुमतियाँ अमान्य हो जाती हैं, तो बस exploit को फिर से चलाएँ और फिर jailbreak निष्पादित करें

ReSukiSU jailbreak (root अनुमति दृढ़ीकरण)

$(find /data/app -type f -name "libksud.so" | grep resukisu) late-load --kmi android12-5.10

अन्य डिवाइसों पर पोर्ट करना

डिवाइस-संबंधित स्थिरांक source/cheese.c के शीर्ष पर स्थित हैं:

  • KERNEL_PHYS_BASE — कर्नेल भौतिक आधार पता (डिफ़ॉल्ट 0xA8000000, SM8475)
  • IDMAP_PG_DIR_OFFSET — idmap_pg_dir ऑफ़सेट (डिफ़ॉल्ट 0x245a000)
  • selinux_state_offset — selinux_state का पता लगाने के लिए उपयोग किया जाने वाला ऑफ़सेट (डिफ़ॉल्ट 0x729030, वास्तविक भौतिक पता = idmap_pg_dir भौतिक पता + यह ऑफ़सेट)
  • gPhyAddrs[] — क्रम से प्रयास किए जाने वाले उम्मीदवार भौतिक आधार पते
  • DEFAULT_KERNEL_SIZE_MB — कर्नेल पढ़ने के लिए फ़ॉलबैक मान / ऊपरी सीमा

पूर्वापेक्षाएँ: Adreno A730/A7xx श्रृंखला GPU (प्रभावित फ़र्मवेयर) और डिवाइस सिस्टम पर Qualcomm द्वारा जून 2025 में जारी सुरक्षा पैच स्थापित न हो, भौतिक डंप में kallsyms को पार्स किया जा सकने वाला कर्नेल हो, और भौतिक KASLR न हो।

सामान्य प्रश्न

  • can't get GPU r/w — GPU प्रारंभ विफल; पहले प्रतीक्षा करें, फिर भी न हो तो CHEESE_ATTEMPT=1..n आज़माएँ या मैन्युअल रूप से CHEESE_PHYADDR निर्दिष्ट करें; एकल प्रयास को डीबग करते समय CHEESE_NO_RETRY=1 जोड़ें।
  • kallsyms पार्स विफल — पहले CHEESE_READ_FULL_KERNEL=1 के साथ पूर्ण इमेज पढ़ें (साथ में CHEESE_KALLSYMS_MAX_MB से ऊपरी सीमा बढ़ाएँ), फिर CHEESE_FORCE_MANUAL_PATCHFINDER=1 पर विचार करें।
  • यह टूल कुछ भी फ़्लैश या स्थायी रूप से संग्रहीत नहीं करता: समाप्ति से पहले कर्नेल कोड और पेज टेबल बहाल कर दिए जाते हैं, रीबूट के बाद डिवाइस चलाने से पहले की स्थिति में पूरी तरह समान रहता है।

आभार

  • @zhuowei — CVE-2025-21479 के शोधकर्ता, और इस टूल के आधारभूत ओपन-सोर्स cheese एक्सप्लॉइट के लेखकm/
  • cheese / cheese-cake ओपन-सोर्स वंशावली — SDS/TTBR0 तकनीक, कर्नेल डंप-आधारित kallsyms पार्सिंग
  • hawkes — 2020 का adrenaline.h KGSL हेडर फ़ाइल, जो ioctl इंटरफ़ेस परिभाषाएँ प्रदान करती है
  • कूलैन@renil — iQOO Neo8 पर इस कमज़ोरी के पुनरुत्पादन पर शोध (vk.ko रिवर्स इंजीनियरिंग विश्लेषण)

यह रिपॉज़िटरी zhuowei/cheese पर आधारित संशोधित संस्करण है (मूल रिपॉज़िटरी में कोई लाइसेंस नहीं है) कमज़ोरी का पूर्ण सिद्धांत cheese रिपॉज़िटरी और कमज़ोरी बुलेटिन में देखें।

  • कूलैन@TNTHe — मेरा कूलैन खाता

अस्वीकरण

यह रिपॉज़िटरी केवल शिक्षा और सुरक्षा अनुसंधान के लिए है, कृपया इसका उपयोग केवल उन्हीं डिवाइसों पर करें जो आपके स्वयं के हों या जिनके लिए आपको अधिकृत किया गया हो। लेखक किसी भी दुरुपयोग के लिए उत्तरदायी नहीं है। इस टूल का उपयोग वारंटी रद्द कर सकता है या संबंधित सेवा शर्तों का उल्लंघन कर सकता है।

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