Установщик Fortnite может быть использован для автоматической установки приложений на телефоны Galaxy

Приложение-установщик Fortnite Mobile для Android было уязвимо для взлома в первом выпуске. Его можно использовать для автоматической установки любого приложения на телефоны Samsung Galaxy.

Запуск Fortnite Mobile на Android оказался не слишком удачным, особенно после многие из поддерживаемых устройств Действительно изо всех сил пытаюсь играть в игру с приемлемой частотой кадров. Игра запущена как Эксклюзив Samsung Galaxy всего на 3 дня.. Установщик Fortnite впервые был доступен на Приложения Samsung Galaxy до того, как Epic Games разрешила игрокам, не являющимся пользователями Samsung, загружать и устанавливать полную версию игры с помощью установщика Fortnite, полученного на веб-сайте Epic. Вскоре после того, как установщик Fortnite стал доступен, Epic Games незаметно выпустила обновление для установщика. Теперь мы знаем почему: они исправили Человек на диске эксплойт, который позволил вредоносному приложению тихо установить любое приложение, которое они хотели на смартфонах Samsung Galaxy

. Поскольку возникла некоторая путаница в том, как работает этот недостаток, мы попытаемся прояснить ситуацию. Сначала нам нужно объяснить основы установки приложений на Android.


Процесс установки приложения на смартфонах Android

Тихая установка из сторонних источников

Чтобы установить APK на Android без запроса разрешения у пользователя, вам необходимо иметь приложение системного уровня с INSTALL_PACKAGES разрешение получено. Примеры приложений с таким разрешением включают Google Play Store на большинстве устройств Android. Сторонним магазинам приложений на устройствах Samsung, Huawei и других производителей устройств также может быть предоставлено разрешение INSTALL_PACKAGES. Если вы хотите установить какое-либо приложение из Google Play Store, оно выполнит загрузку и автоматически установит. приложение для вас без дальнейшего вмешательства после того, как вы нажмете «Установить». (Даже в магазине Google Play автоматически предоставляет определенные разрешения во время выполнения например тот, что для наложения, тогда как приложения, установленные за пределами Play Store, должны запрашивать у пользователя предоставление этих разрешений.)

Если вам интересно, имеет ли приложение на вашем устройстве разрешение INSTALL_PACKAGES, вы можете узнать это с помощью команды ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

Например, имя пакета в Google Play Store — «com.android.vending". Другое приложение с таким разрешением — Shell с именем пакета. com.android.shell. Для тех из вас, кто использует безрутовый субстрат через плагин Andromeda в Android Oreo сценарий Andromeda, запускаемый с вашего ПК, поддерживает работу процесса оболочки, поэтому Substratum может использовать его для установки пакетов (наложение темы), а затем использовать Команды менеджера наложения чтобы включить наложения.

Неопубликованная загрузка приложений из сторонних источников

Если вы попытаетесь загрузить и установить приложение не из собственного магазина приложений, вам сначала необходимо включить неизвестные источники установки. Это позволяет Служба диспетчера пакетов в рамках платформы Android (которая имеет разрешение INSTALL_PACKAGES) знайте, что вы признаете риски, связанные с боковой загрузкой приложений из сторонних источников. На устройствах до Android Oreo в настройках безопасности есть единственный переключатель, позволяющий разрешить установку из неизвестных источников. На Android Oreo и более поздних версиях, приложение, требующее установки APK, должно объявить REQUEST_INSTALL_PACKAGES разрешение, и пользователь должен внести это приложение в белый список, чтобы оно могло запрашивать установку приложения через службу диспетчера пакетов. Поскольку REQUEST_INSTALL_PACKAGES является разрешением «appop», это делает его одним из разрешений, которыми можно управлять из диспетчера разрешений «Настройки» или через cmd appops команда оболочки.

Как только установка из неизвестных источников включена либо глобально, либо специально для запрашивающего приложения, пользователь может загрузить приложение неопубликовано. Однако диспетчер пакетов не позволяет устанавливать приложение в автоматическом режиме. Скорее, он подскажет пользователю, хотят ли они установить приложение, и перечислит все конфиденциальные разрешения, которые оно запрашивает при установке. Если пользователь соглашается, приложение устанавливается с запрошенными разрешениями, не связанными с выполнением. OEM-производители также могут настроить диспетчер пакетов: например, диспетчер пакетов в китайской версии В EMUI 5 от Huawei есть функция сканирования APK, чтобы определить, безопасен ли он, и контролировать выданные разрешения. предоставленный до монтаж. Я наблюдал это на Honor Note 8 под управлением EMUI 5, импортированного из Китая, хотя я уверен, что другие китайские устройства Huawei и Honor также имеют эту функцию в своих менеджерах пакетов.

В любом случае, это суммирует разницу между установкой приложения из одобренного стороннего источника и стороннего источника. Если вы попытаетесь установить приложение из Play Store или аналогичного магазина приложений с помощью INSTALL_PACKAGES разрешения, он самостоятельно выполнит установку без дальнейшего вмешательства пользователя после запуска. загрузка. Но если вы загружаете APK из XDA Labs, APKMirror или других сторонних источников, стандартный установщик пакета выполнит установку и предложит пользователю установить этот пакет. Так где же нужен установщик Fortnite и почему все это актуально?

Ошибка в процессе установки Fortnite

Ранее сегодня Google раскрыл уязвимость они обнаружили это с помощью первой версии установщика Fortnite. Уязвимость была продемонстрирована на Exynos Samsung Galaxy S8+ (dream2lte), но также затронула и все другие устройства Samsung Experience, включая Samsung Galaxy Note 9 и Samsung Galaxy Tab S4. Уязвимость позволяет уже установленное вредоносное приложение чтобы воспользоваться способом, которым установщик Fortnite пытается установить Fortnite в первый раз на устройствах Samsung Galaxy. Используя частный API в приложениях Samsung Galaxy Apps, установщик Fortnite позволяет избежать необходимости запрашивать у пользователя установку Fortnite через стандартный установщик пакетов. Это связано с тем, что у Galaxy Apps есть необходимое разрешение для автоматической установки. В этом процессе автоматической установки не было бы ничего плохого, если бы автоматически устанавливаемое приложение было настоящим Fortnite. Но из-за того, где установщик Fortnite хранил загруженный APK-файл игры Fortnite, его можно было легко использовать.

AndroidManifest от Samsung Galaxy Apps показывает, что Galaxy Apps имеет разрешение устанавливать другие приложения самостоятельно, минуя стандартный установщик пакетов.

Согласно отчету Issue Tracker, установщик Fortnite загрузит APK-файл Fortnite Mobile на /sdcard/Android/data/com.epicgames.portal/files/downloads/. В Android это считается «внешним хранилищем», поскольку /sdcard — это символическая ссылка на /data/media/CURRENT_USER и /sdcard — это имя, которое использовалось на заре Android, когда данные приложения хранятся на физических SD-картах. В настоящее время данные приложений обычно хранятся в каталогах конкретных приложений в /data/data/, и каждое приложение имеет доступ только к файлам в своем собственном каталоге /data/data. Таким образом, если установщик Fortnite сохранит загруженный APK-файл Fortnite в своем собственном каталоге /data/data/, это будет невозможно для любого приложения без разрешений на чтение (т. без root-доступа), чтобы знать, что происходит в этом каталоге.

Однако, поскольку установщик Fortnite сохранил загруженный APK во внешнем хранилище, его можно отслеживать и перезаписывать любое приложение с разрешениями на чтение внешнего хранилища. Обычно приложения записывают данные в /data/media, «виртуальную SD-карту», ​​когда они хранят файлы, к которым пользователь должен иметь доступ через MTP или другие приложения. Чтобы приложение могло читать или записывать в /data/media, ему необходимо иметь READ_EXTERNAL_STORAGE и Разрешения WRITE_EXTERNAL_STORAGE соответственно (оба находятся в одной группе разрешений и, следовательно, предоставляются вместе). До Android 4.4 KitKat большинство приложений запрашивали эти разрешения при установке, поскольку в противном случае они не были бы доступны. иметь возможность читать или записывать файлы в назначенном каталоге внешнего хранилища своего пакета в /data/media/.../Android/. С введением FUSE для эмуляции разрешений каталога в стиле FAT-on-sdcard в Android 4.4 KitKat приложениям больше не нужны никакие разрешения для доступа к файлам в назначенном им каталоге во внешнем хранилище. Для доступа к файлам в любом другом каталоге по-прежнему потребуются разрешения на внешнее хранилище, и именно это может сделать вредоносное приложение, чтобы перехватить процесс установки Fortnite.

Как показано на видео ниже, вредоносное приложение с разрешением READ_EXTERNAL_STORAGE отслеживает каталог загрузки установщика Fortnite во внешнем хранилище. Когда он обнаруживает, что загрузка завершена и отпечаток пальца проверен, он заменяет скачал пакет Fortnite с собственным вредоносным пакетом благодаря WRITE_EXTERNAL_STORAGE разрешение. Однако из-за того, что Samsung Galaxy Apps проверяет APK-файл Fortnite перед установкой (...он просто проверяет, является ли имя пакета «com.epicgames.fortnite»), возможно, есть Galaxy Программы тихо установить вредоносный пакет в фоновом режиме без вмешательства или уведомления пользователя— при условии, что имя вредоносного пакета было «com.epicgames.fortnite». Хуже того, если бы этот вредоносный пакет был нацелен на SDK уровня 22 или ниже (Android 5.1 Lollipop и более ранние версии), он бы автоматически получать все разрешения, определенные в его манифесте, поскольку разрешения во время выполнения обязательны только для приложений, предназначенных для уровня SDK 23 и выше (Android 6.0 Marshmallow и позже).

Но что произойдет на устройствах сторонних производителей? Что ж, поскольку приложения Samsung Galaxy Apps не установлены на устройствах сторонних производителей, вредоносный APK не будет автоматически установлен в фоновом режиме. Установщик Fortnite — это стороннее приложение, поэтому ему необходимо сначала предложить пользователю включить установка из неизвестных источников, а затем отправить запрос установщику пакета на установку поддельного Фортнайт АПК. Тогда от пользователя будет зависеть, нажмет ли он «Установить», когда его спросят, хотят ли они установить приложение или нет. Это проблематично, несмотря на то, что телефоны сторонних производителей не подвергаются опасности установки вредоносного приложения в фоновом режиме. Среднестатистический пользователь не стал бы мудрее, если бы ему был предоставлен для установки вредоносный APK, созданный с использованием «Fortnite» в названии и значком приложения Fortnite.

Тем не менее, существует четкое различие между использованием этого недостатка на смартфонах Samsung Galaxy и смартфонах сторонних производителей. Первый представляет собой атаку «Человек на диске», которая также использует преимущества скрытого системного API для незаметной установки любого приложения в систему. фон, с любыми разрешениями и без необходимости обманывать пользователя, заставляя его думать, что он устанавливает поддельную версию Fortnite. АПК. Последний представляет собой стандартная атака «Человек на диске», которая также может произойти с другими приложениями, сохраняющими APK-файлы или другие важные данные во внешних каталогах хранения., как показал недавний Контрольно-пропускной пункт почта. Так уж получилось, что благодаря скрытому API Galaxy Apps атака «Человек на диске» более опасна на устройствах Samsung Galaxy.

Исправление недостатка

К чести Epic Games, они очень быстро отреагировали на отчет Google Issue Tracker и выпустили обновление до версии 2.1.0 так быстро, как только могли. Решение было простым: просто сохраните загруженный APK-файл Fortnite во внутреннем каталоге установщика Fortnite в /data/data, а не в каталоге внешнего хранилища в /data/media. Инженер Epic Games потребовал, чтобы уязвимость была раскрыта через 90 дней, однако Google отказалась и обнародовала проблему через 7 дней после выпуска исправления. Генеральный директор Epic Games Тим Суини был нет доволен быстрым временем выполнения работ от первоначального отчета о безопасности до его раскрытия. Он предложил следующее заявление Центр Android.

Epic искренне оценила усилия Google по проведению углубленного аудита безопасности Fortnite сразу после нашего выпустить на Android и поделиться результатами с Epic, чтобы мы могли быстро выпустить обновление, исправляющее ошибку, которую они обнаружили. обнаруженный.

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

Инженер по безопасности Epic по моему настоянию попросил Google отложить публичное раскрытие информации на обычные 90 дней, чтобы дать время для более широкой установки обновления. Гугл отказался. Вы можете прочитать все это на https://issuetracker.google.com/issues/112630336

Усилия Google по анализу безопасности ценятся и приносят пользу платформе Android, однако такой мощной компании, как Google, следует больше практиковаться. ответственное время раскрытия информации, чем это, и не подвергать пользователей опасности в ходе контрпиар-мероприятий против распространения Epic Fortnite за пределами Гугл игры.

Я не могу сказать, на скольких существующих устройствах Samsung Galaxy все еще установлена ​​старая версия установщика Fortnite. Возможно, Epic Games следует предложить этим пользователям обновить свою установку, отправив сообщение в Fortnite Mobile. Отличная новая функция обмена сообщениями в приложениях Firebase мог бы сделать свое дело. Хотя в любом случае это, вероятно, не имеет большого значения, потому что, если пользователь с более старой версией установщика уже загрузил легальную версию Fortnite, то любая MITD-атака не сработает, поскольку вредоносный APK невозможно установить поверх существующего Fortnite. монтаж. В любом случае, обнаружение этого недостатка так рано после выпуска Fortnite на Android, когда по поводу Epic Games все еще ведется столько споров, решение отказаться от Google Play— безусловно, помогает аргумент о том, что решение Epic Games было неосторожным. Мы никогда не узнаем, было ли намерение Google так быстро опубликовать эту проблему.