Zapobieganie podatności na przejęcie schematu intencji

Te informacje są przeznaczone dla twórców aplikacji, które zawierają lukę w zabezpieczeniach umożliwiającą przejęcie schematu intencji.

O co chodzi?

W co najmniej jednej z Twoich aplikacji występuje ryzyko przejęcia schematu intencji, co może umożliwiać złośliwym sieciom i witrynom dostęp do prywatnych komponentów aplikacji.Zapoznaj się z powiadomieniem w Konsoli Play. Po przekroczeniu terminów wskazanych w Konsoli Play wszystkie aplikacje z lukami w zabezpieczeniach mogą zostać usunięte z Google Play.

Wymagane działania

  1. Zaloguj się w Konsoli Play i przejdź do sekcji Alerty, by sprawdzić, których aplikacji dotyczy problem i jaki jest termin jego rozwiązania.

  2. Zaktualizuj aplikacje, których dotyczy problem, w sposób opisany poniżej.

  3. Prześlij zaktualizowane wersje tych aplikacji.

Po ponownym przesłaniu aplikacja zostanie jeszcze raz sprawdzona. Ten proces może potrwać kilka godzin. Jeśli aplikacja pomyślnie przejdzie weryfikację i zostanie opublikowana, nie musisz już nic robić. Jeśli wynik weryfikacji nie będzie pomyślny, nowa wersja aplikacji nie zostanie opublikowana, a Ty otrzymasz powiadomienie e-mailem.

Dodatkowe szczegóły

Komponenty WebView, które odwiedzają niezaufane treści internetowe, analizują linki intent:// za pomocą metody Intent.parseUri i wysyłają te intencje, korzystając z metody startActivity, są podatne na ryzyko przejęcia schematu intencji. Złośliwe treści internetowe mogą zmusić komponenty WebView do wysyłania dowolnych intencji do komponentów prywatnych aplikacji. Może to umożliwić atak na aplikację, na przykład kradzież prywatnych danych, którymi manipulują takie komponenty. Pamiętaj, że do niezaufanych treści internetowych zalicza się treści pochodzące z zaufanych domen wczytywane przez protokół HTTP.

Aby zabezpieczyć aplikacje przed atakiem wykorzystującym tę lukę, skorzystaj z jednego z tych rozwiązań:

Opcja 1. Upewnij się, że komponenty WebView nie mogą wysyłać dowolnych intencji

Aplikacje mogą ograniczać intencje tworzone za pomocą metody Intent.parseUri, by możliwe było ich wysyłanie tylko jako domniemanych intencji do komponentów objętych działaniem filtrów intencji BROWSABLE. Trzeba tylko użyć w aplikacjach tego kodu:

     // 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);

Opcja 2. Upewnij się, że komponenty WebView, których dotyczy problem, nie wczytują niezaufanych treści internetowych

Jeśli komponent WebView musi analizować adresy URL dowolnych schematów intent://, upewnij się, że nie może wczytywać niezaufanych treści internetowych. Takie dane zawierają treści internetowe wczytywane przez nieszyfrowane połączenie. Deweloperzy mogą ustawić w pliku manifestu atrybut android:usesCleartextTraffic na wartość „false” lub skonfigurować zabezpieczenia sieciowe, które zablokują ruch HTTP. Zamiast tego mogą też zadbać o to, by żadne komponenty WebView, których dotyczy ta luka, nie wczytywały adresów URL ze schematami HTTP przez metodę loadUrl.

Deweloperzy powinni się również upewnić, że komponenty WebView, których dotyczy problem, nie wczytują nieobjętych żadnymi ograniczeniami adresów URL uzyskanych z niezaufanych źródeł (np. adresów URL uzyskanych z niezaufanych intencji). 

Chętnie Ci pomożemy
Jeśli masz pytania techniczne związane z tą luką w zabezpieczeniach, możesz je opublikować na 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 dla deweloperów.

Czy to było pomocne?

Jak możemy ją poprawić?
false
Aplikacje Google
Menu główne
6899465433622825205
true
Wyszukaj w Centrum pomocy
true
true
true
true
true
5016068
false
false