Rootowanie urządzenia z Androidem 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.
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ą w ocenie zdrowia i bezpieczeństwa 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 - niezależnie od tego, czy zostało zrootowane przez użytkownika, czy uruchomiło niestandardową pamięć ROM, czy też zostało zarażone złośliwym oprogramowaniem niskiego poziomu.
Urządzenia, które są dostarczane z Google Play Store i innymi zainstalowanymi aplikacjami, muszą przejść Google Android "Compatibility Test Suite". 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 było dostarczane z aplikacjami 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.
SafetyNet jest opcjonalny 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.
System płatności mobilnych Google Android Pay nie działa 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 działające na nim oprogramowanie jest kompatybilne z Androidem. "
Nie chodzi tylko o ukorzenienie, oczywiście uruchomienie 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ą.
Zrootowanie urządzenia powoduje złamanie normalnego modelu zabezpieczeń Androida. 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.
SafetyNet to tylko jeden ze sposobów, w jaki aplikacja może sprawdzić, czy działa na zrootowanym urządzeniu. 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, a nie wszystkie z nich korzystają z SafetyNet. Mogą po prostu sprawdzić obecność znanych aplikacji i procesów root na urządzeniu.
Trudno 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 do strumieniowej transmisji wideo mogą również odmówić działania na urządzeniu zrootowanym jako pewnego rodzaju środek DRM, próbując uniemożliwić nagrywanie chronionego strumienia wideo.
Google gra w kotka i myszkę z SafetyNet, nieustannie aktualizując go, starając się wyprzedzić ludzi, którzy się nim rządzą. 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 z aplikacjami takimi jak DirecTV GenieGo, Best Buy CinemaNow i Movies by Flixster, które zwykle nie działają na zrootowanych urządzeniach. 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ć 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