
Управляемый Shizuku root-доступ через CVE-2026-98260 и загрузчик LKM времени выполнения KernelSU для Xiaomi yingtian / lhasa (ядро 6.18.21)
Перевод на китайский:
README.zh-CN.md— перевод этого файла; при расхождениях между ними приоритет имеет этот английский файл.
Локальное повышение привилегий + KernelSU для семейства Xiaomi yingtian (Pad 9 Pro
Max) и lhasa (Xiaomi 18 Fold) на HyperOS 4 (Android 17, ядро
6.18.21). Вся цепочка поставляется как обычное Android-приложение, которое управляет
Shizuku в режиме shell, эксплуатирует
CVE-2026-98260 и загружает LKM семейства KernelSU, соответствующий установленному менеджеру
(KernelSU / KernelSU-Next / SukiSU) — без ПК, без разблокированного загрузчика, без
изменения разделов.
Проект для исследований / обучения / ремонта устройств. Только до перезагрузки (перезагрузка удаляет его). Запускайте только на устройствах, которыми владеете. Прочитайте
docs/SECURITY.mdперед использованием.
Агенты / автоматизированные контрибьюторы: начните с AGENTS.md (точка
входа: инварианты, рецепты сборки/тестирования, подводные камни, гигиена), затем
docs/AGENT_HANDOFF.md (проверенное состояние, неудачные
эксперименты, открытые задачи). Запускайте bash scripts/verify.sh перед коммитом; он также
пересобирает payload/APK, когда настроено окружение инструментальной цепочки.
中文版: AGENTS.zh-CN.md /
docs/AGENT_HANDOFF.zh-CN.md
| релиз | v3.2 (release/o3root2-v3.2.apk, 14,239,248 B, sha256 64bbc654…) |
| тестовая сборка O1 | v3.3.3-o1-test (release/test/o3root2-v3.3.3-o1-test.apk, 14,247,440 B, sha256 62411f72…): v3.2 плюс экспериментальный профиль O1 (XRING) (dijun / jinghu / violin) и скрытая root-консоль. Принимает любую сборку OS4.0.0.x на серии ядер 6.18.21-android17…-4k: проанализированная сборка — проверенный путь, другие сборки запускаются в ослабленном режиме с предупреждением; только для тестировщиков, никогда не проверялось на реальном оборудовании |
| предыдущая тестовая сборка | v3.2.1-console (release/beta/o3root2-v3.2.1-console.apk, 14,243,344 B, sha256 9cba365a…): стабильная v3.2 плюс скрытая root-консоль (долгое нажатие на строку версии; три подтверждения) |
| устройства O1 | Xiaomi O1 SoC dijun / jinghu / violin на OS4.0.0.x: все три поставляются с одинаковым ядром 6.18.21 (sha256 0d9917ca…, g1d099fcb35e0); статический анализ говорит, что цепочка применима, тестирования на устройстве пока не было |
| пользовательский LKM | опциональный предоставляемый пользователем .ko семейства KernelSU (базовая проверка совместимости; при неудаче используется встроенный адаптивный модуль; выбор сохраняется и восстанавливается при запуске — долгое нажатие на строку очищает его) |
| цепочка | Shizuku shell → CVE-2026-98260 → uid=0 + полные capabilities → соответствующий LKM KernelSU (KernelSU / KernelSU-Next / SukiSU) → rootd |
| персистентность | отсутствует (только текущая загрузка) |
| протестированное устройство | Xiaomi Pad 9 Pro Max yingtian, HyperOS OS4.0.16.0.XBMCNXM |
| второе устройство | lhasa (Xiaomi 18 Fold, OS4.0.26.0.XPNCNXM): загрузочное ядро побитово идентично ядру yingtian (sha256 cde87cd7…), поэтому тот же payload применим; на устройстве не тестировалось |
/system/bin/sh -c … через newProcess Shizuku, поэтому
полезная нагрузка выполняется в u:r:shell:s0 (uid=2000).CLOCK_THREAD_CPUTIME_ID + execve/de_thread
(CVE-2026-98260), возвращает освобождённую страницу slab-кэша
posix_timers_cache порядка 1 с помощью распылённого буфера kmalloc-8k,
содержащего поддельный узел RB-дерева, и использует второй вызов
timerqueue_del → rb_erase для записи одного 8-байтового значения по
произвольному адресу ядра.enforcing невыровненной 8-байтовой записью по адресу
selinux_state-7 (это также очищает соседние байты pending/tail
notif_lock; initialized/policycap остаются нетронутыми); этап 1 записывает
task_struct.cred в поддельную страницу cred (uid 0, полные capabilities)./proc/kallsyms (запасной вариант: перелинковка
объединения из 248 символов + текущее смещение KASLR), при этом без патча init —
поскольку policycap остался чистым, собственный setenforce(1) KernelSU безвреден,
и устройство остаётся в режиме Enforcing. Затем выполняется insmod, и остаётся
демон rootd (абстрактный сокет @o3p_rootd, peer-uid 0/2000). LKM
Upstream KernelSU, KernelSU-Next и SukiSU работают все (устаревший режим: O3P_CODEPATCH=1 патчит
непосредственный операнд setenforce). Начиная с v3.1 приложение может вместо этого загружать выбранный вами .ko
(базовая проверка совместимости ELF/.modinfo, автоматический откат к встроенному
LKM, если он отклонён или не загружается). Начиная с v3.1.1 этот выбор
сохраняется (files/custom-ko.ko + custom-ko.meta) и восстанавливается при запуске;
устаревший файл, который больше не проходит проверку, удаляется, а долгое нажатие на
строку модуля очищает его. Начиная с v3.2 поле журнала доступно для выделения и имеет
действие 复制, которое копирует весь журнал; оно автоматически прокручивается, только пока вы
уже находитесь рядом с нижней границей. На распознанном устройстве O1 тестовая сборка
запрашивает двухэтапное подтверждение риска перед запуском полезной нагрузки. Тестовая
сборка дополнительно скрывает root-консоль за долгим нажатием на
строку версии: три обязательных подтверждения, после чего команды выполняются от имени root
через сокет rootd (требуется один запуск полезной нагрузки в текущей загрузке).
Стабильная сборка не содержит классов консоли.См. docs/ARCHITECTURE.md для смещений, примитива
записи, патча KernelSU и руководства по портированию.
shizuku_plus_server должен работать как uid=2000, u:r:shell:s0.release/o3root2-v3.2.apk (в MIUI может потребоваться разрешить «Установка через USB»).★ UIDNOW uid=0,
★ KSU_MODULE LIVE, и менеджер KernelSU открывается автоматически.