Як усунути вразливість до зламу через схеми намірів

Ця інформація призначена для розробників, у чиїх додатках є вразливість, що дає змогу зламати їх через схему наміру.

У чому проблема

Принаймні один із ваших додатків містить проблему з обробкою схем намірів, що дає змогу зловмисним мережам і веб-сайтам отримувати доступ до приватних компонентів додатків.Ознайомтеся зі сповіщенням у Play ConsoleПісля кінцевих термінів, указаних у Play Console, додатки з уразливими елементами може бути видалено з Google Play.

Що потрібно зробити

  1. Увійдіть в обліковий запис Play Console і перейдіть у розділ "Сповіщення", щоб переглянути, які додатки уражено та які терміни вирішення цих проблем.

  2. Оновіть уражені додатки, виконавши вказані нижче дії.

  3. Надішліть оновлені версії цих додатків.

Коли ви надішлете оновлені версії, ми знову перевіримо їх. Це може тривати кілька годин. Якщо додаток пройде перевірку та його буде опубліковано, виконувати додаткові дії не потрібно. Якщо додаток не пройде перевірку, його нову версію не буде опубліковано й ви отримаєте відповідне сповіщення електронною поштою.

Додаткова інформація

Компоненти WebView, які переходять на ненадійні веб-ресурси, виконують синтаксичний аналіз посилань намірів (intent://), використовуючи атрибут Intent.parseUri, і надсилають ці наміри через startActivity, є вразливими до зламу через схеми намірів. Зловмисний веб-вміст може обманом надсилати довільні наміри в приватні компоненти додатків. Так можна зламувати додатки (наприклад, викрадати приватні дані, до яких ці компоненти мають доступ). Зверніть увагу, що ненадійним також вважається вміст із надійних доменів, який завантажується через HTTP.

Радимо усунути цю загрозу одним із перелічених нижче способів.

Варіант 1. Переконайтеся, що компоненти WebView не можуть надсилати довільні наміри

Додатки можна обмежити так, щоб вони отримувати у свої компоненти лише нецільові наміри, створені за допомогою Intent.parseUri, використовуючи фільтри намірів BROWSABLE. Ось код для цього:

     // convert Intent scheme URL to Intent object
  Intent intent = Intent.parseUri(url);
  // forbid launching activities without BROWSABLE category
  intent.addCategory("android.intent.category.BROWSABLE");
  // forbid explicit call
  intent.setComponent(null);
  // forbid Intent with selector Intent
  intent.setSelector(null);
  // start the activity by the Intent
  view.getContext().startActivity(intent, -1);

Варіант 2. Переконайтеся, що компоненти WebView не завантажують ненадійний веб-вміст

Якщо компоненту WebView потрібно виконувати синтаксичний аналіз URL-адрес із довільними схемами намірів, переконайтеся, що він не завантажує ненадійний веб-вміст (зокрема, через незашифроване з’єднання). Розробники можуть указати у файлі Manifest значення false для атрибута android:usesCleartextTraffic або налаштувати функцію Network Security Config, що забороняє трафік HTTP. Крім того, можна перевірити, чи вражені компоненти WebView не завантажують URL-адреси зі схемами HTTP через атрибут loadUrl.

Радимо переконатися, що вражені компоненти WebView не завантажують необмежені URL-адреси, отримані з ненадійних джерел (наприклад, URL-адреси з ненадійних намірів). 

Ми завжди раді допомогти
Якщо у вас є інші технічні запитання про вразливості, опублікуйте їх на сайті Stack Overflow з тегом android-security. Щоб дізнатися більше про дії для вирішення цієї проблеми, зв’яжіться зі службою підтримки розробників.

false
Головне меню
15313081133422365416
true
Пошук у довідковому центрі
true
true
true
true
true
5016068
false
false