
Цепочка эксплойтов proof-of-concept для CVE-2026-43499, нацеленная на Android-устройства OPPO MT6835, с предзагружаемой нагрузкой, системой сборки и заметками по анализу для оборонительных исследований.
GhostLock: уязвимость use-after-free в futex PI ядра Linux, CVE-2026-43499. Злоумышленники эксплуатируют циклы зависимостей PI-futex, чтобы вызвать состояние гонки и добиться локального повышения привилегий на ядрах с
CONFIG_FUTEX_PI=y.Цель: OPPO PLS120 (OP5E1C) — Android 17, ядро
5.15.180-android13-8-o-g7b9cfca06464Среда анализа: Ubuntu 24.04 x86_64 + Android NDK r29 (clang 21.0.0, API 35)
Исходный репозиторий: NebuSec/CyberMeowfia — IonStack/CVE-2026-43499
В этом проекте исследуется возможность эксплуатации GhostLock (CVE-2026-43499) для получения root-доступа на устройстве OPPO PLS120 (OP5E1C). После систематической проверки всех известных путей утечки KASLR подтверждено, что комбинация мер безопасности устройства образует непреодолимую цепочку защиты.
| Этап | Статус | Описание |
|---|---|---|
| Этап 1: анализ boot.img и извлечение символов | ✅ Завершено | Извлечение boot.img из OTA-пакета → восстановление таблицы символов с помощью vmlinux-to-elf (159 668 символов) |
| Этап 2: компиляция preload.so | ✅ Завершено | Кросс-компиляция с Android NDK r29, принудительный механизм записи логов на диск в реальном времени |
| Этап 3: диагностика неисправностей и итеративное исправление | 🔄 В процессе | Уже исправлены MM_STRUCT_SZ, поддержка MTE, логика пропуска SLIDE |
Меры безопасности OPPO PLS120 полностью блокируют цепочку эксплойта:
| Мера защиты | Влияние |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | Блокирует коллизии slab в KernelSnitch |
CONFIG_KASAN_HW_TAGS=y (MTE) | Теги адресов повышают сложность bruteforce |
CONFIG_CFI_CLANG=y | Целостность потока управления |
| Политика домена SELinux shell | Блокирует perf_event_open + /proc/kallsyms |
CONFIG_CHECKPOINT_RESTORE=n | Блокирует путь PR_SET_MM_MAP |
| Бэкпорт исправления wchan | Блокирует утечку VA ядра через /proc/<pid>/stat |
| Способ | Статус | Причина |
|---|---|---|
| perf_event_open callchain | ❌ | EACCES (блокировка домена SELinux shell) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (поле 35 /proc/<pid>/stat) | ❌ | В ядре применено исправление v5.16 (возвращает 1 вместо VA ядра) |
| Побочный канал SLIDE (перезапись boot_id) | ❌ | Модуль nfulnl невозможно загрузить |
| Восстановление стека PR_SET_MM_MAP | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (тайминг хеша futex) | ⚠️ Эпизодический успех | Шум синхронизации big.LITTLE влияет на стабильность |
SLIDE_MAX_ATTEMPTS=1!route_signal, разрешено 24 повторные попыткиВ этом проекте исследуется возможность эксплуатации GhostLock (CVE-2026-43499) для повышения привилегий до root на устройстве OPPO PLS120 (OP5E1C). После систематической проверки всех известных путей утечки KASLR конфигурация мер безопасности устройства образует непреодолимую цепочку защиты от этого эксплойта.
| Этап | Статус | Описание |
|---|---|---|
| Этап 1: анализ boot.img | ✅ Завершён | Извлечён boot.img из OTA → реконструкция символов vmlinux-to-elf (159 668 символов) |
| Этап 2: сборка preload.so | ✅ Завершён | Кросс-компиляция с Android NDK r29, принудительное ведение журнала на диск в реальном времени |
| Этап 3: диагностика и итерации | 🔄 В процессе | Исправлены MM_STRUCT_SZ, поддержка MTE, логика обхода SLIDE |
OPPO PLS120 блокирует цепочку эксплойта на нескольких уровнях:
| Функция усиления защиты | Влияние |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | Блокирует коллизии slab в KernelSnitch |
CONFIG_KASAN_HW_TAGS=y (MTE) | Теги адресов повышают сложность брутфорса |
CONFIG_CFI_CLANG=y | Control Flow Integrity |
| Политика домена shell SELinux | Блокирует perf_event_open + /proc/kallsyms |
CONFIG_CHECKPOINT_RESTORE=n | Блокирует путь PR_SET_MM_MAP |
| Бэкпорт исправления wchan | Блокирует утечку kernel VA через /proc/<pid>/stat |
| Метод | Статус | Причина |
|---|---|---|
| Цепочка вызовов perf_event_open | ❌ | EACCES (домен shell SELinux) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (поле 35 в /proc/<pid>/stat) | ❌ | Ядро содержит бэкпорт исправления из v5.16 (возвращает 1 вместо kernel VA) |
| Побочный канал SLIDE (перезапись boot_id) | ❌ | Модуль nfulnl не загружается |
| Возврат стека PR_SET_MM_MAP | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (тайминг хеша futex) | ⚠️ Периодически | Шум таймингов big.LITTLE влияет на стабильность |
SLIDE_MAX_ATTEMPTS=1!route_signal, разрешено 24 повтора/home/ubuntu/CyberMeowfia/
├── devices/ # Target device artifacts (OTA zip, config.gz, etc.)
├── work_bootimg/ # boot.img analysis output
│ └── oppo/ # OPPO-specific kernel data
│ ├── kernel.dec # Decompressed ARM64 Image (47MB)
│ ├── vmlinux_extracted.elf # Reconstructed vmlinux with symbols (159,668)
│ ├── kallsyms_oppo.txt # Full symbol table
│ └── kernel_config_oppo # Kernel .config (189KB)
├── IonStack/CVE-2026-43499/exploit/ # Exploit source code
│ ├── src/ # Source files (slide.c, fops.c, main.c, etc.)
│ │ ├── kernelsnitch/ # KernelSnitch futex hash timing module
│ │ └── targets/
│ │ └── oppo-pls120-BP2A.250605.015/ # OPPO-specific target configuration
│ └── build/ # Compiled binaries
├── unpack_bootimg.py # Python boot.img unpacker (v3/v4)
├── report.md # Phase 1 analysis report (Chinese)
├── GhostLock_CVE202643499_OPPO_PLS120_研究报告.md # Full research report (Chinese, 620 lines)
└── CVE202643499.txt # Research plan document
| Файл | Описание |
|---|---|
report.md | Анализ фазы 1: распаковка boot.img, извлечение vmlinux, проверка смещений |
GhostLock_CVE202643499_OPPO_PLS120_研究报告.md | Полный отчёт об исследовании: весь процесс, все итерации, анализ неудач, выводы (620 строк) |
Расположена в IonStack/CVE-2026-43499/exploit/src/targets/oppo-pls120-BP2A.250605.015/target.h: