Информацията по-долу е предназначена за програмисти на приложения с уязвимост от изпълняване на скриптове между приложения.
Какво се случва
Едно или повече от приложенията ви съдържат проблем, свързан с изпълняването на скриптове между приложения чрез WebView, който може да позволи на злонамерени приложения да откраднат потребителски „бисквитки“ и други данни.Моля, вижте известието в Play Console.След крайните срокове, показани в Play Console, всички приложения, които съдържат уязвимости в сигурността, може да бъдат премахнати от Google Play.
Изисква се действие
- Влезте в профила си в Play Console и преминете към секцията „Сигнали“, за да видите кои приложения са засегнати и крайните срокове за решаване на тези проблеми.
- Актуализирайте засегнатите приложения и отстранете уязвимостта.
- Изпратете актуализираните версии на засегнатите приложения.
Докато заявката ви не бъде прегледана, състоянието на новото ви приложение или актуализацията ще бъде изчаква се публикуване. Ако приложението не е актуализирано правилно, ще продължите да виждате предупреждението.
Допълнителни подробности
Компонентите WebView, които дават възможност за използване на JavaScript и зареждат данни, прочетени от ненадеждни класове Intent, могат да бъдат подведени от злонамерени приложения така, че да изпълнят JavaScript код в опасен контекст. Препоръчваме ви да предотвратите тази уязвимост по един от следните начини:
Опция 1: Ограничете експортирането на засегнатите активности
Намерете обектите Activity със засегнати компоненти WebView. Ако тези Activity не трябва да приемат обекти Intent от други приложения, можете да зададете android:exported=false за въпросните Activity в манифеста. Така злонамерените приложения няма да могат да изпращат опасни параметри до компонентите WebView на съответните активности (Activity).
Опция 2: Защитете елементите WebView в експортираните активности
Ако искате да зададете даден обект Activity със засегнат WebView като експортиран, препоръчваме ви да извършите следните промени:
- Защитете извикванията на evaluateJavascript и loadUrl
Уверете се, че всички параметри, подавани към evaluateJavascript, са надеждни. Извикването на evaluateJavascript посредством непроверени параметри от ненадеждни обекти Intent дава възможност на атакуващите да изпълняват опасни скриптове в засегнатия компонент WebView. Също така извикването на loadUrl с непроверени параметри, които съдържат URL адреси със схема javascript:, дава възможност на атакуващите да изпълняват опасни скриптове.
- Предотвратете зареждането на опасни файлове
Уверете се, че засегнатите WebView не могат да зареждат базата от данни за „бисквитки“.Компонентите WebView, които зареждат непроверени URL адреси от типа file:// от ненадеждни обекти Intent, могат да бъдат атакувани от злонамерени приложения в две стъпки. Първа стъпка: Злонамерена уеб страница може да запише маркери <script> в базата от данни за „бисквитки“. Втора стъпка: Този променен файл в базата от данни за „бисквитки“ може да се зареди, ако злонамерено приложение изпрати Intent с URL адрес от типа file://, който сочи към базата ви от данни за „бисквитки“ за WebView, или ако самата злонамерена уеб страница пренасочва компонента WebView към URL адреса на файла. Злонамереният елемент <script>, който се съхранява в базата от данни за „бисквитки“, ще се зареди и изпълни, при което може да бъде открадната сесийна информация.
Има три начина да попречите на засегнатите компоненти WebView да зареждат базата от данни за „бисквитки“ за WebView.
- Деактивирайте достъпа до всички файлове.
- Уверете се, че WebView зарежда само URL адреси от типа file:// и че зарежданите URL адреси от този тип водят към безопасни файлове. Обърнете внимание, че атакуващ може да използва символична връзка, за да ви подведе при проверката на пътя на URL адреса. За да предотвратите такава атака, преди зареждането на ненадежден URL адрес от типа file:// проверете каноничния му път, а не само пътя на URL адреса.
- Ако искате да разрешите URL адреси с http://, както и такива от типа file://, внедрете потвърждаването на URL адреса със схема file://, като използвате компонентите shouldOverrideUrlLoading и shouldInterceptRequest в WebViewClient. Така се гарантира потвърждаването на всички URL адреси, зареждани в WebView, а не само на тези, предоставяни директно при извикване на функция loadUrl().
На ваше разположение сме
Ако имате технически въпроси относно уязвимостта, можете да ги публикувате в Stack Overflow, като използвате маркера android-security. За разяснение на стъпките за решение на проблема можете да се свържете с екипа ни за поддръжка за програмисти.