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

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

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

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

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

Категории

Все категории
Loading categories
cve-2026-43499 — Исследование осуществимости 43499 (ghostlock) для PD2229B | Kitploit
Инструменты/GitHubGitHub/catxiaoshi/cve-2026-43499
Безопасность AndroidПовышение привилегийАнализ уязвимостейЭксплуатацияОбратная инженерияМобильная безопасностьЭксплуатация Бинарных Файлов
GitHubcatxiaoshi/cve-2026-43499

cve-2026-43499

Исследование осуществимости 43499 (ghostlock) для PD2229B

Репозиторий
251 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

GhostLock: Итоги неудачной эксплуатации на PD2229 (SM8475, 5.10.233 GKI)

1. Сведения об уязвимости и устройстве

1.1 Базовая информация о CVE-2026-43499 (GhostLock)

ПараметрЗначение
Тип уязвимостиUse-After-Free на стеке в пути rt_mutex / futex PI
Версия внедренияLinux 2.6.39-rc1 (май 2011, commit 8161239a8bcc)
Версия исправленияОсновная ветка 7.1 (commit 3bfdc63936dd), стабильные ветки: 6.1.175 / 6.6.140 / 6.12.86 / 6.18.27 / 7.0.4
ПредусловияCONFIG_FUTEX_PI=y (включено по умолчанию в основных ядрах)
CVSS7.8 High
Стабильность эксплуатацииОригинальная цепочка NebuSec — 97%, получение root за ~5 секунд
Награда kernelCTF$92,337 USD

Затронутый диапазон ядер:

  • 2.6.39 ≤ Linux < 6.1.175 ✅ Затронуто
  • 6.2 ≤ Linux < 6.6.140 ✅ Затронуто
  • 6.7 ≤ Linux < 6.12.86 ✅ Затронуто
  • 6.13 ≤ Linux < 6.18.27 ✅ Затронуто
  • 6.19 ≤ Linux < 7.0.4 ✅ Затронуто
  • Android GKI 5.10 отсутствует во всех ветках исправления → 5.10.233 на PD2229 теоретически затронут

1.2 Фактические данные устройства PD2229

ПараметрЗначение
SoCQualcomm SM8475 (Snapdragon 8 Gen 1 Plus)
Версия ядра5.10.233-gki-g6e61de9f5b58 #1 SMP PREEMPT (24 ноября 2025)
Версия Android15 (OriginOS 5)
Время сборки25.11.2025
Патчи Android01.11.2025
CONFIG_FUTEX_PIy ✅
CONFIG_UNMAP_KERNEL_AT_EL0y (KPTI включен)
kptr_restrictenforced
CONFIG_IO_URINGy ✅ (подтверждено символами vmlinux, seccomp не блокирует io_uring_setup)

2. Идеальная цепочка эксплуатации vs фактический прогресс на PD2229

2.1 Оригинальная цепочка NebuSec (x86_64 / Pixel 10 — успех)

1. Обход KASLR        → prefetch timing / PR_SET_MM_MAP auxv
2. Триггер UAF        → взаимоблокировка трёх потоков PI → FUTEX_CMP_REQUEUE_PI возвращает -EDEADLK
3. Перехват стека     → PR_SET_MM_MAP копирует auxv в стековый фрейм waiter
4. Ограниченная запись rb_erase → перезапись inet6_protos[IPPROTO_UDP]
5. CEA + ROP          → перехват потока управления
6. Переключение core_pattern → root shell (97% успеха)

2.2 Фактический прогресс по этапам на PD2229

ЭтапСтатусОписание
1. Обход KASLR✅ РеализованоПобочный канал perf_event_open + выборка callchain (метод аналогичен адаптации для OPPO Find X6 Pro 5.15.149)
2. Триггер UAF✅ РеализованоВзаимоблокировка трёх потоков PI успешна, FUTEX_CMP_REQUEUE_PI возвращает -EDEADLK
3. Примитив перехвата стека❌ Архитектурный провалСтековые фреймы всех известных syscall не перекрываются с waiter (см. раздел 3)
4. Ограниченная запись rb_erase❌ ЗаблокированоПредусловия не выполнены
5. Перезапись inet6_protos❌ Не начатоЗависит от этапа 4
6. ROP / перехват потока управления❌ Не начатоЗависит от этапа 5
7. root shell❌ Не начатоЗависит от этапа 6

3. Результаты исчерпывающего поиска примитива перехвата стека (фактические данные PD2229)

3.1 Ключевые вычисления раскладки стековых фреймов

Общая глубина пути futex:
  __arm64_sys_futex    0x90
  + do_futex           0xc0
  + futex_wait_requeue_pi  0x1b0
  = 0x300
Позиция waiter = SYS_SP - 0x300 + 0x20 = SYS_SP - 0x2e0

Путь pselect:
  Стековый фрейм core_sys_select 0x1c0, stack_fds на sp+0x50
  Область покрытия: начиная с SYS_SP - 0x1c0 + 0x50 = SYS_SP - 0x170
  Расстояние до waiter (SYS_SP - 0x2e0) = 0x170 (368 байт) → перекрытия нет

3.2 Испробованные 17 методов записи в стек

#МетодСистемный вызовРезультат на PD2229Основная причина неудачи
1stamp_prctlPR_SET_MM_MAP❌ EPERMЖёсткая блокировка Android
2stamp_pselectpselect6 (NFDS=320)❌ Нет перекрытияwaiter на 120 Б ниже fd_set
3stamp_pselectpselect6 (NFDS>336)❌ Выделение в кучеПуть kvmalloc
4stamp_socketMCAST_JOIN_SOURCE_GROUP❌ Недостаточное покрытиеЗаписывается только поле lock
5stamp_sendmsgsendmsg❌ 80 Б до waiterГлубина фрейма 0x90 недостаточна
6stamp_sendmmsgsendmmsg❌ 112 Б до waiterФрейм недостаточен
7stamp_recvmmsgrecvmmsg❌ Обнуляет task/lockФрейм 0x1d0 повреждает критические указатели
8stamp_process_vmprocess_vm_writev❌ Нет перекрытияСтек дочернего потока выделяется отдельно
9stamp_keyctlKEYCTL_INSTANTIATE_IOV❌ EOPNOTSUPPСистемный вызов не поддерживается + фрейм 0x40
10stamp_tcpTCP_ZEROCOPY_RECEIVE❌ Фрейм недостаточенПредполагаемая глубина мала
11stamp_futexРекурсия FUTEX_CMP_REQUEUE_PI❌ Логически невозможноРазрушает окно UAF
12binder ioctlBINDER_WRITE_READ❌ EACCESНет прав на /dev/binder у shell
13pollpoll❌ Выделение в кучеpollfd в куче
14epoll_waitepoll_wait❌ Фрейм слишком мелкийФрейм 0xE0
15sched_setattrsched_setattr❌ Недостаточная глубинаФрейм 0xb0
16timerfd_settimetimerfd_settime❌ Нет копирования в стекНет большого стекового буфера
17io_uring_registerIORING_REGISTER_*❌ Двойной провал①Фрейм всего 0xF0, цель copy_from_user фиксирована на sp+0x8 (разница 424 байта с sp+0x1D0 у waiter); ②хотя io_uring_setup не блокируется seccomp (возвращает EFAULT, а не ENOSYS), раскладка стека не совпадает

17/17 — все неудачны.

3.3 Корневая причина неудачи

Раскладка стека, созданная компилятором для SM8475 5.10 GKI на PD2229 (PGO + LTO + BOLT), приводит к тому, что stack_fds в core_sys_select и rt_mutex_waiter в futex_wait_requeue_pi архитектурно не перекрываются. Это объективный факт, определяемый компилятором, а не проблема техники эксплуатации.

В репозитории JoinChang прямо указано: "The pselect stack overlay only works when the freed rt_mutex_waiter lands within the user-controllable region of the stack_fds buffer" — PD2229 не удовлетворяет этому условию.


4. Сравнительный анализ публичных репозиториев

NebuSec/CyberMeowfia — оригинальный фреймворк эксплуатации

  • Репозиторий: https://github.com/NebuSec/CyberMeowfia
  • Цель: x86_64 Linux / Pixel 10 (6.x GKI)
  • Перехват стека: PR_SET_MM_MAP копирует auxv в стек ядра
  • Процент успеха: 97%, ~5 секунд до [root shell]
  • Применимость к PD2229: ❌ PR_SET_MM_MAP блокируется на Android через EPERM

JoinChang/ghostlock-oneplus — джейлбрейк OnePlus с заблокированным загрузчиком

  • Репозиторий: https://github.com/JoinChang/ghostlock-oneplus
  • Проверенные устройства:
    • OnePlus Ace 6T (PLR110, SM8845) — 6.12.38 GKI ✅
    • OnePlus 15 (PLK110, SM8845) — 6.12.23 GKI ✅
  • Технические особенности:
    • Автоматическое извлечение смещений: kallsyms (28) + BTF (57) + производные (9) + константы (12) = 103/103
    • Перекрытие стека pselect, SP diff = -64
    • PSELECT_SHIFT = -2
    • Цепочка эксплуатации: futex UAF → подделка waiter → управление стеком через pselect → ограниченная запись rb_erase → selinux_state.enforcing=0 → перезапись cred на init_cred
  • Явное заявление о неприменимости: "Not Feasible (stack layout incompatible)" — применимо только к ядрам, где pselect stack_fds перекрывается с waiter
  • Применимость к PD2229: ❌ Поколение ядра не совпадает (6.12 против 5.10), раскладка стека не перекрывается

p2p3p/GhostLock-for-OnePlus — полная эксплуатация OnePlus 6.12

  • Репозиторий: https://github.com/p2p3p/GhostLock-for-OnePlus
  • Проверено: OnePlus Ace 6T (SM8845, 6.12.38) ✅
  • Применимость к PD2229: ❌ Как и JoinChang, поколение ядра не совпадает

YuKongA/ghostlock-oplus — OPPO Find N5/X8

  • Репозиторий: https://github.com/YuKongA/ghostlock-oplus
  • Ядро: 6.6.118 GKI
  • Применимость к PD2229: ❌ Поколение ядра не совпадает
Скачать инструмент