Как устранять уязвимости перед межпрограммным скриптингом

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

Что происходит

В одном или нескольких ваших приложениях есть компонент WebView, уязвимый к межпрограммному скриптингу. Вредоносные приложения могут воспользоваться этим и получить доступ к пользовательским файлам cookie или другим данным. Вам необходимо принять меры до даты, указанной в Play Console. После нее приложения, содержащие уязвимость, могут быть удалены из Google Play.

Что нужно сделать

  1. Чтобы узнать, какие приложения уязвимы и как скоро нужно устранить проблему, войдите в Play Console и откройте раздел "Оповещения".
  2. Устраните уязвимость и обновите затронутые ею приложения.
  3. Опубликуйте обновленные версии приложений.

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

Сведения об уязвимости

Вредоносные приложения могут атаковать компоненты WebView, которые активируют JavaScript и загружают данные из ненадежных объектов Intent, и инициировать небезопасное выполнение кода JavaScript. Вы можете устранить уязвимость одним из приведенных ниже способов.

Вариант 1. Исключите экспорт уязвимых объектов Activity

Найдите объекты Activity с уязвимыми компонентами WebView. Если объекты Activity не получают объекты Intent от других приложений, вы можете указать для них в файле манифеста параметр android:exported=false. После этого вредоносные приложения не смогут отправлять команды компонентам WebView в этих объектах Activity.

Вариант 2. Защитите компоненты WebView в экспортированных объектах Activity

Если для объекта Activity с уязвимым компонентом WebView необходим экспорт, внесите следующие изменения:

  1. Обновите targetSdkVersion
    Убедитесь, что значение targetSdkVersion соответствует требованиям Google Play к целевому уровню API. Приложения с targetSdkVersion 16 и ниже оценивают URL JavaScript, передаваемые loadUrl, в контексте загруженной страницы. Использование SDK версии 16 или ниже, а также присутствие небезопасных данных от ненадежных объектов Intent при вызове команды loadUrl позволяет злоумышленникам запускать вредоносные скрипты в уязвимых компонентах WebView.
  2. Обезопасьте себя при использовании функции evaluateJavascript
    Убедитесь, что при вызове функции evaluateJavascript используются только надежные параметры. Это не позволит злоумышленникам запускать вредоносные скрипты в уязвимых компонентах WebView.
  3. Исключите небезопасную загрузку файлов
    Запретите уязвимым компонентам WebView загружать базу данных файлов cookie. Компоненты WebView, которые загружают небезопасные URL, начинающиеся с file://, от ненадежных объектов Intent, могут быть атакованы. Вот как выглядит атака: вредоносная веб-страница добавляет в базу данных файлов cookie теги <script>, а затем отправляет объект Intent с URL, начинающимся с file:// и указывающим на базу данных файлов cookie компонента WebView. Если база данных загружена в компонент WebView, запускается вредоносный сценарий, который может привести к утечке информации о сеансе.
    Чтобы запретить уязвимым компонентам WebView загрузку базы данных файлов cookie, отключите доступ ко всем файлам или убедитесь, что все загружаемые URL, начинающиеся с file:// (file:// URLs), указывают на безопасные файлы. Помните, что злоумышленники для маскировки могут использовать символические ссылки (symbolic link). Чтобы предотвратить подобную атаку, проверяйте canonical path всех ненадежных URL, начинающихся с file://, перед загрузкой (а не просто путь URL).

Мы всегда рады помочь!
Если у вас есть вопросы, задайте их, используя тег android-security. Чтобы получить более подробные разъяснения, свяжитесь с командой поддержки для разработчиков.

Эта информация оказалась полезной?
Как можно улучшить эту статью?