Te informacje są przeznaczone dla deweloperów aplikacji, które zawierają lukę w zabezpieczeniach związaną z intencją ogólną PendingIntent.
O co chodzi?
W co najmniej 1 z Twoich aplikacji występuje problem dotyczący intencji ogólnej PendingIntent, który może stanowić zagrożenie dla bezpieczeństwa i umożliwiać np. ataki typu DoS, kradzież danych osobistych oraz eskalację uprawnień. Aby rozwiązać ten problem, wykonaj dokładnie podane niżej czynności. Miejsca wystąpienia intencji ogólnej PendingIntent w Twojej aplikacji znajdziesz w powiadomieniu z Konsoli Play dotyczącym Twojej aplikacji. Jeśli lokalizacja kończy się fragmentem „(w kodzie ładowanym dynamicznie)”, oznacza to, że znajduje się w kodzie dynamicznie ładowanym przez aplikację lub biblioteki używane przez aplikację. Aplikacje zwykle korzystają z kodu ładowanego dynamicznie podczas dostarczania funkcji na żądanie, ale istnieją także inne niezalecane techniki (niektóre z nich naruszają zasady Google Play i nie należy ich używać). Również programy pakujące mogą przekształcać kod aplikacji w kod ładowany dynamicznie.
Rozwiązanie tego problemu jest zalecane, ale nie obowiązkowe. Ten problem nie będzie mieć wpływu na stan opublikowania Twojej aplikacji.
Dodatkowe szczegóły
Aplikacje na Androida wysyłają wiadomości między komponentami za pomocą intencji. Intencje mogą określać komponent docelowy (intencja bezpośrednia) lub podać ogólne działanie i pozwolić systemowi operacyjnemu przekazać intencję do dowolnego komponentu na urządzeniu, które rejestruje filtr intencji pasujący do tego działania (intencja ogólna).
PendingIntent to intencja, która została przekazana do innej aplikacji i zostanie dostarczona w przyszłości. Utworzenie intencji ogólnej w intencji PendingIntent stanowi lukę w zabezpieczeniach, która może umożliwiać ataki typu DoS, kradzież danych osobowych i eskalację uprawnień.
Dalsze kroki
1. Zaktualizuj aplikację i rozwiąż problem zgłaszany przez alerty na temat ogólnej intencji PendingIntent, wykonując czynności opisane poniżej.
Znajdź w aplikacji miejsce, w którym jest tworzona intencja PendingIntent. Na przykład ten kod tworzy intencję ogólną w intencji PendingIntent:
// Utworzenie podstawowej intencji ogólnej i umieszczenie jej w intencji PendingIntent
Intent base = new Intent("ACTION_FOO");
base.setPackage("some_package");
PendingIntent pi = PendingIntent.getService(this, 0, base, 0);
Aby naprawić lukę w zabezpieczeniach, należy skorzystać z jednego (a najlepiej wszystkich) z poniższych sposobów zalecanych przez Google:
- Upewnienie się, że działanie, pakiet oraz pola komponentu podstawowej intencji są ustawione.
- Upewnienie się, że intencja PendingIntent zostanie dostarczona tylko do zaufanych komponentów.
- Użycie flagi FLAG_IMMUTABLE (dodanej w SDK 23) do tworzenia intencji PendingIntent. Uniemożliwi to aplikacjom, które otrzymują intencje PendingIntent, wypełnianie brakujących właściwości. Jeśli aplikacja działa też na urządzeniach z pakietem SDK 22 lub starszym, deweloperzy powinni skorzystać z jednego z poprzednich rozwiązań i wzmocnić utworzoną intencję PendingIntent w ten sposób:
if (android.os.Build.VERSION.SDK_INT >= 23) {
// Utworzenie intencji PendingIntent za pomocą flagi FLAG_IMMUTABLE
} else {
// Dotychczasowy kod tworzący intencję PendingIntent
}
2. Prześlij zaktualizowany plik APK
Aby przesłać zaktualizowany pakiet aplikacji lub plik APK:
- Otwórz Konsolę Play.
- Wybierz aplikację.
- Otwórz Eksploratora pakietów aplikacji.
- W prawym górnym menu wybierz wersję aplikacji powiązaną z naruszającym zasady pakietem aplikacji lub plikiem APK i sprawdź, w których wersjach produkcyjnych jest ona dostępna.
- Przejdź do ścieżki, która jest niezgodna z zasadami. Będzie to jedna z tych 4 stron: Test wewnętrzny, Test zamknięty, Test otwarty lub Produkcyjna.
- W prawym górnym rogu strony kliknij Utwórz nową wersję. Możliwe, że trzeba będzie najpierw kliknąć Zarządzaj ścieżką.
- Jeśli wersja pliku APK naruszającego zasady jest w wersji roboczej, odrzuć ją.
- Dodaj zgodne z zasadami wersje pakietów aplikacji lub plików APK.
- Sprawdź, czy niezgodna z zasadami wersja pakietów aplikacji lub plików APK jest w sekcji Nieuwzględnione w tej wersji produkcyjnej. Dodatkowe wskazówki znajdziesz w sekcji „Nieuwzględnione (pakiety aplikacji i pliki APK)” w tym artykule pomocy na temat Konsoli Play.
- Aby zapisać zmiany wprowadzone w wersji, kliknij Zapisz.
- Gdy skończysz przygotowywać wersję, kliknij Sprawdzanie wersji.
Jeśli niezgodny z zasadami plik APK jest wdrożony na wielu ścieżkach, na każdej z nich powtórz kroki 5–9.
Do czasu rozpatrzenia Twojego zgłoszenia nowa aplikacja lub jej aktualizacja będzie miała status W trakcie sprawdzania. Jeśli aplikacja nie została poprawnie zaktualizowana, ostrzeżenie nadal będzie się pojawiać.
Chętnie Ci pomożemy
Jeśli masz pytania techniczne związane z tą luką w zabezpieczeniach, możesz je opublikować na stronie Stack Overflow, używając tagu „android-security”. Jeśli potrzebujesz wyjaśnienia czynności niezbędnych do rozwiązania tego problemu, skontaktuj się z naszym zespołem pomocy.