Бюллетень по безопасности Nexus – август 2015 г.

Опубликовано 13 августа 2015 года

К выходу ежемесячного бюллетеня о безопасности Android мы выпустили автоматическое обновление системы безопасности для устройств Nexus и опубликовали образы прошивок Nexus на сайте для разработчиков . Уязвимости устранены в сборке LMY48I и более новых сборках. Мы сообщили партнерам об уязвимостях 25 июня 2015 года или ранее.

Наиболее серьезная из уязвимостей имеет критический уровень и позволяет удаленно выполнять код на пораженном устройстве (например, при работе с электронной почтой, просмотре сайтов в Интернете или обработке медиафайлов MMS).

Перечень уязвимостей


В таблице ниже перечислены уязвимости, их идентификаторы (CVE) и уровни серьезности. Уровень зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.

Уязвимость CVE Уровень серьезности
Целочисленное переполнение при обработке атомов MP4 CVE-2015-1538 Критический
Целочисленное антипереполнение при обработке атомов ESDS CVE-2015-1539 Критический
Целочисленное переполнение в libstagefright при обработке атомов tx3g (MPEG4) CVE-2015-3824 Критический
Целочисленное антипереполнение в libstagefright при обработке атомов MPEG4 (covr) CVE-2015-3827 Критический
Целочисленное антипереполнение в libstagefright при обработке 3GPP, если размер меньше 6 CVE-2015-3828 Критический
Целочисленное переполнение в libstagefright при обработке атомов MPEG4 (covr), когда значение chunk_data_size равно SIZE_MAX CVE-2015-3829 Критический
Переполнение буфера в Parse_wave (Sonivox) CVE-2015-3836 Критический
Переполнение буфера в MPEG4Extractor.cpp (libstagefright) CVE-2015-3832 Критический
Переполнение буфера в BpMediaHTTPConnection (mediaserver) CVE-2015-3831 Высокий
Переполнение png_Read_IDAT_data (libpng) CVE-2015-0973 Высокий
Удаленная эксплуатация переполнения memcpy() в p2p_add_device() (wpa_supplicant) CVE-2015-1863 Высокий
Нарушение целостности информации в памяти при десериализации OpenSSLX509Certificate CVE-2015-3837 Высокий
Переполнение буфера в BnHDCP (mediaserver) CVE-2015-3834 Высокий
Переполнение буфера в OMXNodeInstance::emptyBuffer (libstagefright) CVE-2015-3835 Высокий
Переполнение кучи в AudioPolicyManager::getInputForAttr() (mediaserver) CVE-2015-3842 Высокий
Перехват и имитация SIM-команд CVE-2015-3843 Высокий
Демаршалинг Bitmap CVE-2015-1536 Средний
AppWidgetServiceImpl может создать IntentSender с системными привилегиями CVE-2015-1541 Средний
Обход ограничения на использование getRecentTasks() CVE-2015-3833 Средний
ActivityManagerService.getProcessRecordLocked() может загрузить неверный процесс для системного UID-приложения CVE-2015-3844 Средний
Чтение данных буфера в libstagefright при обработке метаданных 3GPP CVE-2015-3826 Низкий

Предотвращение атак


Ниже рассказывается, как платформа безопасности и средства защиты сервисов, например SafetyNet, позволяют снизить вероятность атак на Android.

  • Использование многих уязвимостей затрудняется в новых версиях Android, поэтому мы рекомендуем всем пользователям своевременно обновлять систему.
  • Команда, отвечающая за безопасность Android, активно отслеживает злоупотребления с помощью Проверки приложений и SafetyNet. Эти сервисы предупреждают пользователя об установке потенциально вредоносных приложений. Инструменты для рутинга в Google Play запрещены. Чтобы защитить пользователей, которые устанавливают ПО из сторонних источников, функция "Проверка приложений" включена по умолчанию. При этом система предупреждает пользователей об известных рутинг- приложениях. Кроме того, она пытается идентифицировать известное вредоносное ПО, использующее уязвимость для повышения привилегий, и блокировать его установку. Если подобное ПО уже установлено, система уведомит об этом пользователя и попытается удалить приложение.
  • Компания Google обновила приложения Hangouts и Messenger. Теперь они не передают медиафайлы уязвимым процессам, таким как mediaserver, автоматически.

Благодарности


Благодарим всех, кто помог обнаружить уязвимости:

  • Джошуа Дрейк: CVE-2015-1538, CVE-2015-3826.
  • Бен Хоукс: CVE-2015-3836.
  • Александру Бланда: CVE-2015-3832.
  • Михал Беднарский: CVE-2015-3831, CVE-2015-3844, CVE-2015-1541.
  • Алекс Копот: CVE-2015-1536.
  • Алекс Юбэнкс: CVE-2015-0973.
  • Рои Хэй и Ор Пелес: CVE-2015-3837.
  • Гуан Гун: CVE-2015-3834.
  • Гал Беньямини: CVE-2015-3835.
  • Виш Ву*: CVE-2015-3842.
  • Артем Чайкин: CVE-2015-3843.

*Мы также награждаем Виш Ву первым призом Android Security Rewards !

Целочисленное переполнение при обработке атомов MP4

При обработке атомов MP4 в libstagefright могут возникать целочисленные переполнения, которые позволяют нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям. Согласно старым правилам, этой уязвимости ранее присваивался высокий уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-1538 ANDROID-20139950 [ 2 ] Критический 5.1 и ниже

Целочисленное антипереполнение при обработке атомов ESDS

При обработке блоков ESDS в libstagefright может возникнуть целочисленное антипереполнение, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям. Согласно старым правилам, этой уязвимости ранее присваивался высокий уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-1539 ANDROID-20139950 Критический 5.1 и ниже

Целочисленное переполнение в libstagefright при обработке атомов tx3g (MPEG4)

При обработке атомов tx3g (MPEG4) в libstagefright может возникнуть целочисленное переполнение, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям.

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

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3824 ANDROID-20923261 Критический 5.1 и ниже

Целочисленное антипереполнение в libstagefright при обработке атомов MPEG4 (covr)

При обработке MPEG4 в libstagefright может возникнуть целочисленное антипереполнение, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям.

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

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3827 ANDROID-20923261 Критический 5.1 и ниже

Целочисленное антипереполнение в libstagefright при обработке 3GPP, если размер меньше 6

При обработке 3GPP в libstagefright может возникнуть целочисленное антипереполнение, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям. Согласно старым правилам, этой уязвимости ранее присваивался высокий уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3828 ANDROID-20923261 Критический 5.0 и выше

Целочисленное переполнение в libstagefright при обработке атомов MPEG4 (covr), когда значение chunk_data_size равно SIZE_MAX

При обработке атомов covr (MPEG4) в libstagefright может возникнуть целочисленное переполнение, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям. Согласно старым правилам, этой уязвимости ранее присваивался высокий уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3829 ANDROID-20923261 Критический 5.0 и выше

Переполнение буфера в Parse_wave (Sonivox)

При обработке XMF в Sonivox может возникнуть переполнение буфера, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям. Согласно старым правилам, этой уязвимости ранее присваивался высокий уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3836 ANDROID-21132860 Критический 5.1 и ниже

Переполнение буфера в MPEG4Extractor.cpp (libstagefright)

При обработке MP4 в libstagefright могут возникать переполнения буфера, которые позволяют нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Многие приложения позволяют контенту, особенно MMS-сообщениям и воспроизводимым в браузере медиафайлам, дистанционно обращаться к ней.

Уязвимости присвоен критический уровень из-за возможности удаленного выполнения кода от имени привилегированного сервиса (mediaserver). Этот сервис защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Такие данные недоступны сторонним приложениям.

Изначально мы сообщали, что этой уязвимостью нельзя воспользоваться удаленно. Согласно старым правилам, этой уязвимости ранее присваивался средний уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей критический уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3832 ANDROID-19641538 Критический 5.1 и ниже

Переполнение буфера в BpMediaHTTPConnection (mediaserver)

При обработке данных, предоставленных другим приложением, в BpMediaHTTPConnection может возникнуть переполнение буфера. Это позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимая функция является частью API. Мы считаем, что ее нельзя использовать удаленно.

Уязвимости присвоен высокий уровень из-за возможности выполнения кода от имени привилегированного сервиса (mediaserver) через приложение, установленное на устройстве. Сервис mediaserver защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Эти данные недоступны сторонним приложениям.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3831 ANDROID-19400722 Высокий 5.0 и 5.1

Переполнение png_Read_IDAT_data (libpng)

При чтении данных IDAT в функции png_read_IDAT_data() в libpng может возникнуть переполнение буфера, которое позволяет нарушить целостность информации в памяти и удаленно выполнить код в приложении, используя этот метод.

Уязвимая функция является частью API. Возможно, некоторые приложения, такие как сервисы обмена сообщениями и браузеры, позволяют контенту дистанционно обращаться к ней.

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

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-0973 ANDROID-19499430 Высокий 5.1 и ниже

Удаленная эксплуатация переполнения memcpy() в p2p_add_device() (wpa_supplicant)

Когда процесс wpa_supplicant находится в режиме WLAN Direct, в нем можно удаленно выполнять код из-за переполнения в методе p2p_add_device(). В результате успешной атаки может выполняться произвольный код от имени пользователя wifi.

Предотвратить атаку могут следующие меры:

– Функция WLAN Direct по умолчанию отключена на большинстве устройств Android.

– Злоумышленник не может произвести атаку, если находится вне диапазона действия Wi-Fi.

– Процесс wpa_supplicant выполняется от имени пользователя wifi (его доступ к системе ограничен).

– Дистанционная атака предотвращается с помощью ASLR на устройствах с Android 4.1 и выше.

– Права процесса wpa_supplicant ограничены политикой SELinux на Android 5.0 и выше.

Уязвимости присвоен высокий уровень серьезности из-за возможности удаленного выполнения кода. У пользователя wifi есть права, которые обычно недоступны сторонним приложениям, но мы считаем, что уязвимость не критическая: возможности для атаки ограничены, а также существуют меры ее предотвращения.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-1863 ANDROID-20076874 Высокий 5.1 и ниже

Нарушение целостности информации в памяти при десериализации OpenSSLX509Certificate

Вредоносное приложение, установленное на устройстве, может отправить алгоритм в другое приложение. После того как алгоритм будет десериализирован, он может уменьшить значение в произвольном адресе ячейки памяти, что позволяет нарушить целостность информации в памяти и выполнить код в конечном приложении.

Уязвимости присвоен высокий уровень серьезности, поскольку с ее помощью можно получить привилегии, недоступные сторонним приложениям.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3837 ANDROID-21437603 Высокий 5.1 и ниже

Переполнение буфера в BnHDCP (mediaserver)

При обработке данных, предоставленных другим приложением, в libstagefright может возникнуть переполнение буфера. Это позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимости присвоен высокий уровень серьезности, поскольку с ее помощью можно получить привилегии, недоступные сторонним приложениям. Сервис mediaserver защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Эти данные недоступны сторонним приложениям.

Согласно старым правилам, этой уязвимости ранее присваивался средний уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей высокий уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3834 ANDROID-20222489 Высокий 5.1 и ниже

Переполнение буфера в OMXNodeInstance::emptyBuffer (libstagefright)

При обработке данных, предоставленных другим приложением, в libstagefright может возникнуть переполнение буфера. Это позволяет нарушить целостность информации в памяти и удаленно выполнить код от имени процесса mediaserver.

Уязвимости присвоен высокий уровень серьезности, поскольку с ее помощью можно получить привилегии, недоступные сторонним приложениям. Сервис mediaserver защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Эти данные недоступны сторонним приложениям.

Согласно старым правилам, этой уязвимости ранее присваивался средний уровень серьезности. По новым правилам, опубликованным в июне 2015 года, мы присвоили ей высокий уровень.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3835 ANDROID-20634516 [ 2 ] Высокий 5.1 и ниже

Переполнение кучи в AudioPolicyManager::getInputForAttr() (mediaserver)

Переполнение кучи в сервисе audio policy в mediaserver позволяет приложению, установленному на устройстве, выполнять произвольный код в процессе mediaserver.

Уязвимая функция является частью API. Мы считаем, что ее нельзя использовать удаленно.

Уязвимости присвоен высокий уровень из-за возможности выполнения кода от имени привилегированного сервиса (mediaserver) через приложение, установленное на устройстве. Сервис mediaserver защищен SELinux, однако у него есть доступ к аудио- и видеопотокам, а также к узлам устройства из драйвера ядра. Эти данные недоступны сторонним приложениям.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3842 ANDROID-21953516 Высокий 5.1 и ниже

Перехват и имитация SIM-команд

Уязвимость фреймворка SIM Toolkit позволяет приложениям перехватывать и имитировать определенные SIM-команды при связи с подсистемой Telephony.

Уязвимости присвоен высокий уровень серьезности. С ее помощью приложение без расширенных прав может получить доступ к данным, защищенным разрешениями уровня signature (подпись) и system (система).

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3843 ANDROID-21697171 [ 2 , 3 , 4 ] Высокий 5.1 и ниже

Демаршалинг Bitmap

Целочисленное переполнение Bitmap_createFromParcel() позволяет приложению либо вызвать сбой процесса system_server, либо читать данные в памяти system_server.

Уязвимости присвоен средний уровень серьезности из-за возможной утечки конфиденциальных данных из процесса system_server в локальный процесс без расширенных прав. Таким уязвимостям обычно присваивается высокий уровень серьезности, однако полученные при атаке данные нельзя контролировать с помощью атакующего процесса. Злоумышленник может лишь временно вывести устройство из строя. Эту проблему решает перезагрузка.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-1536 ANDROID-19666945 Средний 5.1 и ниже

AppWidgetServiceImpl может создать IntentSender с системными привилегиями

Уязвимость AppWidgetServiceImpl в Настройках позволяет приложению самостоятельно предоставить себе разрешение URI, указав FLAG_GRANT_READ/WRITE_URI_PERMISSION. Например, в результате злоумышленник может читать данные контактов без разрешения READ_CONTACTS.

Уязвимости присвоен средний уровень серьезности. С ее помощью приложение на устройстве может получить доступ к данным, защищенным разрешениями уровня dangerous (опасно).

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-1541 ANDROID-19618745 Средний 5.1

Обход ограничения на использование getRecentTasks()

Приложение на устройстве может найти активное приложение в обход ограничения на использование getRecentTasks(), введенного в Android 5.0.

Уязвимости присвоен средний уровень серьезности. С ее помощью приложение на устройстве может получить доступ к данным, защищенным разрешениями уровня dangerous (опасно).

Мы считаем, что об этой уязвимости впервые написали здесь: http://stackoverflow.com/questions/24625936/getrunningtasks-doesnt-work-in-android-l

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3833 ANDROID-20034603 Средний 5.0 и 5.1

ActivityManagerService.getProcessRecordLocked() может загрузить неверный процесс для системного UID-приложения

Метод getProcessRecordLocked() в ActivityManager не подтверждает должным образом, что название приложения совпадает с именем пакета. В некоторых случаях это может привести к тому, что ActivityManager загрузит неверный процесс для определенных задач.

В результате приложение может препятствовать загрузке Настроек или добавлять параметры во фрагменты Настроек. Мы считаем, что это уязвимость не позволяет выполнять произвольный код от имени пользователя system.

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

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3844 ANDROID-21669445 Средний 5.1 и ниже

Чтение данных буфера в libstagefright при обработке метаданных 3GPP

Целочисленное переполнение при обработке данных 3GPP может привести к выполнению операции чтения, перегружающей буфер и вызывающей сбой процесса mediaserver.

Изначально этой уязвимости был присвоен высокий уровень серьезности. Однако после тщательной проверки мы выяснили, что последствия сводятся только к сбою mediaserver, и изменили уровень на низкий.

CVE Ошибки со ссылками на AOSP Уровень серьезности Уязвимые версии
CVE-2015-3826 ANDROID-20923261 Низкий 5.0 и 5.1

Версии


  • 13 августа 2015 года: опубликовано впервые