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

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

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

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

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

Категории

Все категории
Loading categories
GhostLock-for-OnePlus15T — (CVE-2026-43499)内核漏洞利用程序,适用于未解锁 Bootloader 的一加15T. | Kitploit
Инструменты/GitHubGitHub/cuteaplane/ghostlock-for-oneplus15t
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationMobile SecurityPayload DevelopmentBinary Exploitation
GitHubcuteaplane/ghostlock-for-oneplus15t

Популярное

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

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

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

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

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

GhostLock-for-OnePlus15T

(CVE-2026-43499)内核漏洞利用程序,适用于未解锁 Bootloader 的一加15T.

Репозиторий
12127 дней назадЕщё не проверено

GhostLock — OnePlus 15T

中文

Эксплойт ядра для устройств OnePlus 15T с заблокированным загрузчиком. Использует CVE-2026-43499 для получения рут-доступа без разблокировки загрузчика или модификации boot.img.

Только для авторизованных исследований безопасности и образовательных целей.

Модифицировано из оригинального репозитория GhostLock-for-OnePlus, адаптировано для OnePlus 15T (PLZ110 / SM8850 / Snapdragon 8 Elite) с учётом физической памяти и таймингов CPU.


Содержание

  • Обзор уязвимости
  • Поддерживаемые устройства
  • Предварительные требования
  • Сборка
  • Использование
  • Режимы запуска
  • Технические детали
  • Структура файлов
  • Добавление новых устройств
  • Часто задаваемые вопросы

Обзор уязвимости

Основная причина

Системный вызов pselect6 копирует fd_set в стек ядра. При совместном использовании с механизмом ожидания futex PI освобождённый стековый фрейм может быть переиспользован как структура rt_mutex_waiter. При обходе цепочки PI перебалансировка rb-дерева записывает контролируемые данные в произвольные адреса ядра.

Цепочка

root@kitploit:~
futex PI UAF (CVE-2026-43499)
  ├─ Подделка объекта rt_mutex_waiter
  ├─ Управление стеком ядра через разметку fd_set в pselect/select
  ├─ Запуск операции rt_mutex PI для произвольной записи
  ├─ Запись 1: selinux_state.enforcing = 0
  └─ Запись 2: cred → init_cred (uid=0, полные возможности)

Поддерживаемые устройства

УстройствоКодовое имяSoCЯдроПрошивкаСтатус
OnePlus 15TPLZ110SM8850 (Snapdragon 8 Elite)6.12.38-android16-5-g844001fb8721-ab14552068-4kColorOS 16.0.9.400✅ Подтверждено

Для Ace 6T и OnePlus 15 смотрите оригинальный репозиторий.


Предварительные требования

ksud (требуется для KernelSU)

GhostLock обрабатывает повышение привилегий. Установка KernelSU требует ksud (входит в состав KMI-специфичного kernelsu.ko):

ИсточникПримечания
ReSukiSU APK (рекомендуется)Установите ReSukiSU; APK включает

Без ksud эксплойт всё равно получит оболочку root с uid=0, но KernelSU не будет установлен, и su не сохранится.


Сборка

Предварительные требования

  • Android NDK (r25+)
  • Установите ANDROID_NDK_HOME или ANDROID_NDK_ROOT

Сборка

root@kitploit:~
# По умолчанию (API 35)
make

# Указать уровень API
make API=34

# Указать путь к NDK
NDK=/path/to/android-ndk make

Артефакт

ghostlock — статически слинкованный ARM64 ELF-исполняемый файл.


Использование

Одноразовая настройка

root@kitploit:~
# 1. Включить ADB в TCP-режиме
adb tcpip 5555

# 2. Отправить ADB-ключ (требуется для режима bootstrap)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Отправить эксплойт
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

После первого успешного запуска resetprop автоматически установит persist.adb.tcp.port=5555, что позволит полностью автоматические запуски при последующих перезагрузках.


Режимы запуска

Полный эксплойт (контекст ADB shell)

root@kitploit:~
/data/local/tmp/a/e
  • доступен perf, точное обнаружение дочернего task_struct
  • Двухэтапный: W1 отключение SELinux → W2 повышение привилегий → загрузка KernelSU

Режим Bootstrap (контекст приложения, seccomp ограничен)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. Запись 1 → отключение SELinux
  2. Использование освобождённых прав для setprop включения ADB TCP 5555
  3. Встроенный мини-ADB клиент подключается к 127.0.0.1:5555
  4. RSA-аутентификация с предварительно отправленным ключом
  5. Полное выполнение эксплойта через ADB shell (без seccomp)

Только запись 1

root@kitploit:~
/data/local/tmp/a/e --write1
  • До 20 попыток
  • Полезно для отладки или временного отключения SELinux

Технические детали

1. Сопоставление ядра во время выполнения

Смещения хранятся в таблице поиска src/devices/offsets.h, ключ — uname -r. Программа автоматически сопоставляет при запуске; неизвестные ядра отклоняются.

root@kitploit:~
static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* sentinel */
};

Источники смещений

Структуры, проверенные через BTF

2. Обход KASLR

Режим SLIDE — утечка boot_id

Когда указатели ядра ограничены (kptr_restrict), утечка базового адреса через boot_id, перезаписанного адресом ядра:

root@kitploit:~
Чтение /proc/sys/kernel/random/boot_id
  └─ UUID содержит адрес nfulnl_logger
      └─ Сдвиг KASLR = утёкший адрес - смещение образа
          └─ kaslr_base

Режим FOPS/CFI — утечка таблицы fops

Если устройство ashmem доступно, используйте примитивы чтения/записи configfs для чтения указателей функций из таблицы fops ashmem и вычисления смещения KASLR.

3. Распыление кучи ядра

Подделка объектов ядра на страницах order-3 (32 КБ):

  • Поддельный file_operations — перехват указателя fops miscdevice ashmem
  • Поддельный rt_mutex_waiter — имитация узла ожидания в цепочке PI
  • Поддельный task_struct — ссылка на задачу при обходе PI
  • Поддельный rt_mutex (блокировка) — корректная информация о waiter/owner

Реализовано через SKB (сокетный буфер) + KernelSnitch:

  • KernelSnitch — коллизия хеша futex для утечки адресов mm_struct
  • Распыление SKB — sendmsg для заполнения кучи ядра

4. Физическое чтение/запись через канал (Pipe)

После получения базы KASLR используйте буферы канала для доступа к памяти на физическом уровне:

root@kitploit:~
1. Найти буфер канала в physmap
2. Подделать таблицу операций pipe_buffer, указывающую на известные pipe_buf_ops
3. Перехватить pipe_buffer.page для указания на целевой физический адрес
4. Произвольное физическое чтение/запись через обычные операции с каналом

Поддерживается: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Двухэтапная запись

Запись 1 — отключение SELinux

root@kitploit:~
Цель: selinux_state.enforcing (смещение 0x00)
Метод: запись PI дочернего узла → подделка __rb_parent_color waiter,
       указывающего на selinux_enforcing - 8
       перебалансировка rb-дерева записывает 0x00

Запись 2 — повышение до root

root@kitploit:~
Цель: указатель cred дочернего процесса
Метод: 1. fork дочернего процесса → perf_find_task() найти task_struct
       2. вычислить смещение поля cred
       3. запись PI дочернего узла → cred = init_cred (uid=0, полные возможности)
       4. очистить seccomp (TIF_SECCOMP + обнуление структуры seccomp)

После перезаписи cred выполняется проверка возможностей чтением.

6. Встроенный мини-ADB клиент

src/core/miniadb.c — лёгкий клиент протокола ADB для режима bootstrap:

root@kitploit:~
1. TCP подключение к 127.0.0.1:5555
2. A_CNXN → запрос соединения
3. A_AUTH → вызов с RSA токеном
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → подписанный ответ
6. A_CNXN → соединение установлено
7. A_OPEN "shell:/data/local/tmp/a/e" → полный эксплойт

Поддерживаются алгоритмы подписи SHA-1 и SHA-256.


Структура файлов

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Конфигурация сборки (кросс-компиляция NDK)
├── README.md                       # Документация
├── src/
│   ├── core/                       # Основной код эксплойта
│   │   ├── main.c                  # Точка входа: двухэтапная запись + root shell
│   │   ├── fops.c                  # Режим FOPS/CFI: маршрут pselect, запись PI, утечка KASLR
│   │   ├── util.c                  # Утилиты: распыление кучи, KASLR, примитивы R/W ядра
│   │   ├── slide.c                 # Режим SLIDE: утечка KASLR через boot_id + маршрут pselect
│   │   ├── pipe.c                  # Физическое R/W через буфер канала (physrw)
│   │   ├── root.c                  # Перезапись cred, очистка seccomp, управление дочерним root
│   │   ├── miniadb.c              # Встроенный ADB клиент (TCP + RSA аутентификация)
│   │   ├── common.h               # Глобальные макросы, структуры, объявления, константы
│   │   ├── target.h               # Расположение памяти / смещения структур / параметры KASLR
│   │   ├── offset.h               # Мост конфигурации цели времени компиляции (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — утечка адреса mm_struct
│   │       ├── kernelsnitch.h     # Основной алгоритм: коллизия хеша futex + перебор
│   │       ├── futex_hash.h       # Функция хеша futex
│   │       ├── timeutils.h        # Измерение времени CPU (RDTSC)
│   │       └── utils.h            # Вспомогательные макросы (pr_info / SYSCHK / ASSERT и т.д.)
│   └── devices/                   # Таблицы смещений для устройств
│       ├── offsets.h              # Агрегирует все смещения устройств (таблица поиска + sentinel)
│       ├── ace6t/offsets.h        # Смещения OnePlus Ace 6T (2 версии ядра)
│       └── op15/offsets.h         # Смещения OnePlus 15 (1 версия ядра)
└── tools/                         # Инструменты извлечения смещений
    ├── extract_target.py          # Извлечение смещений глобальных символов kallsyms (28 элементов)
    └── extract_btf.py             # Извлечение смещений полей структур BTF (57 элементов)

Обзор основных модулей


Добавление новых устройств

Этот репозиторий был модифицирован; детали смотрите в оригинальном репозитории.


Часто задаваемые вопросы

В: Нет вывода при запуске?

Убедитесь, что вы запускаете в ADB shell. Контекст приложения требует --bootstrap.

В: "no offsets for this kernel"?

Ваша версия ядра пока не поддерживается. Следуйте инструкциям Добавление новых устройств для извлечения смещений и пересборки.

В: Запись 1 постоянно не удаётся?

  • Убедитесь, что процесс привязан к правильному ядру CPU (макрос CORE)
  • Настройте тайминг PSELECT_ENTER_DELAY_USEC
  • Проверьте наличие мешающих процессов

В: perf в записи 2 возвращает 0?

  • Проверьте, не блокирует ли seccomp perf_event_open (используйте --bootstrap в контексте приложения)
  • Проверьте, успешно ли прошёл обход KASLR (kaslr_base валиден)

В: KernelSU не загружается?

  • Убедитесь, что ksud существует и исполняем
  • Проверьте целостность файла сетевой политики (исправление load_policy)

Лицензия

Только для авторизованных исследований безопасности и образовательных целей.

Скачать инструмент
ПунктДетали
CVECVE-2026-43499
ТипUse-After-Free в Futex PI (Priority Inheritance)
Область действияЯдро Linux 2.6.39 ~ 7.1
Исправлено вMainline 7.1 (коммит 3bfdc63936dd)
Статус AndroidGKI 6.12.x всё ещё уязвим
libksud.so
CI РелизСкачайте из ReSukiSU CI (ksud-aarch64-linux-android.zip)
ТипКоличествоИзвлечение
Глобальные символы kallsyms28tools/extract_target.py
Поля структур BTF57tools/extract_btf.py
Производные значения9Автоматически вычислены
Фиксированные константы12Жёстко заданы
СтруктураПоляНазначение
task_struct17Дескриптор процесса, cred, seccomp
rt_mutex_waiter6Цель подделки UAF
cred4Учётные данные, возможности
seccomp3Состояние фильтра seccomp
pipe_inode_info11Операции с буфером канала
file_operations13Таблица поддельных fops
mm_struct1Владелец дескриптора памяти
МодульФайл(ы)Ответственность
Входmain.cРазбор CLI, диспетчеризация W1/W2, поток bootstrap
Маршрут PIfops.c / slide.cРазметка стека pselect/select, манипуляции цепочкой futex PI
KASLRutil.c / fops.c / slide.cОбход в двух режимах: утечка boot_id + утечка таблицы fops
Распыление кучиutil.cВыделение страниц order-3, распыление SKB, компоновка поддельных объектов
Физическое R/Wpipe.cПерехват буфера канала, произвольный доступ к физической памяти
Повышение привилегийroot.cПерезапись cred, проверка возможностей, очистка seccomp
ADBminiadb.cЛёгкий клиент протокола ADB, RSA аутентификация
Движок утечкиkernelsnitch/Коллизия хеша futex для определения местоположения mm_struct