Google в конце октября 2019 года устранила уязвимость CVE-2019-2114, которая могла использоваться злоумышленниками для распространения вредоносного программного обеспечения между устройствами на ОС Android, находящимися недалеко друг от друга. Проблема заключалась в некорректной работе функции NFC Beaming в режиме «Android beam: enabled», которая позволяла передавать по NFC на другое устройство APK-файлы приложений. Причем сам сервис Android Beam для операционный системы по уровню доверия был в белом списке, а передаваемые файлы воспринимались так же, как приложения из Google Play Store. Данной уязвимости были подвержены все устройства на базе Android Oreo (8.0) и более поздних версий.
Расширенный функционал технологии NFC (Near Field Communication) работает на Android-устройствах с помощью внутреннего сервиса операционной системы Android Beam. Данный сервис также позволяет передавать определенные данные между двумя устройствами на Android. Это могут быть файлы с изображениями, видеофрагменты, а также другие файлы и APK-приложения, которые могут быть скомпрометированы или специально заражены.
После выполнения процесса передачи по NFC, APK-файлы приложений сохраняются в памяти внутреннего накопителя устройства-получателя. Однако, если получателем является устройство на базе Android Oreo (8.0) и более поздних версий, то на экране этого устройства при этом не появляется соответствующий запрос или уведомление на разрешение установки ПО из неизвестного источника. А вместо этого на экран второго устройства выводится сообщение, позволяющее его пользователю одним нажатием установить программу, полученную с другого устройства через NFC.
Конечно, данная проблема не является серьезным изъяном в системе безопасности Android, так как пользователю все равно нужно подтвердить запуск полученного файла. Однако, в этом случае был пропущен важный шаг — ведь устройствам на Android по умолчанию не разрешается устанавливать приложения из «неизвестных источников», если не активирована соответствующая опция в настройках безопасности устройства. А в случае с Android Beam если такая опия была выключена, то все равно приложения по NFC можно было получить и начать устанавливать без всяких предупреждений системы безопасности ОС.
Оказалось, что разработчики не учли такой момент — сервис Android Beam по умолчанию имел в системе Android Oreo (8.0) и более поздних версий самый высокий уровень доверия и все передаваемые через него файлы воспринимались как официальные приложения из Play Store. Хотя функционал этого сервиса изначально не предназначался для установки приложений с его помощью. Данной уязвимости был присвоен номер CVE-2019-2114, она была впервые зарегистрирована 30 января 2019 года. На данный момент эта уязвимость устранена в октябрьском пакете обновлений для ОС Android. В системе Google эта уязвимость имеет данные: Google Bug # 123651515 (Android ID # A-123700348).
Данная уязвимость соответствовала требованиям программы Android Security Rewards, а Google выплатил за ее нахождение и предоставление информации вознаграждение.
История устранения уязвимости CVE-2019-2114:
30 января 2019 года: Получен первоначальный отчет по возможной уязвимости.
31 января 2019 года: Уязвимость подтверждена, начаты работы по ее изучению.
1 февраля 2019 года: Проблема безопасности системы по этой уязвимости переведена в статус «высокая».
2 марта 2019 года: Проверка воспроизводства данной уязвимости с другими вендорами.
6 апреля 2019 года: Проверка воспроизводства данной уязвимости с другими вендорами.
29 апреля 2019 года: Проверка воспроизводства данной уязвимости, исправление уязвимости в разработке.
29 июня 2019 года: Проверка воспроизводства данной уязвимости с другими вендорами.
1 июля 2019 года: Вендоры уведомлены о том, что по этой уязвимости будет выпущено исправление, назначен номер CVE.
8 июля 2019 года: Вендоры дополнительно проинформированы об уязвимости.
10 июля 2019 года: Выпуск исправления был отложен на месяц.
28 июля 2019 года: Черновик информационного письма об исправлении отправлен ведорам на проверку.
31 июля 2019 года: От вендоров получены комментарии по разработке исправления.
4 сентября 2019 года: Второй этап общения с вендорами по выпуску исправления.
7 октября 2019 года: Исправление уязвимости выпущено.
24 октября 2019 года: Публичное раскрытие уязвимости.
Как воспроизвести уязвимость на Android-устройствах (проверено на ОС Android 9 и Android 8.10):
1. Настройте два смартфона: включите в них поддержку NFC и Android beam.
2. Сохраните любой APK-файл на устройство-отправитель (некоторые предпочитают сохранить для данного теста вот этот APK с GitHub).
3. Зайдите в диспетчер файлов на устройстве-отправитель, нажмите на файл и выберите «Поделиться» (Share). Затем выберите «Android Beam» в качестве метода обмена.
4. Поднесите два смартфона друг к другу и завершите передачу между ними APK-файла.
5. После передачи APK-файла на устройстве-получателе нажмите уведомление “Beam completed” и нажмите на APK-файл, начнется сразу его установка в системе, минуя предупреждения системы безопасности и не будет выскакивать уведомление типа «Установить приложения из неизвестного источника».
Исправление уязвимости CVE-2019-2114 было выпущено в составе бюллетеня безопасности Google за октябрь 2019 года. Всем пользователям рекомендуется установить данное обновление на свои устройства, чтобы устранить эту уязвимость. После применения обновления, пользователям рекомендуется проверить в настройках безопасности своих устройств, что в разделе «Установка неизвестных приложений» теперь служба NFC имеет статус «не разрешено» для установки приложений.
Автор: denis-19