
CVE-2026-43499-root-KernelSU — Updated!
На основе локального повышения привилегий через уязвимость ядра CVE-2026-43499, интегрирован встроенный KernelSU. Режим джейлбрейка CVE-2026-43499+KernelSU
CVE-2026-43499-root-KernelSU
Адаптация локального повышения привилегий на основе уязвимости ядра CVE-2026-43499 со встроенным KernelSU. Компилируется и генерирует preload.so; при успешной эксплуатации KernelSU запускается в режиме late-load (режим джейлбрейка). Поддерживает генерацию target.h из (xbl_config.img / vendor_boot.img) + boot.img или другим способом.
Справочные проекты:
- Linuxoid-cn/CVE-2026-43499-Poc-Analysis
- x-spy/CVE-2026-43499-popsicle
- Colorful-glassblock/duchamp-root
[!IMPORTANT] Несанкционированная эксплуатация уязвимостей для повреждения, компрометации или получения доступа к компьютерным системам запрещена законом. Этот проект предоставляется строго для исследовательских, образовательных и учебных целей и может использоваться только в системах и средах, на которые получено предварительное разрешение. Любое использование этого проекта осуществляется на свой страх и риск пользователя. Авторы и участники не несут ответственности за любое неправомерное использование этого проекта или за любой ущерб, потери или юридические последствия, возникшие в результате его использования.
Отказ от ответственности: несанкционированное использование уязвимостей для повреждения, вторжения или несанкционированного доступа к компьютерным системам может нарушать действующее законодательство. Этот проект предназначен исключительно для исследований в области безопасности, обучения и тестирования в системах и средах, на которые получено законное разрешение. Любые прямые или косвенные убытки, юридическая ответственность и другие последствия, возникшие в результате использования, неправомерного использования или модификации этого проекта, полностью ложатся на пользователя; авторы и участники проекта не несут никакой ответственности.
Область воздействия
Если ваша версия ядра {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 бинарник userspace KernelSU
├── tools/
│ ├── generate_target.py # Единая точка входа генерации target.h в этом репозитории
│ └── vendor/ # Исходные вспомогательные скрипты генерации, синхронизированные из родительского каталога
└── src/
├── main.c # Основной поток эксплойта
├── preload.c # LD_PRELOAD constructor + запись/запуск ksud
├── root.c # Патч cred/seccomp/SELinux/root
├── slide.c # Утечка KASLR slide через pselect
├── fops.c # Маршрут pselect/FOPS
├── pipe.c # Примитив физического R/W через pipe-buffer
├── ksud_blob.S # .incbin build/embed/ksud
├── kernelsnitch/ # Вспомогательные модули KernelSnitch
└── targets/
├── rodin/
├── beryl/
└── ...
Сборка
Зависимости
- Linux host
- Android NDK
- Путь по умолчанию:
~/android-ndk-r29 - Или задайте:
ANDROID_NDK_HOME/ANDROID_NDK_ROOT/NDK_ROOT
- Путь по умолчанию:
makegit
Сборка
make PROJECT=<target> -j$(nproc)
Результат:
build/<target>/bin/preload.so
Просмотр доступных target
make list-projects
Генерация target.h
В этом репозитории уже встроен единый скрипт генерации 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, адаптированный под исходный код этого репозитория.
Скрипт не принудительно проверяет CONFIG_DEBUG_INFO_BTF=y в IKCONFIG. Если смещения полей структур или раскладка percpu entry_task не могут быть проверены, выводится предупреждение, и генерация продолжается.
Если в образе полностью отсутствует пригодный BTF, например, появляется:
有效 vmlinux BTF 候选不唯一: []
Генератор переходит в режим fallback без BTF:
- Продолжает восстанавливать смещения символов функций/глобальных объектов из kallsyms текущего
boot.img; - Макросы полей структур/раскладки, которые невозможно восстановить из BTF, наследуются из шаблонного target, шаблон по умолчанию —
rodin; - В верхней части сгенерированного header записывается предупреждение с указанием
without BTFи используемого шаблона; - Такой header гарантирует максимально возможную компилируемость, но надёжность работы требует проверки на реальном устройстве.
Можно указать шаблон 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
1. Генерация с помощью boot.img + 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"
}
2. Определение profile с уже root-устройства через ADB
Только генерация 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
3. Генерация из (xbl_config.img / vendor_boot.img) + boot.img
Скрипт также предоставляет другие точки входа, поддерживаемые генератором из родительского каталога:
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...
Добавление нового target
Рекомендуется генерировать из соответствующего 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 будет содержать:
- Константы direct map / физического profile
- Смещения объектов KASLR slide
- Смещения task / cred / SELinux
- Смещения pipe / fops / configfs
- Значения раскладки pselect, например,
PSELECT_WAITER_WORD_SHIFT MM_STRUCT_SZи значения настройки KernelSnitch