
# कर्नेल भेद्यता CVE-2026-43499 पर आधारित स्थानीय विशेषाधिकार वृद्धि अनुकूलन, एकीकृत एम्बेडेड KernelSU। CVE-2026-43499+KernelSU जेलब्रेक मोड
कर्नेल भेद्यता CVE-2026-43499 पर आधारित स्थानीय विशेषाधिकार वृद्धि अनुकूलन, जिसमें एम्बेडेड KernelSU एकीकृत है। preload.so संकलित करके उत्पन्न होता है; सफल ट्रिगर होने पर KernelSU late-load मोड (जेलब्रेक मोड) में प्रारंभ होगा। (xbl_config.img / vendor_boot.img) + boot.img से target.h उत्पन्न करने का समर्थन करता है।
संदर्भित परियोजनाएँ:
[!IMPORTANT] The unauthorized exploitation of vulnerabilities to damage, compromise, or gain access to computer systems is prohibited by law. This project is provided strictly for research, educational, and learning purposes, and may only be used in systems and environments for which prior authorization has been granted. Any use of this project is undertaken at the user's own risk. The authors and contributors assume no liability for any misuse of this project or for any damages, losses, or legal consequences resulting from its use.
अस्वीकरण: बिना अधिकार के भेद्यताओं का उपयोग करके कंप्यूटर सिस्टम को नुकसान पहुँचाना, उसमें घुसपैठ करना या अनधिकृत पहुँच प्राप्त करना प्रासंगिक कानूनों और विनियमों का उल्लंघन हो सकता है। यह परियोजना केवल उन सिस्टम और वातावरणों में सुरक्षा अनुसंधान, अध्ययन और परीक्षण उद्देश्यों के लिए सीमित है जिनके लिए वैध प्राधिकरण प्राप्त किया गया है। इस परियोजना के उपयोग, दुरुपयोग या संशोधन से उत्पन्न होने वाले किसी भी प्रत्यक्ष या अप्रत्यक्ष नुकसान, कानूनी दायित्व और अन्य परिणामों के लिए उपयोगकर्ता स्वयं जिम्मेदार होगा, परियोजना लेखक और योगदानकर्ता कोई जिम्मेदारी नहीं लेते हैं।
जब आपका कर्नेल संस्करण {Linux Kernel} है, तो यह इस भेद्यता के प्रभाव क्षेत्र में आता है
Linux Kernel < commit 3bfdc63936dd4773109b7b8c280c0f3b5ae7d349
2.6.39 <= {Linux Kernel} < 6.1.175
6.2 <= {Linux Kernel} < 6.6.140
6.7 <= {Linux Kernel} < 6.12.86
6.13 <= {Linux Kernel} < 6.18.27
6.19 <= {Linux Kernel} < 7.0.4
| Target | स्थिति |
|---|---|
rodin (डिफ़ॉल्ट) | सत्यापित |
अन्य src/targets/* | संदर्भ |
.
├── Makefile
├── build/
│ └── embed/
│ └── ksud # preload.so में एम्बेड किया गया KernelSU userspace बाइनरी
├── tools/
│ ├── generate_target.py # इस रिपॉज़िटरी का एकीकृत target.h जनरेशन प्रवेश बिंदु
│ └── vendor/ # पैरेंट निर्देशिका से सिंक किए गए मूल जनरेशन सहायक स्क्रिप्ट
└── src/
├── main.c # exploit मुख्य प्रवाह
├── preload.c # LD_PRELOAD constructor + ksud लिखना/प्रारंभ करना
├── root.c # cred/seccomp/SELinux/root patch
├── slide.c # pselect KASLR slide leak
├── fops.c # pselect/FOPS route
├── pipe.c # pipe-buffer phys R/W primitive
├── ksud_blob.S # .incbin build/embed/ksud
├── kernelsnitch/ # KernelSnitch सहायक
└── targets/
├── rodin/
├── beryl/
└── ...
~/android-ndk-r29ANDROID_NDK_HOME / ANDROID_NDK_ROOT / NDK_ROOTmakegitmake PROJECT=<target> -j$(nproc)
आउटपुट:
build/<target>/bin/preload.so
make list-projects
इस रिपॉज़िटरी में पहले से ही एकीकृत target जनरेशन स्क्रिप्ट शामिल है:
tools/generate_target.py
tools/vendor/generate_target.py
tools/vendor/generate_target_2.py
tools/vendor/detect_offset.py
tools/generate_target.py प्रवेश स्क्रिप्ट है। यह पैरेंट निर्देशिका की सभी target जनरेशन प्रक्रियाओं को संदर्भित और समाहित करता है, और अंत में इस रिपॉज़िटरी के स्रोत कोड के अनुकूल पूर्ण src/targets/<project>/target.h आउटपुट करता है।
स्क्रिप्ट IKCONFIG में CONFIG_DEBUG_INFO_BTF=y को अनिवार्य रूप से सत्यापित नहीं करती है। यदि संरचना फ़ील्ड ऑफ़सेट या percpu entry_task लेआउट सत्यापित नहीं किया जा सकता है, तो यह चेतावनी प्रिंट करेगी और जनरेशन जारी रखेगी।
यदि इमेज में कोई उपयोगी BTF उपलब्ध नहीं है, जैसे कि दिखाई दे:
有效 vmlinux BTF 候选不唯一: []
जनरेटर बिना BTF fallback में प्रवेश करेगा:
boot.img के kallsyms से फ़ंक्शन/ग्लोबल ऑब्जेक्ट प्रतीक ऑफ़सेट पुनर्प्राप्त करना जारी रखेगा;rodin है;without BTF और उपयोग किए गए टेम्पलेट को दर्शाती है;fallback टेम्पलेट निर्दिष्ट किया जा सकता है:
tools/generate_target.py --project <project> --boot boot.img --profile profile.json --template-target rodin
# या
TARGET_TEMPLATE=rodin tools/generate_target.py --project <project> --boot boot.img --profile profile.json
make generate-target PROJECT=<project> BOOT=/path/to/boot.img PROFILE=/path/to/profile.json
डिफ़ॉल्ट रूप से लिखा जाता है:
src/targets/<project>/target.h
स्क्रिप्ट को सीधे भी कॉल किया जा सकता है:
tools/generate_target.py --project <project> --boot /path/to/boot.img --profile /path/to/profile.json
profile.json में भौतिक पता जानकारी शामिल होनी चाहिए, उदाहरण के लिए:
{
"p0_phys_offset": "0x40000000",
"p0_kernel_phys_load": "0x40000000"
}
केवल profile उत्पन्न करें:
make detect-profile PROFILE_OUT=profile.json
profile का पता लगाएं और तुरंत target उत्पन्न करें:
tools/generate_target.py --project <project> --boot /path/to/boot.img \
--detect-adb-and-generate --profile-out profile.json
स्क्रिप्ट पैरेंट निर्देशिका जनरेटर द्वारा समर्थित अन्य प्रवेश बिंदुओं को भी उजागर करती है:
tools/generate_target.py --project <project> --boot boot.img --xbl-config xbl_config.img
tools/generate_target.py --project <project> --boot boot.img --mtk-vendor-boot vendor_boot.img
tools/generate_target.py --project <project> --boot boot.img --mtk-partitions /path/to/partitions
make generate-target PROJECT=rodin BOOT=../rodin/boot_a PROFILE=../profile.json
make generate-target PROJECT=beryl BOOT=../beryl/boot.img PROFILE=../profile.json
सफल आउटपुट रूप:
生成成功: .../src/targets/<project>/target.h
kernel SHA-256: <sha256>
target macros: 168
rodin डिफ़ॉल्ट रूप से वास्तविक डिवाइस पर सत्यापित निम्नलिखित को बनाए रखेगा:
#define MM_STRUCT_SZ 0x500
ओवरराइड करने के लिए:
tools/generate_target.py --project rodin --boot boot.img --profile profile.json --mm-struct-sz 0x...
मिलान वाली boot image और profile से उत्पन्न करने की अनुशंसा की जाती है:
make generate-target PROJECT=<project> BOOT=/path/to/boot.img PROFILE=/path/to/profile.json
make PROJECT=<project> -j$(nproc)
एक पूर्ण target header में शामिल होगा:
PSELECT_WAITER_WORD_SHIFTMM_STRUCT_SZ और KernelSnitch ट्यूनिंग मानवर्तमान स्रोत कोड में डिफ़ॉल्ट मान लिखे गए हैं, सामान्य चलाने के लिए केवल LD_PRELOAD सेट करना और कोई भी प्रोग्राम निष्पादित करना आवश्यक है (अनुशंसित: toybox id)।
adb push build/rodin/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 755 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
वर्तमान डिफ़ॉल्ट कॉन्फ़िगरेशन इस प्रकार है:
डिफ़ॉल्ट रूप से वास्तव में निष्पादित ksud कमांड व्यवहार:
/data/local/tmp/ksud late-load --allow-shell --package-name me.weishu.kernelsu
इन पर्यावरण चरों को रनटाइम पर ओवरराइड किया जा सकता है, उदाहरण के लिए:
adb shell 'KSUD_PACKAGE=com.example.manager LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
पहले से लिखे गए ksud का पुन: उपयोग करना:
adb shell 'KSUD_SKIP_WRITE=1 LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
make clean
make clean build/embed/ksud को बनाए रखेगा, क्योंकि src/ksud_blob.S इसे निम्नलिखित तरीके से एम्बेड करता है:
.incbin "build/embed/ksud"
यदि मैन्युअल सफाई के कारण build/embed/ksud खो जाता है, तो इसे पुनर्स्थापित किया जा सकता है:
git checkout -- build/embed/ksud
.incbin "build/embed/ksud" not foundअंतर्निहित payload को पुनर्स्थापित करके पुनः निर्माण करें:
git checkout -- build/embed/ksud
make PROJECT=rodin -j$(nproc)
success=0 लौटाता हैrodin legacy/simple pselect layout की अपेक्षा करता है:
pselect fdset simple layout shift=0
pselect returned attempt=1 ret=9 ... success=1
यदि डिवाइस की स्थिति असफल प्रयासों से दूषित हो गई है, तो सीधे पुनः आरंभ करके पुनः प्रयास करें:
adb reboot
F_SETPIPE_SZ EPERM लौटाता हैआमतौर पर असफल/अवशिष्ट प्रयासों के कारण स्थिति समस्या होती है, पुनः आरंभ करना सबसे तेज़ सफाई विधि है:
adb reboot
ksud प्रारंभ होता है लेकिन /proc/modules में KernelSU नहीं हैलॉग देखें:
adb shell 'cat /data/local/tmp/ksud.log /data/local/tmp/ksud.preload.log 2>/dev/null || true'
आवश्यक होने पर root shell में मैन्युअल रूप से चलाएँ:
/data/local/tmp/ksud late-load --allow-shell --package-name me.weishu.kernelsu
GPL-3.0. See LICENSE.
| सेटिंग | डिफ़ॉल्ट मान | विवरण |
|---|
KSUD_LATE_LOAD | 1 | ksud late-load निष्पादित करता है |
KSUD_ALLOW_SHELL | 1 | --allow-shell पास करता है |
KSUD_PACKAGE | me.weishu.kernelsu | ksud को दिया गया प्रबंधक पैकेज नाम (प्रभावी नहीं लगता) |
KSUD_DST | /data/local/tmp/ksud | अंतर्निहित ksud लिखने का पथ |
KSUD_SKIP_WRITE | 0 | डिफ़ॉल्ट रूप से अंतर्निहित ksud लिखता है |
KSUD_DEFER_TO_PARENT | 1 | पहले से patched पैरेंट/वर्तमान प्रक्रिया पथ से ksud प्रारंभ करता है |
ROOT_PATCH_SELF | 1 | वर्तमान प्रक्रिया को uid 0 में patch करता है |
DISABLE_SELINUX | 1 | root patch के समय SELinux enforcing को permissive में लिखता है |
ROOT_EXIT_SLEEP | unset / 0 | लौटने से पहले अतिरिक्त sleep नहीं करता |