Як усунути загрозу безпеці через неявний намір PendingIntent

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

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

Принаймні один із ваших додатків містить проблему з неявним наміром PendingIntent, що може спричиняти загрози безпеці у формі DoS-атак, викрадення персональних даних і розширення прав. Нижче докладно описано, як вирішити таку проблему. З відповідного сповіщення Play Console можна з’ясувати, де саме в додатку використовуються неявні наміри PendingIntent. Якщо це місце закінчується на "(у динамічно завантажуваному коді)", це означає, що воно в коді, який динамічно завантажується додатком або бібліотеками, що використовуються в додатку. Зазвичай додатки використовують динамічно завантажуваний код через доставку за запитом, хоча є інші нерекомендовані способи (деякі нерекомендовані способи також порушують правила Google Play, і їх не можна використовувати). Крім того, пакувальники можуть перетворювати код додатка на динамічно завантажуваний код.

Ми рекомендуємо вирішити цю проблему, але це не обов’язково. Її наявність не вплине на статус публікації вашого додатка.

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

Додатки Android надсилають повідомлення між компонентами за допомогою намірів. У намірі може бути вказано цільовий компонент (явний намір) або загальну дію з дозволом операційній системі доставляти намір у будь-який компонент на пристрої, що зареєструє фільтр намірів, який відповідає такій дії (неявний намір).

Намірами PendingIntent називають наміри, делеговані іншому додатку для доставки в майбутньому. Група неявних намірів PendingIntent створює загрозу безпеці, що може призводити до DoS-атак, викрадення персональних даних і розширення прав

Подальші дії

1. Оновіть додаток і виконайте наведені нижче дії, щоб сповіщення "Неявний намір PendingIntent" більше не з’являлися.

Знайдіть місце у своєму додатку, де створено намір PendingIntent. Наприклад, наведений нижче код створює намір PendingIntent, що містить неявний намір.

// Створення неявного базового наміру й групування його в намір PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google радить розробникам усунути цю загрозу безпеці, виконавши будь-які (а краще – усі) перелічені нижче дії.

  • Переконайтеся, що задано дію, пакет і компонент базового наміру.
  • Переконайтеся, що намір PendingIntent доставляється лише довіреним компонентам.
  • Створюйте наміри PendingIntent за допомогою FLAG_IMMUTABLE (додано в SDK 23). У такому разі додатки, що отримують PendingIntent, не зможуть заповнювати пусті властивості. Якщо додаток використовується також на пристроях з SDK 22 або старішої версії, радимо розробникам застосовувати попередні налаштування, водночас підвищуючи надійність створюваного наміру PendingIntent за допомогою такого коду:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // Створення наміру PendingIntent за допомогою FLAG_IMMUTABLE

} else {

  // Наявний код, що створює намір PendingIntent

}

2. Надішліть оновлений файл APK.

Щоб надіслати оновлений набір App Bundle або файл APK:

  1. Відкрийте Play Console.
  2. Виберіть потрібний додаток.
  3. Відкрийте App Bundle Explorer.
  4. У спадному меню вгорі праворуч виберіть APK або набір App Bundle, що не відповідає правилам. Зверніть увагу, до яких випусків вони належать.
  5. Перейдіть до версії, де виявлено порушення правил. Це може бути одна з 4 сторінок: "Внутрішнє тестування", "Закрите тестування", "Відкрите тестування" або "Робоча версія".
  6. Угорі праворуч натисніть Створити новий випуск. Можливо, спочатку знадобиться натиснути "Керувати версією".
    • Якщо випуск із файлом APK, який порушує правила, має статус чернетки, видаліть такий випуск.
  7. Додайте версію наборів App Bundle або файлів APK, що відповідає правилам.
    • Переконайтеся, що версія наборів App Bundle або файлів APK, яка не відповідає правилам, міститься в розділі Не включено такого випуску. Щоб дізнатися більше, прочитайте розділ "Не включено (набори App Bundle і файли APK)" цієї статті Довідкового центру Play Console.
  8. Щоб зберегти зміни випуску, натисніть Зберегти.
  9. Коли ви підготуєте додаток до випуску, виберіть Перевірити випуск.

Якщо файл APK, який не відповідає правилам, випущено для кількох версій, повторіть пункти 5–9 для кожної з них.

Доки запит не буде розглянуто, ваш новий додаток або його оновлення матиме статус Перевіряється. Якщо додаток оновлено неправильно, ви й надалі бачитимете застереження.

Ми завжди раді допомогти

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

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