Ten artykuł jest przeznaczony dla deweloperów, których aplikacje używają potencjalnie niebezpiecznej implementacji modułu obsługi WebViewClient.onReceivedSslError.
O co chodzi?
Co najmniej jedna z Twoich aplikacji zawiera potencjalnie niebezpieczną implementację modułu obsługi onReceivedSslError, przez co jest ona podatna na ataki typu „man-in-the-middle”. Osoba atakująca może zmienić treść podatnego na takie zagrożenia komponentu WebView, odczytać przesyłane dane (np. dane logowania) i uruchomić kod w aplikacji przy użyciu języka JavaScript. 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
- Zaloguj się w Konsoli Play i przejdź do sekcji Alerty, by sprawdzić, których aplikacji dotyczy problem i jaki jest termin jego rozwiązania.
- Zaktualizuj te aplikacje i usuń lukę w zabezpieczeniach.
- 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
- Aby rozwiązać ten problem, zmień kod aplikacji w taki sposób, by wywoływał metodę SslErrorHandler.proceed(), gdy certyfikat przedstawiony przez serwer jest zgodny z oczekiwaniami, a metodę SslErrorHandler.cancel(), gdy taki nie jest. Podczas sprawdzania poprawności certyfikatu weź pod uwagę te kwestie:
-
Aplikacja może zostać oznaczona, jeśli nie zawiera odpowiednich mechanizmów sprawdzania poprawności certyfikatu. Na przykład samo sprawdzenie wartości zwracanej przez metodę getPrimaryError nie wystarcza do określenia poprawności certyfikatu.
-
Ignorowanie większości błędów SSL zwracanych przez metodę SslError.getPrimaryError nie jest bezpieczne. Pamiętaj, że metoda getPrimaryError zwraca najpoważniejszy błąd w zestawie błędów, więc jeśli
getPrimaryError() != SSL_UNTRUSTED
ma wartość Prawda, zestaw błędów połączenia nadal może zawierać błąd SSL_UNTRUSTED.
-
-
Jeśli używasz biblioteki zewnętrznej, która odpowiada za to działanie, powiadom jej twórców i rozwiąż ten problem razem z nimi.
Więcej informacji o module obsługi błędów SSL znajdziesz w dokumentacji w Centrum pomocy dla deweloperów aplikacji na Androida. Jeśli masz inne pytania techniczne, możesz je opublikować na https://www.stackoverflow.com/questions, używając tagów „android-security” i „SslErrorHandler”.
Te problemy nie muszą pojawić się w każdej aplikacji używającej WebView SSL, ale najlepiej jest na bieżąco wprowadzać wszelkie poprawki zabezpieczeń. Aplikacje z lukami, które narażają użytkowników na zagrożenia, możemy uznać za produkty niebezpieczne z powodu naruszenia naszej Polityki treści oraz punktu 4.4 Umowy dystrybucyjnej dla deweloperów.
Chętnie Ci pomożemy
Jeśli masz pytania techniczne związane z tą luką, 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 dla deweloperów.