15Jul

Poradnik SafetyNet: Dlaczego Android Pay i inne aplikacje nie działają na urządzeniach z dostępem korzennym

Rootowanie urządzenia z systemem Android daje dostęp do szerszej gamy aplikacji i głębszego dostępu do systemu Android. Ale niektóre aplikacje - takie jak Google Android Pay - w ogóle nie działają na zrootowanym urządzeniu.

Google używa czegoś, co nazywa się SafetyNet, aby wykryć, czy twoje urządzenie jest zrootowane i blokuje dostęp do tych funkcji. Google nie jest jedyny - wiele aplikacji firm trzecich również nie działa na zrootowanych urządzeniach z systemem Android, chociaż mogą one sprawdzić obecność root w inny sposób.

SafetyNet: Jak Google wie, że zakorzeniłeś swój telefon z Androidem

Urządzenia z Androidem oferują "SafetyNet API", który jest częścią warstwy Usług Google Play zainstalowanej na urządzeniach z Androidem zatwierdzonych przez Google. Ten interfejs API "zapewnia dostęp do usług Google, które pomagają ocenić zdrowie i bezpieczeństwo urządzenia z systemem Android" - twierdzi Google. Jeśli jesteś programistą systemu Android, możesz wywołać ten interfejs API w swojej aplikacji, aby sprawdzić, czy urządzenie, na którym działasz, zostało zmodyfikowane.

Ten interfejs API SafetyNet ma na celu sprawdzenie, czy urządzenie zostało zmodyfikowane - czy zostało zrootowane przez użytkownika, czy uruchomiło niestandardową ROM, czy też zostało zarażone złośliwym oprogramowaniem niskiego poziomu.

Urządzenia dostarczane z Google Play Store i innymi zainstalowanymi aplikacjami muszą przejść Google Android "Zgodny pakiet testowy".Rootowanie urządzenia lub instalowanie niestandardowej pamięci ROM uniemożliwia urządzeniu "CTS Compatible".W ten sposób interfejs API SafetyNet może stwierdzić, czy użytkownik jest rootowany - sprawdza jedynie kompatybilność z CTS.Podobnie, jeśli otrzymasz urządzenie z Androidem, które nigdy nie pojawiło się w aplikacjach Google - na przykład jeden z tych 20 USD wysyłanych bezpośrednio z fabryki w Chinach - w ogóle nie zostanie uznane za "kompatybilne z CTS", nawet jeśli nie zostało zrootowane.

Aby uzyskać te informacje, Usługi Google Play pobierają program o nazwie "snet" i uruchamiają go w tle na urządzeniu. Program zbiera dane z urządzenia i regularnie wysyła je do Google. Google wykorzystuje te informacje do różnych celów, od uzyskania obrazu szerszego ekosystemu Androida, w celu ustalenia, czy oprogramowanie Twojego urządzenia zostało naruszone. Google nie wyjaśnia dokładnie, czego szuka sNet, ale najprawdopodobniej snet sprawdza, czy partycja systemowa została zmodyfikowana z fabryki.

Możesz sprawdzić stan SafetyNet swojego urządzenia, pobierając aplikację taką jak SafetyNet Helper Sample lub SafetyNet Playground. Aplikacja zapyta usługę SafetyNet Google o stan urządzenia i poinformuje Cię o odpowiedzi uzyskanej z serwera Google.

Aby uzyskać więcej szczegółów technicznych, przeczytaj ten post na blogu autorstwa Johna Kozyrakisa, stratega technicznego w Cigital, firmie zajmującej się bezpieczeństwem oprogramowania. Wkopał się w SafetyNet i wyjaśnia więcej o tym, jak to działa.

To do aplikacji

SafetyNet jest opcjonalne dla twórców aplikacji, a twórcy aplikacji mogą z niego korzystać.SafetyNet tylko uniemożliwia działanie aplikacji, jeśli deweloper aplikacji nie chce, aby działała na zrootowanych urządzeniach.

Większość aplikacji nie sprawdza w ogóle interfejsu SafetyNet API.Nawet aplikacja, która sprawdza interfejs SafetyNet API - tak jak aplikacje testowe powyżej - nie przestaje działać, jeśli otrzyma złą odpowiedź.Programista aplikacji musi sprawdzić interfejs SafetyNet API i uniemożliwić działanie aplikacji, jeśli dowie się, że oprogramowanie Twojego urządzenia zostało zmodyfikowane. Aplikacja Google Pay na Androida to dobry przykład w działaniu.

Android Pay nie działa na urządzeniach z dostępem korzennym

Rozwiązanie płatności mobilnych Google Android Pay nie działa w ogóle na zrootowanych urządzeniach z Androidem. Spróbuj go uruchomić, a zobaczysz komunikat "Nie można użyć Androida Pay".Google nie może zweryfikować, czy Twoje urządzenie lub oprogramowanie na nim działa jest kompatybilne z Androidem. "

Nie chodzi tylko o rootowanie, oczywiście uruchamianie niestandardowej pamięci ROM również naraziłoby Cię na takie wymagania. Interfejs API SafetyNet twierdzi, że nie jest "kompatybilny z Androidem", jeśli używasz niestandardowej pamięci ROM, z której urządzenie nie pochodzi.

Pamiętaj, że to nie tylko wykrywa rootowanie. Jeśli Twoje urządzenie zostało zainfekowane przez niektóre złośliwe oprogramowanie na poziomie systemu, które może szpiegować Androida Pay i inne aplikacje, interfejs API SafetyNet uniemożliwi też działanie Androida Pay, co jest dobrą rzeczą.

Rootowanie urządzenia powoduje złamanie normalnego modelu zabezpieczeń systemu Android. Android Pay zwykle chroni Twoje dane płatności za pomocą funkcji sandboxingu Androida, ale aplikacje mogą wyskoczyć z piaskownicy na zrootowanym urządzeniu. Google nie ma możliwości dowiedzenia się, jak bezpieczny jest Android Pay na określonym urządzeniu, jeśli jest on zrootowany lub działa nieznana niestandardowa pamięć ROM, więc je blokuje. Inżynier Androida Pay wyjaśnił problem na forum programistów XDA, jeśli chcesz dowiedzieć się więcej.

inne sposoby Aplikacje można wykryć głównej

SafetyNet jest tylko jeden sposób aplikacja mogła sprawdzić, czy to działa na ukorzenionych urządzenia. Na przykład urządzenia Samsung zawierają system zabezpieczeń o nazwie KNOX.Jeśli wykorzenisz swoje urządzenie, zadziała bezpieczeństwo KNOX.Samsung Pay, własna aplikacja Samsung do płatności mobilnych, nie będzie działać na zrootowanych urządzeniach. Samsung używa do tego celu KNOX, ale równie dobrze mógłby używać SafetyNet.

Podobnie, wiele aplikacji innych firm zablokuje ci korzystanie z nich, i nie wszystkie z nich korzystają z SafetyNet. Mogą po prostu sprawdzić obecność znanych aplikacji i procesów root na urządzeniu.

Trudno jest znaleźć aktualną listę aplikacji, które nie działają, gdy urządzenie jest zrootowane. Jednak RootCloak zapewnia kilka list. Te listy mogą być nieaktualne, ale są najlepsze, jakie możemy znaleźć.Wiele z nich to aplikacje bankowe i inne mobilne portfele, które blokują dostęp do zrootowanych telefonów, aby chronić dane bankowe przed przechwytywaniem przez inne aplikacje. Aplikacje dla usług strumieniowania wideo może również odmówić funkcjonować na zakorzenione urządzenia jako rodzaj środka DRM, próbując uniemożliwić nagrywanie chronionego strumienia wideo.

Niektóre aplikacje mogą się nabrać

Google gry gry w kotka i myszkę z SafetyNet, stale aktualizując go próbując wyprzedzić ludzi coraz wokół niego. Na przykład twórca Androida Chainfire opracował nową metodę rootowania urządzeń z systemem Android bez modyfikowania partycji systemowej, znanej jako "root bez systemu".SafetyNet początkowo nie wykrył, że takie urządzenia są manipulowane, a Android Pay działał - ale SafetyNet został ostatecznie zaktualizowany, aby wykryć tę nową metodę rootowania. Oznacza to, że Android Pay przestaje działać wraz z systemowym rootem.

W zależności od tego, jak aplikacja sprawdza dostęp roota, możesz go oszukać.Na przykład, istnieją rzekomo metody rootowania niektórych urządzeń Samsung bez wyzwalania zabezpieczeń KNOX, co pozwoliłoby na kontynuowanie korzystania z Samsung Pay.

W przypadku aplikacji, które po prostu sprawdzają aplikacje rootowe w twoim systemie, istnieje Xposed Framework o nazwie RootCloak, który podobno pozwala ci ich oszukać.Działa to w takich aplikacjach jak DirecTV GenieGo Best Buy CinemaNow, a indeks Flixster, które zazwyczaj nie pracują na zakorzenione urządzeń.Jeśli jednak te aplikacje zostałyby zaktualizowane, aby korzystać z sieci bezpieczeństwa Google, nie byłyby tak łatwe do oszukania w ten sposób.

Większość aplikacji będzie działała normalnie po zrootowaniu urządzenia. Aplikacje mobilne do płatności to wielki wyjątek, podobnie jak inne aplikacje bankowe i finansowe. Płatne usługi przesyłania strumieniowego wideo czasami próbują zablokować Ci także możliwość oglądania ich filmów.

Jeśli potrzebna aplikacja nie działa na Twoim zrootowanym urządzeniu, możesz zawsze odinstalować swoje urządzenie, aby z niego korzystać.Aplikacja powinna działać po przywróceniu urządzenia do bezpiecznego stanu fabrycznego.

Image Credit: Danny Choo na Flickr