Отстраняване на уязвимост от типа „косвен PendingIntent“

Тази информация е предназначена за програмисти, чиито приложения съдържат уязвимост от типа „косвен PendingIntent“.

Какво се случва

Едно или повече от приложенията ви съдържат проблем от типа „косвен PendingIntent“. Това може да доведе до заплахи за сигурността под формата на отказ от обслужване, кражба на лични данни и получаване на по-големи права. Моля, прегледайте подробните стъпки по-долу, за да отстраните проблема.Местоположенията в приложението ви, в които се използва косвен PendingIntent, могат да бъдат намерени в известието за него в Play Console. Ако местоположението завършва с „(в динамично зареждан код)“, то е в код, който се зарежда динамично от приложението или от библиотеките, които то използва. Приложенията обикновено използват динамично зареждан код чрез услугата за доставяне на функции при поискване, но съществуват други непрепоръчителни техники (някои непрепоръчителни техники също така нарушават правилата на Google Play и не бива да се използват). Освен това програмите за пакетиране могат да трансформират кода на приложението в динамично зареждан код.

Решаването на този проблем се препоръчва, но не е задължително. Състоянието на публикуване на приложението ви няма да бъде засегнато от наличието на този проблем.

Допълнителни подробности

Приложенията за Android изпращат съобщения между компонентите посредством намерения. Тези намерения служат или за определяне на целевия компонент (явно намерение), или за посочване на общо действие, в който случай операционната система доставя намерението до даден компонент на устройството, който регистрира филтър за намерение, съответстващ на това действие (косвено намерение).

PendingIntent представлява намерение, делегирано на друго приложение, за да бъде доставено в бъдещ момент. Създаването на косвено намерение, вложено в PendingIntent, е уязвимост в сигурността, която може да доведе до отказ от обслужване, кражба на лични данни и получаване на по-големи права.

Следващи стъпки

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 да се доставя само до надеждни компоненти.
  • Да използват FLAG_IMMUTABLE (добавено във версия 23 на SDK) за създаване на PendingIntent. Това не позволява на приложенията, получили PendingIntent, да попълват празни свойства. В случай че приложението се изпълнява и на устройства с версия 22 (или по-стара) на SDK, препоръчваме на програмистите да извършат горепосочените действия, като същевременно подсилят създаването на PendingIntent със следния образец:

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

  // Създаване на PendingIntent посредством FLAG_IMMUTABLE

} else {

  // Съществуващ код, който създава PendingIntent

}

2. Изпратете актуализирания APK файл.

За да изпратите актуализиран пакет с приложения или APK файл:

  1. Отворете Play Console.
  2. Изберете приложението.
  3. Отворете инструмента за разглеждане на Android App Bundle.
  4. От падащото меню горе вдясно изберете версията на приложението с неспазващ правилата APK файл/Android App Bundle и запишете в кои версии се среща.
  5. Отворете канала, в който е проблемът с правилата. Това ще бъде една от следните 4 страници: „Вътрешно тестване“, „Затворено тестване“, „Отворено тестване“ или „Стандартен Канал“.
  6. Горе вдясно на страницата кликнете върху Създаване на нова версия. (Може да се наложи първо да кликнете върху „Управление на канала“.)
    • Ако версията с нарушаващия правилата APK файл е в състояние на чернова, отхвърлете я.
  7. Добавете спазващите правилата пакети с приложения или APK файлове.
    • Уверете се, че пакетите с приложения и APK файловете, които не спазват правилата, са в секцията Невключени на съответната версия. За допълнителни указания разгледайте секцията „Невключени (пакети с приложения и APK файлове)“ в тази помощна статия за Play Console.
  8. За да запазите промените, които направите във версията си, изберете Запазване.
  9. Когато приключите с подготвянето на версията си, изберете Преглед на публикуваната версия.

Ако неспазващият правилата APK файл е публикуван в няколко канала, повторете стъпки от 5 до 9 за всеки от тях.

Докато заявката ви не бъде прегледана, състоянието на новото ви приложение или актуализацията ще бъде В процес на преглеждане. Ако приложението не е актуализирано правилно, ще продължите да виждате предупреждението.

На ваше разположение сме

Ако имате технически въпроси относно уязвимостта, можете да ги публикувате в Stack Overflow, като използвате маркера android-security. За разяснение на стъпките, които трябва да изпълните, за да решите проблема, можете да се свържете с екипа ни за поддръжка.

false
Главно меню
656174923636065715
true
Търсене в Помощния център
true
true
true
true
true
5016068
false
false