Обновления безопасности и ресурсы

Команда безопасности Android отвечает за управление уязвимостями безопасности, обнаруженными в платформе Android и многих основных приложениях Android, связанных с устройствами Android.

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

Сообщение о проблемах безопасности

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

Ошибки, помеченные как проблемы безопасности, не видны извне, но в конечном итоге они могут стать видимыми после оценки или решения проблемы. Если вы планируете отправить исправление или тест Compatibility Test Suite (CTS) для решения проблемы безопасности, прикрепите его к отчету об ошибке и дождитесь ответа, прежде чем загружать код в AOSP.

Проверка ошибок

Первая задача при устранении уязвимости в системе безопасности — определить серьезность ошибки и определить, какой компонент Android затронут. Серьезность определяет, как проблема расставляется по приоритетам, а компонент определяет, кто исправляет ошибку, кто уведомляется и как исправление развертывается для пользователей.

Типы контекста

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

Тип контекста Определение типа
Ограниченный контекст Ограниченная среда выполнения, в которой предоставляются только самые минимальные разрешения.

Например, доверенные приложения, обрабатывающие ненадежные данные в изолированной среде.
Непривилегированный контекст Типичная среда выполнения, ожидаемая от непривилегированного кода.

Например, приложение Android, работающее в домене SELinux с атрибутом untrusted_app_all .
Привилегированный контекст Привилегированная среда выполнения, которая может иметь доступ к повышенным разрешениям, обрабатывать персональные данные нескольких пользователей и/или поддерживать целостность системы.

Например, приложение Android с возможностями, которые были бы запрещены доменом SELinux untrusted_app или с доступом к privileged|signature .
Ядро ОС Функциональность, которая:
  • является частью ядра
  • работает в том же контексте ЦП, что и ядро ​​(например, драйверы устройств)
  • имеет прямой доступ к памяти ядра (например, к аппаратным компонентам на устройстве)
  • имеет возможность загружать скрипты в компонент ядра (например, eBPF)
  • является одной из немногих пользовательских служб, которые считаются эквивалентными ядру (например, apexd , bpfloader , init , ueventd и vold ).
База доверенного оборудования (THB) Дискретные аппаратные компоненты, как правило, на SoC, которые обеспечивают функциональность, критически важную для основных вариантов использования устройства (например, базовые полосы сотовой связи, DSP, графические процессоры и процессоры машинного обучения).
Цепочка загрузчика Компонент, который настраивает устройство при загрузке, а затем передает управление ОС Android.
Надежная среда выполнения (TEE) Компонент, предназначенный для защиты даже от враждебного ядра ОС (например, TrustZone и гипервизоров, таких как pKVM, которые защищают виртуальные машины от ядра ОС).
Безопасный анклав / безопасный элемент (SE) Необязательный аппаратный компонент, предназначенный для защиты от всех других компонентов на устройстве и от физической атаки, как определено в разделе « Введение в элементы защиты» .

Это включает в себя чип Titan-M, присутствующий в некоторых устройствах Android.

Строгость

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

Рейтинг Результат успешной эксплуатации
Критический
  • Выполнение произвольного кода в TEE или SE
  • Обход программных механизмов, предназначенных для предотвращения сбоев в работе программных или аппаратных компонентов, связанных с безопасностью (например, тепловой защиты).
  • Удаленный доступ к конфиденциальным учетным данным, используемым для проверки подлинности удаленной службы (например, пароли учетных записей или токены носителя).
  • Удаленное выполнение произвольного кода в контексте базовой полосы сотовой связи без взаимодействия с пользователем (например, использование ошибки в службе сотовой радиосвязи).
  • Удаленное выполнение произвольного кода в привилегированном контексте, цепочке загрузчика, THB или ядре ОС
  • Удаленный обход требований взаимодействия с пользователем при установке пакета или аналогичного поведения
  • Удаленный обход требований взаимодействия с пользователем для основного разработчика, настроек безопасности или конфиденциальности
  • Удаленный постоянный отказ в обслуживании (постоянный, требующий перепрошивки всей операционной системы или сброса к заводским настройкам)
  • Удаленный безопасный обход загрузки
  • Несанкционированный доступ к данным, защищенным SE, включая доступ, разрешенный слабыми ключами в SE.
Высокий
  • Полный обход основной функции безопасности (например, SELinux, FBE или seccomp ).
  • Общий обход для глубокоэшелонированной защиты или технология смягчения последствий эксплойтов в цепочке загрузчика, TEE или SE.
  • Общий обход средств защиты операционной системы, которые раскрывают память или содержимое файлов за пределами приложений, пользователей или профилей.
  • Атаки на SE, которые приводят к переходу на менее безопасную реализацию
  • Обход защиты устройства/защиты от сброса настроек/ограничений оператора связи
  • Обход требований взаимодействия с пользователем, которые защищены TEE
  • Криптографическая уязвимость, позволяющая проводить атаки на сквозные протоколы, включая атаки на безопасность транспортного уровня (TLS) и Bluetooth (BT).
  • Локальный доступ к конфиденциальным учетным данным, используемым для проверки подлинности удаленной службы (например, пароли учетных записей или токены носителя).
  • Локальное выполнение произвольного кода в привилегированном контексте, цепочке загрузчика, THB или ядре ОС
  • Локальный безопасный обход загрузки
  • Обход экрана блокировки
  • Локальный обход требований взаимодействия с пользователем для основного разработчика, настроек безопасности или конфиденциальности
  • Локальный обход требований взаимодействия с пользователем при установке пакета или аналогичного поведения
  • Локальный постоянный отказ в обслуживании (постоянный, требующий перепрошивки всей операционной системы или сброса настроек)
  • Удаленный доступ к защищенным данным (то есть данным, ограниченным привилегированным контекстом)
  • Удаленное выполнение произвольного кода в непривилегированном контексте
  • Удаленное предотвращение доступа к сотовой сети или сети Wi-Fi без взаимодействия с пользователем (например, сбой службы сотовой радиосвязи из-за искаженного пакета)
  • Удаленный обход требований взаимодействия с пользователем (доступ к функциям или данным, который должен требовать либо инициации пользователя, либо разрешения пользователя)
  • Целенаправленное предотвращение доступа к экстренным службам
  • Передача конфиденциальной информации по незащищенному сетевому протоколу (например, HTTP и незашифрованному Bluetooth), когда запрашивающая сторона ожидает безопасной передачи. Обратите внимание, что это не относится к шифрованию Wi-Fi (например, WEP).
  • Несанкционированный доступ к данным, защищенным TEE, включая доступ, разрешенный слабыми ключами в TEE.
Умеренный
  • Общий обход для глубокоэшелонированной защиты или использование технологии смягчения последствий в привилегированном контексте, THB или ядре ОС.
  • Общий обход средств защиты операционной системы, которые раскрывают состояние процесса или метаданные за пределами приложений, пользователей или профилей.
  • Обход шифрования или аутентификации Wi-Fi
  • Криптографическая уязвимость в стандартных криптопримитивах, которая допускает утечку открытого текста (не примитивов, используемых в TLS).
  • Локальный доступ к защищенным данным (то есть данным, ограниченным привилегированным контекстом)
  • Локальное выполнение произвольного кода в непривилегированном контексте
  • Локальный обход требований взаимодействия с пользователем (доступ к функциям или данным, которые обычно требуют либо инициации пользователя, либо разрешения пользователя)
  • Удаленный доступ к незащищенным данным (то есть данным, обычно доступным для любого локально установленного приложения)
  • Удаленное выполнение произвольного кода в ограниченном контексте
  • Отказ в обслуживании удаленного временного устройства (удаленное зависание или перезагрузка)
Низкий
  • Общий обход глубокоэшелонированной защиты на уровне пользователя или использование технологии смягчения последствий в непривилегированном контексте.
  • Обход разрешения нормального уровня защиты
  • Криптографическая уязвимость при нестандартном использовании
  • Общий обход функций персонализации на устройстве, таких как Voice Match или Face Match
  • Неверная документация, которая может привести к уязвимости в системе безопасности
  • Локальное выполнение произвольного кода в ограниченном контексте
  • Определенный системой текст, содержащий вводящее в заблуждение описание, создающее ложное ожидание безопасности
Незначительное влияние на безопасность (NSI)
  • Уязвимость, влияние которой было смягчено одним или несколькими модификаторами рейтинга или изменениями архитектуры для конкретной версии, так что действующая серьезность ниже Низкой, хотя основная проблема с кодом может остаться.
  • Любая уязвимость, требующая искаженной файловой системы, если эта файловая система всегда принимается/зашифровывается перед использованием.

Модификаторы рейтинга

Хотя серьезность уязвимостей безопасности часто легко определить, рейтинги могут меняться в зависимости от обстоятельств.

Причина Эффект
Для выполнения атаки требуется запуск в качестве привилегированного контекста (неприменимо к TEE, SE и гипервизорам, таким как pKVM) -1 Серьезность
Подробная информация об уязвимости ограничивает влияние проблемы -1 Серьезность
Обход биометрической аутентификации, требующий биометрической информации непосредственно от владельца устройства -1 Серьезность
Конфигурации компилятора или платформы уменьшают уязвимость в исходном коде Умеренная серьезность, если основная уязвимость имеет средний или более высокий уровень
Требуется физический доступ к внутренним компонентам устройства и все еще возможен, если устройство выключено или не было разблокировано с момента включения. -1 Серьезность
Требуется физический доступ к внутренним компонентам устройства, когда оно включено и ранее было разблокировано. -2 Серьезность
Локальная атака, требующая разблокировки цепочки загрузчика Не выше, чем Низкий
Локальная атака, требующая, чтобы режим разработчика или какие-либо постоянные параметры режима разработчика были включены на устройстве в данный момент (и не является ошибкой в ​​самом режиме разработчика). Не выше, чем Низкий
Если ни один домен SELinux не может выполнять операцию в соответствии с предоставленной Google SEPolicy Незначительное влияние на безопасность

Локальный против проксимального против удаленного

Вектор удаленной атаки указывает на то, что баг можно использовать без установки приложения или без физического доступа к устройству. Сюда входят ошибки, которые могут быть вызваны просмотром веб-страницы, чтением электронной почты, получением SMS-сообщения или подключением к враждебной сети. Для оценки серьезности мы также считаем «ближайшие» векторы атак удаленными. К ним относятся ошибки, которые могут быть использованы только злоумышленником, который физически находится рядом с целевым устройством, например, ошибка, которая требует отправки искаженных пакетов Wi-Fi или Bluetooth. Мы рассматриваем сверхширокополосные (UWB) и атаки на основе NFC как ближайшие и, следовательно, удаленные.

Локальные атаки требуют, чтобы жертва запустила приложение, либо установив и запустив приложение, либо согласившись на запуск приложения с мгновенным запуском. Сопряженные устройства-компаньоны будут считаться локальными. В целях оценки серьезности группа безопасности Android также рассматривает векторы физических атак как локальные. К ним относятся ошибки, которые могут быть использованы только злоумышленником, имеющим физический доступ к устройству, например, ошибка на экране блокировки или ошибка, требующая подключения USB-кабеля.

Сетевая безопасность

Android предполагает, что все сети враждебны и могут проводить атаки или шпионить за трафиком. Хотя безопасность на канальном уровне (например, шифрование Wi-Fi) защищает связь между устройством и точкой доступа, к которой оно подключено, она ничего не делает для защиты остальных звеньев в цепочке между устройством и серверами, с которыми оно взаимодействует.

Напротив, HTTPS обычно защищает всю коммуникацию от начала до конца, шифруя данные в источнике, а затем расшифровывая и проверяя их только после того, как они достигнут конечного пункта назначения. Из-за этого уязвимости, которые ставят под угрозу сетевую безопасность канального уровня, оцениваются как менее серьезные, чем уязвимости в HTTPS/TLS: одного только шифрования Wi-Fi недостаточно для большинства коммуникаций в Интернете.

Биометрическая аутентификация

Биометрическая аутентификация — сложная область, и даже самые лучшие системы могут быть обмануты почти совпадением (см. Блог разработчиков Android: Экран блокировки и улучшения аутентификации в Android 11 ). Эти оценки серьезности различают два класса атак и предназначены для отражения фактического риска для конечного пользователя.

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

Другой класс атак обычно включает инструмент атаки представления (подделка), основанный на владельце устройства. Иногда эту биометрическую информацию относительно легко получить (например, если чьего-то изображения профиля в социальных сетях достаточно, чтобы обмануть биометрическую аутентификацию, тогда биометрический обход получит полный рейтинг серьезности). Но если злоумышленнику потребуется получить биометрические данные непосредственно от владельца устройства (например, инфракрасное сканирование его лица), это достаточно серьезный барьер, который ограничивает количество людей, затронутых атакой, поэтому есть модификатор -1. .

SYSTEM_ALERT_WINDOW и перехват трафика

Информацию о наших политиках в отношении SYSTEM_ALERT_WINDOW и перехвата трафика см. в разделе « Уязвимость перехвата/перекрытия SYSTEM_ALERT_WINDOW на некритическом с точки зрения безопасности экране » на странице BugHunter University « Ошибки, не влияющие на безопасность ».

Затронутый компонент

Команда разработчиков, отвечающая за исправление ошибки, зависит от того, в каком компоненте обнаружена ошибка. Это может быть основной компонент платформы Android, драйвер ядра, предоставленный производителем оригинального оборудования (OEM), или одно из предварительно загруженных приложений на устройствах Pixel. .

Ошибки в коде AOSP исправляются командой разработчиков Android. Незначительные ошибки, ошибки в определенных компонентах или ошибки, которые уже широко известны, могут быть исправлены непосредственно в общедоступной основной ветке AOSP; в противном случае они сначала исправляются в наших внутренних репозиториях.

Компонент также влияет на то, как пользователи получают обновления. Ошибка в фреймворке или ядре требует беспроводного (OTA) обновления прошивки, которое должен отправить каждый OEM. Ошибка в приложении или библиотеке, опубликованной в Google Play (например, Gmail, Google Play Services или WebView), может быть отправлена ​​пользователям Android в виде обновления из Google Play.

Уведомление партнеров

Когда уязвимость безопасности в AOSP будет устранена в бюллетене по безопасности Android, мы уведомим партнеров Android о подробностях проблемы и предоставим исправления. Список версий, поддерживаемых бэкпортом, меняется с каждым новым выпуском Android. Обратитесь к производителю устройства за списком поддерживаемых устройств.

Публикация кода в AOSP

Если ошибка безопасности находится в компоненте AOSP, исправление передается в AOSP после выпуска OTA для пользователей. Исправления для проблем с низким уровнем серьезности могут быть отправлены непосредственно в основную ветку AOSP до того, как исправление будет доступно для устройств через OTA.

Получение обновлений Android

Обновления системы Android обычно доставляются на устройства через пакеты обновлений OTA. Эти обновления могут поступать от OEM-производителя устройства или оператора связи, обслуживающего устройство. Обновления устройств Google Pixel поступают от команды Google Pixel после прохождения процедуры технического приемочного тестирования (TA). Google также публикует фабричные изображения Pixel , которые можно загружать на устройства.

Обновление сервисов Google

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

Другие источники

Информация для разработчиков приложений для Android: https://developer.android.com

Информация о безопасности доступна на сайтах Android с открытым исходным кодом и для разработчиков. Хорошие места для начала:

Отчеты

Иногда команда Android Security публикует отчеты или технические документы. Дополнительные сведения см. в разделе Отчеты о безопасности .