Как устранить уязвимость к внедрению зависимостей в код JavaScript

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

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

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

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

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

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

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

Этой уязвимости подвержены компоненты WebView, которые добавляют объекты на уровне приложений в код JavaScript с помощью метода addJavascriptInterface и загружают ненадежный веб-контент. В результате могут быть активированы методы с примечанием @JavascriptInterface, что приведет к повреждению или утечке данных, а также к выполнению произвольного кода.

Вы можете устранить уязвимость одним из приведенных ниже способов.

Вариант 1. Убедитесь, что компоненты WebView не добавляют объекты в интерфейс JavaScript

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

 

Исключите вставку объектов с помощью метода addJavascriptInterface.

  1. Удалите объекты из интерфейса JavaScript в shouldInterceptRequest, используя метод removeJavascriptInterface, до загрузки ненадежного контента.

Вариант 2. Исключите загрузку ненадежного контента WebView

Если ваше приложение добавляет объекты в интерфейс JavaScript компонента WebView, убедитесь, что WebView не использует для загрузки веб-контента незашифрованное подключение. Задайте для атрибута android:usesCleartextTraffic значение false или настройте в манифесте конфигурацию Network Security Config, запретив загружать данные по протоколу HTTP. Также вы можете проверить, что ни один класс WebView не загружает контент с использованием схем HTTP через метод loadUrl.


Убедитесь, что WebView с интерфейсом JavaScript не загружают контент из ненадежных источников (например, URL из ненадежных намерений).

Мы всегда готовы помочь

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

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