Jak naprawić lukę w zabezpieczeniach przed wstrzykiwaniem fragmentów kodu

Te informacje są przeznaczone dla programistów aplikacji, które wykorzystują niebezpieczną implementację klas PreferenceActivity, co sprawia, że są narażone na wstrzykiwanie fragmentów kodu. Taka implementacja może zezwalać złośliwym aplikacjom zewnętrznym na ładowanie fragmentów kodu, które powinny być prywatne.

O co chodzi?

Od 1 marca 2017 roku Google Play blokuje publikowanie nowych aplikacji i aktualizacji, w których klasy PreferenceActivity mogą być podatne na wstrzyknięcie fragmentu kodu. 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 te aplikacje i usuń lukę w zabezpieczeniach.
  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

Tam, gdzie to możliwe, dla klasy PreferenceActivity w pliku manifestu ustaw exported=false. Uniemożliwi to obcym aplikacjom wysyłanie intencji do tej klasy.

Jeśli musisz wyeksportować klasę PreferenceActivity z lukami w zabezpieczeniach do obcych aplikacji, sprawdź, co jest przyczyną luk i podejmij odpowiednie działania. Są dwie możliwości:

  1. Nieprawidłowa implementacja isValidFragment:

Sprawdź, czy klasa z lukami w zabezpieczeniach zawiera lub dziedziczy implementację zbioru isValidFragment, który zwraca wartości „prawda” we wszystkich ścieżkach kodu. Jeśli tak jest, zaktualizuj klasę, by sprawdzana była lista dopuszczalnych klas fragmentów. Na przykład, jeśli PreferenceActivity zezwala na klasy MyFragment, a na inne nie, zaimplementuj kontrolę w ten sposób:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. Wartość targetSdkVersion jest mniejsza niż 19 i nie zawiera implementacji zbioru isValidFragment:

Jeśli aplikacja obecnie ustawia wartość targetSdkVersion na mniejszą niż 19 w pliku manifestu, a klasa z luką w zabezpieczeniach nie zawiera implementacji zbioru isValidFragment, oznacza to, że luka jest dziedziczona z klasy PreferenceActivity.

Aby to naprawić, programiści powinni zaktualizować targetSdkVersion do wersji 19 lub wyższej. Jeśli nie można zaktualizować wersji targetSdkVersion, należy zaimplementować zbiór isValidFragment w sposób opisany w punkcie 1, by sprawdzane były dopuszczalne klasy fragmentów.

Pamiętaj, że aplikacje muszą być też zgodne z Umową dystrybucyjną dla deweloperów i Polityką treści

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 potrzebnych 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
15725124919601995019
true
Wyszukaj w Centrum pomocy
true
true
true
true
true
5016068
false
false