
PoC повышения привилегий для Honor 80 GT: GhostLock (CVE-2026-43499) + загрузка пользовательского модуля KernelSU
English | 中文
Эксплойт локального повышения привилегий для Honor 80 GT (AGT-AN00),
CVE-2026-43499 — use-after-free в пути remove_waiter ядерного rtmutex —
плюс сопутствующее решение для загрузки модулей ядра через KernelSU.
В принципе, эта уязвимость и описанные здесь техники применимы к любой сборке MagicOS вплоть до 9.0.0.230. Адаптированные версии:
| MagicOS | Ядро | Статус |
|---|---|---|
| 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 поставляется с тем же boot-образом, что и SP2) |
| 9.0.0.230 | 5.10.236 | ✅ проверено |
| 8.0.0.131 | 5.10.198 | ⚠️ не проверено на реальном устройстве |
| 8.0.0.135 / 143 / 150 | 5.10.198 | ⚠️ не проверено на реальном устройстве |
| 8.0.0.161 | 5.10.209 | ⚠️ не проверено на реальном устройстве |
| 9.0.0.102 / 103 / 120 / 130 / 165 | 5.10.209 | ⚠️ не проверено на реальном устройстве (103 поставляется с тем же boot-образом, что и 102) |
| 9.0.0.175SP1 / 187 | 5.10.226 | ⚠️ не проверено на реальном устройстве |
| 9.0.0.210 | 5.10.236 | ⚠️ не проверено на реальном устройстве |
⚠️ Предупреждение
- Только для исследований в области безопасности на вашем собственном устройстве.
- ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК. Это программное обеспечение предоставляется БЕЗ каких-либо гарантий (см. 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.
Один готовый пакет охватывает все поддерживаемые прошивки: скачайте его из Releases, распакуйте на хосте и запустите
./setup.sh # PC, with adb: identifies the kernel, picks the
# matching exploit, runs the chain, retries when an
# attempt fails
Без ПК распакуйте пакет на телефоне и запустите тот же скрипт из оболочки Shizuku (rish) — он определит, где находится, и сделает всё остальное локально:
sh /sdcard/ghostlock/setup.sh
Скрипт сопоставляет работающее ядро с прилагаемым манифестом: проверенные прошивки запускаются напрямую, известные, но непроверенные запрашивают подтверждение, всё остальное отклоняется.
Вместо этого соберите из исходного кода:
# 1. Build the 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
# (the static binary bakes in the default env config; any knob can still
# be overridden by environment variables at launch; first run pulls the NDK, ~1.2GB)
# 2. The KSU-side binaries live in ksu/tools/ (see ksu/tools/README.md):
# kernelsu.ko — build per ksu/README.md;
# ksud, magiskpolicy, ksu_rules — 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-доступ, SELinux
permissive, sig_enforce отключён), внедрение политики SELinux через magiskpolicy, поддельный
bind-mount kallsyms, load_ko (init_module), затем этапы подъёма ksud,
с восстановлением SELinux enforcing в качестве самого последнего шага. Когда джейлбрейк
завершается, скрипт открывает для вас менеджер 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 на основе исходников ядра 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-bootid.patch и набор политик ksu_rules.annotated
происходят из каталога kernel/ проекта KernelSU, который распространяется под GPL-2.0.