
Honor 80 GT (MagicOS 8.0.0.128, ядро 5.10.168): PoC повышения привилегий — GhostLock (CVE-2026-43499) + загрузка пользовательских модулей KernelSU
Английский | 中文
Эксплойт локального повышения привилегий для Honor 80 GT (AGT-AN00), CVE-2026-43499 — use-after-free в пути remove_waiter ядерного rtmutex — а также сопутствующее решение для загрузки модуля ядра KernelSU.
В принципе, данная уязвимость и описанные здесь методы применимы ко всем сборкам MagicOS вплоть до 9.0.0.220. Адаптированные версии:
| MagicOS | Kernel | Статус |
|---|---|---|
| 8.0.0.128 | 5.10.168 | проверено |
| 8.0.0.160 | 5.10.209 | проверено |
| 9.0.0.157 | 5.10.209 | проверено |
| 9.0.0.200SP1 | 5.10.236 | проверено |
| 9.0.0.220SP2 / SP4 | 5.10.236 | проверено на устройстве (SP4 поставляется с тем же загрузочным образом, что и SP2) |
Ожидается, что другие версии линейки 9.0 будут работать после перегенерации таблицы смещений (src/targets/) и повторной проверки слота kstack carrier.
⚠️ Предупреждение
- Только для исследований безопасности на вашем собственном устройстве.
- ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК. Это ПО не предоставляет НИКАКИХ гарантий (см. LICENSE). Теоретически простой запуск не должен превратить устройство в «кирпич» или привести к потере данных, но сначала всё равно сделайте резервную копию; что бы ни случилось — из-за запуска этого кода или из-за любых действий с полученным root-доступом — ответственность лежит на вас, а не на авторах.
- Эксплойт изменяет память ядра через UAF. Безуспешная попытка перезагружает устройство; перезагрузка всё восстанавливает. Успех не гарантирован на 100% с одного запуска — просто запустите ещё раз.
- Root — это полный контроль над устройством — используйте его осторожно. Этот проект только даёт вам root; последующая прошивка образов, запись разделов, отключение защит или установка непротестированных модулей могут навсегда превратить устройство в «кирпич», и это на вашей ответственности.
exploit/ GhostLock PoC source (Android arm64) + build system
src/ exploit core: futex UAF, KASLR slide, sysctl boot_id hijack,
arbitrary R/W, cred/SELinux/sig_enforce writes, KSU load
src/targets/ per-firmware offset tables (target.h)
ksu/ custom kernelsu.ko build (MagicOS kernel + device config) and the
PC-side adb load driver
tools/ on-device load helpers: load_ko.c / kmsg_dumper.c (built from
source), policy rules, loader template (+ where to get the
binaries)
Требования: Docker, Android Platform Tools.
Готовые сборки под каждую прошивку: выберите ту, что соответствует вашей версии MagicOS, из Releases, распакуйте её на хосте и выполните:
./setup.sh # PC, with adb: checks the kernel version, pushes
# everything, runs the chain, retries on the
# occasional miss
Нет ПК под рукой? Распакуйте комплект на телефоне и запустите тот же скрипт из оболочки Shizuku (rish) — он сам определит, где находится, и сделает всё остальное локально:
sh /sdcard/ghostlock-<version>/setup.sh
Или соберите из исходников:
# 1. Build the device exploit binary
cd exploit && ./docker-build.sh bin # exploit_static (8.0.0.128)
# 8.0.0.160: ./docker-build.sh PROJECT=annap-AGT-AN00_8.0.0.160 bin
# (./docker-build.sh ondevice builds the static binary with the default
# env config baked in; first run pulls the NDK, ~1.2GB)
# 2. Obtain/build the KSU bundle binaries into ksu/tools/ —
# see ksu/tools/README.md (kernelsu_h80gt.ko: ksu/README.md — build it
# against the opensource tree matching your firmware's kernel sublevel;
# ksud: shipped in the repo; magiskpolicy: shipped in the repo; load_ko/kmsg_dumper:
# ./docker-build.sh tools)
# 3. Enable ADB debugging on the phone, then
bash ../ksu/ksu_load_ko.sh
# 8.0.0.160: PROJECT=annap-AGT-AN00_8.0.0.160 bash ../ksu/ksu_load_ko.sh
Скрипт выполняет всю цепочку через adb: GhostLock (root + permissive + переключение sig_enforce), внедрение политики SELinux через magiskpolicy, bind-mount поддельного kallsyms, load_ko (init_module), затем этапы запуска ksud, причём восстановление enforcing-режима SELinux выполняется самым последним шагом. Дождитесь появления kernelsu в /proc/modules, затем откройте менеджер KernelSU (отображается «Working <LKM> [Jailbreak mode]»).
CONFIG_MODULE_SIG_FORCE=y — флаг времени выполнения sig_enforce блокирует загрузку неподписанных модулей; эксплойт временно переключает его в 0 (скрипт загрузчика возвращает его в 1 после того, как модуль загружен).commit_creds и другие подобные символы из /proc/kallsyms, поэтому загрузчик ядра не может разрешить неопределённые символы .ko. Процесс выполняет bind-mount поддельного kallsyms, в котором удалённые символы добавлены в начало по их реальным адресам времени выполнения (адрес компоновки + сдвиг KASLR).android12-5.10_kernelsu.ko нельзя использовать напрямую. В ksu/ пересобирается KernelSU v3.2.5 из исходников ядра MagicOS, соответствующих субуровню прошивки и конфигурации ядра устройства. См. ksu/README.md.Полная цепочка (UAF → KASLR → произвольное чтение/запись → cred → SELinux permissive → sig_enforce → KernelSU в работе, enforcing восстановлен, boot_id восстановлен) проверена на реальном устройстве для каждой версии из таблицы выше. Запуск может промахнуться на раннем этапе и перезагрузить телефон (примерно в одном случае из четырёх); скрипт настройки автоматически повторяет попытку — или просто запустите его снова.
exploit/, документация верхнего уровня) распространяются под лицензией Apache License 2.0 (см. LICENSE), как и вышестоящий PoC IonStack, от которого произошёл этот порт.ksu/ распространяются под лицензией GPL-2.0 (см. ksu/LICENSE): init-h80gt.patch и набор политик ksu_rules.annotated происходят из каталога KernelSU kernel/, который распространяется под GPL-2.0.