Uprawnienia aplikacji w Androidzie - zagrożenie czy konieczność. Pytamy deweloperów
Niemal każda aplikacja, którą zainstalujemy na Androidzie natychmiast po uruchomieniu poprosi nas o przyznanie dziesiątek uprawnień. Dostęp do aplikacji telefonu, dostęp do danych z naszych kont, dostęp do systemu plików, dostęp do opcji nagrywania, dostęp do aparatu czy dostęp do internetu. Często zgadzamy się na to z bólem serca, czasem w ogóle tego nie czytamy, a jeszcze czasem oburzamy się na to, czego wymagają od nas deweloperzy. Jak jednak wygląda to od drugiej strony? Czy faktycznie programiści chcą od nas zbyt wiele czy po prostu nie mają wyboru?
Aby nie zgadywać i nie snuć kolejnych teorii na ten temat, postanowiliśmy zapytać się samych zainteresowanych – programistów, którzy na co dzień muszą zmagać się właśnie z takim problemem – dobraniem uprawnień wystarczających do poprawnego działania ich aplikacji, ale jednocześnie nie wzbudzających podejrzeń czy wręcz niechęci u klientów.
Problem nie tylko użytkowników
Wierzcie lub nie, ale programiści również nie zawsze są zachwyceni obecnym systemem wymagania i przyznawania uprawnień dla tworzonych przez siebie aplikacji dla Androida. Po latach obecności systemu Google na rynku i licznych problemach z bezpieczeństwem oraz prywatnością, użytkownicy (zarówno ci młodsi, jak i starsi stażem) podchodzą w sporej części przypadku do wymaganych uprawnień bardzo ostrożnie. Czasem nawet do tego stopnia, że widząc aplikację wymagającą większego niż przeciętnie dostępu do danych w naszym telefonie, nawet jeśli wszystkie te elementy są niezbędne do jej prawidłowego działania, potrafią ją natychmiast odinstalować, wystawić jej jedną gwiazdkę, a całość ozdobić komentarzem sugerującym, że autor zamierza kraść informacje przechowywane w smartfonie.
Problem nie występuje oczywiście zawsze, choć wątpliwości użytkownicy nie mają praktycznie wyłącznie w przypadku programów, które po prostu nie wymagają zbyt wielu uprawnień. Chociażby polska aplikacja Krome potrzebuje właściwie tylko dostępu do internetu i możliwości zapisu plików na dysku telefonu. Jej autor, Damian Piwowarski, przyznaje, że jeszcze nigdy nie miał w związku z tym żadnych skarg od klientów, choć przewrażliwienie na punkcie poufności danych i tym razem dało się we znaki i kwestionowane było chociażby wykorzystanie własnego serwera jako pośrednika przy połączeniu. Trzeba przy tym pamiętać, że w internecie informacje, nawet te nieprawdziwe i niepotwierdzone rozchodzą się błyskawicznie i rzadko kiedy jest faktyczna szansa na prawidłowe wyjaśnienie sprawy. Rzućmy, zwłaszcza w przypadku Androida, w sieć informację, że program XYZ ma takie i takie uprawnienia, które umożliwiają (nawet jeśli to nieprawda) śledzenie nas czy kradzież danych i zobaczmy, jak szybko zrobi się o tym głośno. Łatwo jest przylepić odpowiednią „łatkę” aplikacji – dużo trudniej jest ją potem zdjąć.
Jak słusznie zwraca uwagę Przemysław Baraniak, twórca m.in. serii efektownych widgetów dla Androida, takie nieporozumienia mogą doprowadzić do znacznego obniżenia ogólnej oceny programu, a co za tym idzie – spadku w rankingach wyszukiwania i docelowo nawet do częściowej lub całkowitej śmierci aplikacji, która po prostu przestanie się sprzedawać.
Czy jednak problem leży tylko w przewrażliwionych użytkownikach albo w programistach, którzy wymagają od nich za dużo? A może winny jest tutaj jeszcze ktoś inny?
Nie ma ideałów
Jeśli poszukujemy trzeciej strony w tym sporze to powinniśmy znaleźć ją bez problemu – jest nią oczywiście Android, wymagający od użytkownika przy każdej instalacji przyznania odpowiednich pozwoleń, a na programistach wymuszający stworzenie ich odpowiedniej listy. I jak każdy system, nie jest on idealny.
W założeniu, z uwagi na ogromną otwartość OS od Google, uprawnienia miały zapewnić klientom pełną kontrolę nad tym, co mogą zrobić aplikacje instalowane na ich smartfonach. W praktyce jednak często prowadzi to do pomyłek, niesłusznych oskarżeń i niedomówień. Powodów jest przy tym sporo – wystarczy zacząć od tego, że programy naprawdę zaawansowane, współpracujące z innymi programami czy serwisami, z oczywistych powodów wymagają dostępu do wielu elementów systemu, a co za tym idzie, wielu pozycji z listy uprawnień. Już na sam widok takiego obszernego spisu można nabrać podejrzeń, tym bardziej, jeśli niektóre z podpunktów brzmią naprawdę przerażająco. Nie zawsze też można na pierwszy rzut oka określić, czy aplikacja jest faktycznie prosta czy też może jednak rozbudowana, a lista uprawnień niekoniecznie nam w tym pomoże. Mogłoby się wydawać, że omawiany niedawno komunikator Facebooka jest banalnym programem, jednak w rzeczywistości wcale tak nie jest.
Przy tym wszystkim niektóre z groźnie brzmiących uprawnień niekoniecznie są aż tak groźne, jak mogłoby się nam wydawać, a teoretycznie bezpieczne mogą okazać się dla nas potencjalnie zgubne.
O co tu właściwie chodzi?
Twórcy z Mountain View postarali się, aby każda opcja, którą akceptujemy podczas instalacji była opisana w języku, który można określić jako „nietechniczny” i by był ją w stanie zrozumieć przeciętny posiadacz telefonu z Androidem. I choć często efekt jest dobry, nie zawsze jest tak, jak powinno być, co częściowo wynika z nieprecyzyjnych, czasem nawet mocno przesadzonych opisów, a z drugiej strony z faktu, że uprawnienia przeważnie obejmują zbyt wiele elementów systemu.
Definicje uprawnień przeważnie brzmią groźnie i, zawsze kiedy chodzi o bezpieczeństwo naszych danych, tak właśnie powinny brzmieć. Problem jedynie w tym, że nie zawsze oddają dokładnie to, co powinny i zdają się aż do przesady straszyć użytkownika. Dla RECORD_AUDIO, zarówno w angielskiej, jak i w polskiej wersji systemu jest używane słowo „nagrywać” – powiedział nam Maciej Wilczyński, odpowiedzialny za stworzenie m.in. popularnego QuickSocial – To uprawnienie używane jest jednak zawsze, jeśli chcemy skorzystać z mikrofonu, nawet jeśli tego, co usłyszymy, nie nagramy. Z tego typu zezwolenia korzysta chociażby mobilna wersja przeglądarki Mozilli. Po co jednak przeglądarka miałaby nas nagrywać (teoretycznie w każdej chwili?). Po nic, mobilny FireFox potrzebuje mikrofonu jedynie wtedy, kiedy prowadzimy rozmowę z wykorzystaniem standardu WebRTC. Nic z tego co powiemy nie jest zapisywane w pamięci naszego telefonu.
Innym przykładem może być tutaj chociażby pozycja „Pozwalaj aplikacjom na zmienianie ustawień systemu” z dodatkowym ostrzeżeniem o tym, że złośliwe aplikacje mogą wykorzystać to zezwolenie do uszkodzenia systemu. Brzmi to bardzo groźnie, ale w przypadku jednego z projektów Przemysława Baraniaka było ono potrzebne jedynie do tego, aby program był w stanie zmienić… poziom podświetlenia wyświetlacza. W tym momencie pojawia się pytanie, czy jeśli użytkownik szuka teoretycznie prostego pod względem funkcjonalnym oprogramowania i spotka się z tego typu komunikatem, nie zdecyduje się z niego jednak zrezygnować, właśnie ze względu na tak wyraźne ostrzeżenie?
Czasem ich zakres potrafi zmienić się (dla tej samej aplikacji) z wydania Androida na wydanie, co może nieco zaskoczyć użytkownika. Baraniak zwraca tutaj uwagę chociażby na fakt, że Android 4.4 do dostępu do listy dzwonków i alarmów wymaga uprawnień do „Odczytywania zawartości pamięci USB”. W przypadku, gdy stworzymy np. prosty budzik i z dnia na dzień zacznie on wymagać od użytkowników nowych uprawnień bez zmiany zasadniczej funkcjonalności, od razu może trafić na listę podejrzanych.
Android zyskał swego czasu miano niezbyt bezpiecznego systemu, Google postanowiło z tym powalczyć i w efekcie przed pierwszym uruchomieniem, po przeczytaniu obszernej listy groźnie brzmiących zezwoleń, jeszcze długo możemy zastanawiać się, czy faktycznie potrzebujemy tej aplikacji, czy może znajdziemy dla niej alternatywę z mniejszą liczbą wymaganych zezwoleń. Nie można takiego podejścia traktować jako całkowicie złego – w końcu lepiej być wcześniej uprzedzonym, że program może nas np. narazić na dodatkowe koszty, niż potem żałować. Tylko dlaczego nie da się tego zrobić w nieco inny sposób?
Zbyt ogólnie czy zbyt szczegółowo?
W zależności od tego, o dostępie do których elementów systemu mówimy, możemy napotkać kolejne problemy. Praktycznie każdy programista, które poprosiliśmy o opinię stwierdził, że część uprawnień obejmuje zdecydowanie zbyt wiele zezwoleń i powinno się w nich dokonać kolejnych podziałów i „rozdrobnienia”. W obecnej formie budzą one po prostu zbyt wiele wątpliwości u użytkowników, a nieprecyzyjne lub zbyt ogólne opisy wcale nie pomagają. Dobrym przykładem jest tutaj problem z komunikatorem czy samą aplikacją główną Facebooka, której uprawnienia do nagrywania dźwięku „w dowolnym momencie, bez potwierdzenia ze strony użytkownika” wzbudziły ogromne wątpliwości.
Z tym samym problemem borykają się jednak wszyscy, którzy potrzebują mikrofonu. Skype? Oczywiście było o to swego czasu zamieszanie. Opera? Chrome? Groupon? Także. Przykłady można mnożyć i włączyć do tej listy praktycznie wszystkie aplikacje, które wymagają od nas komunikacji głosowej. Czy nie warto byłoby zmienić tego zezwolenia lub opisać je w bardziej przystępny sposób? Trudno się dziwić osobom, które nie chcą, aby aplikacja mogła (nawet jeśli wcale tego nie zrobi i nawet jeśli faktycznie tego nie potrafi) nagrywać ich w dowolnym momencie.
Z drugiej strony, niektóre pozycje są aż zbyt szczegółowo rozdzielone, pomimo tego, że praktycznie zawsze występują w parach i nie ma zbyt wielkiego znaczenia, czy korzystamy z jednej z nich czy ze wszystkich. Przykładowo popularny Pocket wymaga pełnego dostępu do sieci, sprawdzenia połączenia sieciowego, sprawdzenia połączenia WiFi oraz pobierania danych z internetu. Odwiedzając stronę producenta z wyjaśnieniami potrzeby zastosowania tych właśnie zezwoleń, praktycznie wszędzie odnajdziemy wiele mówiący opis „jak wyżej”.
Nie ma wyboru
Często deweloperzy nie mają po prostu wyboru przy przyznawaniu uprawnień i muszą zdecydować się na funkcje, które tylko w niewielkim procencie są potrzebne ich programom. Chociażby wspomniane wcześniej „RECORD_AUDIO”, gdzie potrzebna była po prostu opcja aktywacji mikrofonu, czy np. opcje związane z odczytywaniem stanu i informacji o telefonie, wymagane przez dostawców reklam, kiedy decydujemy się na wprowadzenie do swojego projektu ich gotowych rozwiązań.
Nic więc dziwnego, że coraz więcej firm i deweloperów decyduje się na swoich stronach lub bezpośrednio w opisie programu/gry w Google Play zamieścić pełną listę wymaganych uprawnień i szczegółowo wyjaśnić, do czego są one potrzebne i dlaczego bez nich aplikacja nie byłaby w stanie działać. Czasem niestety – w myśl zasady „tylko winny się tłumaczy - efekt jest nieco inny od zamierzonego. W deklaracje „Tak, mamy dostęp do wszystkich waszych kontaktów i połączenie z internetem, więc teoretycznie możemy z nimi zrobić cokolwiek, ale naprawdę nic takiego nie zrobimy. Obiecujemy”, można wierzyć przeważnie w przypadku bardziej zaufanych firm. Co mają zrobić jednak mniejsze firmy lub samodzielni programiści, którzy dopiero pracują na zdobycie zaufania klientów?
Z drugiej strony, częściowo pozbawieni wyboru są użytkownicy. O ile nie zdecydują się na instalację dodatkowych aplikacji, albo nie posiadają Androida 4.3 lub nowszego i nie odblokują App Ops, wszystko na co zgodzą się podczas instalacji i pierwszego uruchomienia, będzie ich obowiązywać do momentu usunięcia programu z pamięci. Nawet w przypadku, kiedy sami autorzy – tak jak chociażby w przypadku Pocketa – chcieliby niektóre wymagania traktować opcjonalnie.
Uzasadniona troska
Nie wszyscy twórcy aplikacji mają jednak dobre intencje i nie na pierwszym miejscu stoi u nich dobro użytkownika. Część pozornie niegroźnych i niezbędnych aplikacji pozwoleń może doprowadzić do wycieku istotnych informacji z naszego telefonu. Ciekawy przykład podaje tutaj Damian Piwowarski – nowa klawiatura ekranowa może wymagać m.in. dwóch pozwoleń – połączenia z internetem oraz zapisywanie danych w pamięci telefonu. Z jednej strony mogą być one wykorzystywane do tworzenia pliku kopii zapasowej ustawień i przesyłania ich na serwer, aby potem z łatwością przywrócić je po zmianie telefonu, a z drugiej strony może zapisywać wszystko, co wpisujemy na klawiaturze i przesyłać to do producenta w jemu tylko wiadomym celu. Jeszcze inne przykłady podaje Maciej Wilczyński – chociażby uprawnienie GET_ACCOUNTS może ułatwić logowanie za pomocą skonfigurowanych wcześniej w urządzeniu kont (np. konta głównego Google), podczas gdy z drugiej strony może być wykorzystane do zapisania naszych adresów email i przesłania ich na serwer twórcy programu. Krótkie poszukiwania w sieci pokazują, że w niektórych przypadkach nawet autorzy oprogramowania mieli wątpliwości co do tego, czy użytkowników nie zirytuje lub zaniepokoi dodanie tego wymogu.
I tak właśnie powstaje większość typowych „wirusów” na Androida – wykorzystując podstawowe i teoretycznie proste pozwolenia, umiejętnie łącząc je w funkcjonalne dla wybranego złośliwego działania zestawy, a następnie bezlitośnie wykorzystując.
To wszystko były jednak przykłady najprostszych, w miarę nieszkodliwych akcji podejmowanych przez programy, którym nadamy zbyt szerokie uprawnienia. W rzeczywistości jednak osoby klikające bez zastanowienia przy wszystkich uprawnieniach po instalacji aplikacji narażają się nie tylko na to, że ktoś pozna ich adresy email czy skopiuje książkę adresową.
Nie pomaga tutaj także Google Play – weryfikacja, choć lepsza niż jeszcze kilka czy kilkanaście miesięcy temu – w dalszym ciągu jest bardzo, bardzo daleka od ideału i nie ma nic dziwnego, że raz na jakiś czas słyszy się o szkodliwym oprogramowaniu odnalezionym właśnie w sklepie dla Androida. Ich twórcy stosują także banalnie proste, ale skuteczne metody - Przemysław Baraniak wspomina chociażby przypadkach podszywania się autorów złośliwych aplikacji pod produkcje bardziej znanych marek. Coś takiego mogliśmy obserwować chociażby w przypadku niedawnej premiery BBM – jeszcze zanim program ostatecznie zawitał w GP, sklep został niemal zalany przez jego „podróbki”, które pobrało łącznie kilkanaście lub nawet kilkadziesiąt tysięcy osób, w przekonaniu, że jest to właśnie ten komunikator, którego potrzebują. Co faktycznie pobrali na swoje telefony? Lepiej nie wiedzieć.
Niepokojące są także niektóre uprawnienia, które otrzymują producenci sprzętu – w najbardziej ekstremalnych przypadkach, mogą zainstalować zdalnie dowolną aplikację, po czy, po pewnym czasie, również bez naszej wiedzy ją usunąć. Oczywiście szanse na to, że najbardziej znane marki na rynku wywiną nam właśnie taki numer są niezbyt wielkie, ale świadomość mimo wszystko pozostaje.
Czy da się to naprawić?
Ocena systemu uprawnień wydana przez deweloperów, z którymi rozmawialiśmy, jest dość jednoznaczna. Pomimo bardzo dobrych chęci ze strony Google, wprowadzania licznych zmian i prób stworzenia dość rygorystycznego, a jednocześnie przyjaznego dla użytkownika rozwiązania, finalny efekt jest w najlepszym przypadku średni. Zezwolenia przyznawane aplikacjom są raczej jedynie wskazówką co do tego, czego powinniśmy się potencjalnie obawiać, jeśli nie mamy pełnego zaufania do ich autora. Część systemu jest także niekonsekwentna – jesteśmy ostrzegani przy usługach mogących generować dodatkowe koszty, ale już przy również szkodliwych potencjalnie nadużyciach (np. przy nagrywaniu dźwięków czy odczytywaniu kontaktów) takiego powiadomienia brak.
I choć można być zgodnym co do tego, że nie istnieje idealny system uprawnień pozwalający na całkowitą ochronę danych, to zdaniem deweloperów ten z Androida na tle iOS czy Windows Phone prezentuje się raczej przeciętnie. Zarówno w iOS, jak i Windows Phone uprawnienia wyświetlane są na podstawie automatycznej analizy kodu. Użytkownikowi z kolei pokazywane są w bardzo prosty sposób (najczęściej używając jednego słowa, np. "Mikrofon"). Jak często słyszy się o nadużyciach na tych dwóch platformach? Prawie wcale. Paranoiczne podejście Androida wcale nie oznacza większego bezpieczeństwa – w ten sposób różnice pomiędzy tymi platformami opisuje Maciej Wilczyński, którego zdaniem jedynym sposobem na rozwiązanie problemu z uprawnieniami na Androidzie jest… usunięcie tego systemu (uprawnień, nie Androida) i zastąpienie go innym.
Pomoże tylko zdrowy rozsądek
Nie oznacza to jednak, że Google nie próbuje walczyć ze słabszymi stronami swojego OS i nie mogą tego próbować też na własną rękę użytkownicy. Od Androida 4.3, choć nie do końca oficjalnie, mogą oni korzystać chociażby ze wspomnianego już App Ops i wyłączać uprawnienia, które ich zdaniem nie są potrzebne aplikacji do działania lub nie czują się z nimi komfortowo. Do tego dochodzi także kilka programów od niezależnych producentów (jak np. XPrivacy), które zapewnią nam podobną funkcjonalność.
Nadal jednak tym, co da nam największe szanse na ochronę przed utratą danych czy jeszcze gorszymi wydarzeniami, jest po prostu… zdrowy rozsądek, którego nie zastąpi żadna aplikacja. Sprawdzenie informacji na temat producenta i programu/gry w sieci, poszukanie opinii, przeczytanie komentarzy, zapoznanie się z polityką prywatności i ewentualnym regulaminem na stronie dewelopera, odszukanie wyjaśnień do czego potrzebne są dane zezwolenia i kontakt z programistą w przypadku jakichkolwiek wątpliwości – trzymając się tych zasad nie zapełnimy wprawdzie pamięci naszego telefonu aplikacjami w jeden wieczór, ale z całą pewnością będziemy mogli spać spokojnie.
Nie warto jednak popadać przy tym w paranoję i krzyczeć na lewo i prawo, że twórca budzika, który domaga się dostępu do naszej karty pamięci jest złodziejem i na pewno planuje wyprowadzić na swój własny serwer wszystkie swoje dane. Sprawdźmy czy te uprawnienia są mu naprawdę potrzebne i ewentualnie dopiero potem ogłośmy całemu światu, że jest tak, a nie inaczej. Jeśli pomylimy się w naszym osądzie, możemy przyczynić się do naprawdę sporych kłopotów, a nasze sprostowanie (o ile się na nie zdecydujemy) niekoniecznie trafi do wszystkich tych, których wcześniej przestraszyliśmy.
I przy tym wszystkim miejmy świadomość, że niezależnie od tego co zrobimy, nasze dane i tak nie będą bezpieczne, niezależnie od telefonu czy systemu. Zawsze, jeśli komuś będzie wystarczająco zależało, znajdzie się sposób na dostęp do przechowywanych przez nas informacji. Najlepszym rozwiązaniem, które usłyszeliśmy w tej kwestii jest po prostu nie trzymanie naprawdę wrażliwych i wartościowych danych na telefonie…
Zdjęcie Checked blue pad, silver pen and brand new mobile phone pochodzi z serwisu Shutterstock.